{"version":3,"sources":["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/lodash/head.js","webpack:////build/source/node_modules/@gitlab/ui/dist/utils/number_utils.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_term.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/shared_components/clear_icon_button/clear_icon_button.js","webpack:////build/source/node_modules/lodash/clamp.js","webpack:///./ci/pipeline_editor/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/utils.js","webpack:////build/source/node_modules/lodash/isNil.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_suggestion_list.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_token_segment.js","webpack:///./vue_shared/mixins/timeago.js","webpack:////build/source/node_modules/lodash/_baseClamp.js","webpack:///./ci/common/pipelines_table.vue","webpack:///./ci/pipelines_page/components/failure_widget/failed_job_details.vue","webpack:///./ci/pipelines_page/components/failure_widget/failed_job_details.vue?31be","webpack:///ci/pipelines_page/components/failure_widget/failed_job_details.vue","webpack:///./ci/pipelines_page/components/failure_widget/failed_job_details.vue?d988","webpack:///./ci/pipelines_page/components/failure_widget/constants.js","webpack:///ci/pipelines_page/components/failure_widget/failed_jobs_list.vue","webpack:///./ci/pipelines_page/components/failure_widget/failed_jobs_list.vue?9c11","webpack:///./ci/pipelines_page/components/failure_widget/utils.js","webpack:///./ci/pipelines_page/components/failure_widget/failed_jobs_list.vue?cb03","webpack:///./ci/pipelines_page/components/failure_widget/failed_jobs_list.vue","webpack:///./ci/pipelines_page/components/failure_widget/pipeline_failed_jobs_widget.vue?0d2e","webpack:///ci/pipelines_page/components/failure_widget/pipeline_failed_jobs_widget.vue","webpack:///./ci/pipelines_page/components/failure_widget/pipeline_failed_jobs_widget.vue?68a4","webpack:///./ci/pipelines_page/components/failure_widget/pipeline_failed_jobs_widget.vue","webpack:///ci/pipelines_page/components/pipeline_multi_actions.vue","webpack:///./ci/pipelines_page/components/pipeline_multi_actions.vue?623a","webpack:///./ci/pipelines_page/components/pipeline_multi_actions.vue?1722","webpack:///./ci/pipelines_page/components/pipeline_multi_actions.vue","webpack:///./ci/pipelines_page/components/pipelines_manual_actions.vue?d4f1","webpack:///ci/pipelines_page/components/pipelines_manual_actions.vue","webpack:///./ci/pipelines_page/components/pipelines_manual_actions.vue?785f","webpack:///./ci/pipelines_page/components/pipelines_manual_actions.vue","webpack:///./ci/pipelines_page/components/pipeline_stop_modal.vue?db3f","webpack:///ci/pipelines_page/components/pipeline_stop_modal.vue","webpack:///./ci/pipelines_page/components/pipeline_stop_modal.vue?4659","webpack:///./ci/pipelines_page/components/pipeline_stop_modal.vue","webpack:///./ci/pipelines_page/components/pipeline_operations.vue?848c","webpack:///ci/pipelines_page/components/pipeline_operations.vue","webpack:///./ci/pipelines_page/components/pipeline_operations.vue?6e64","webpack:///./ci/pipelines_page/components/pipeline_operations.vue","webpack:///./ci/pipelines_page/components/pipeline_triggerer.vue?a471","webpack:///ci/pipelines_page/components/pipeline_triggerer.vue","webpack:///./ci/pipelines_page/components/pipeline_triggerer.vue?c90f","webpack:///./ci/pipelines_page/components/pipeline_triggerer.vue","webpack:///./ci/pipelines_page/components/pipeline_labels.vue?3264","webpack:///ci/pipelines_page/components/pipeline_labels.vue","webpack:///./ci/pipelines_page/components/pipeline_labels.vue?f32e","webpack:///./ci/pipelines_page/components/pipeline_labels.vue","webpack:///./ci/pipelines_page/components/pipeline_url.vue?7fa3","webpack:///ci/pipelines_page/components/pipeline_url.vue","webpack:///./ci/pipelines_page/components/pipeline_url.vue?f29a","webpack:///./ci/pipelines_page/components/pipeline_url.vue","webpack:///./ci/pipelines_page/components/time_ago.vue?4957","webpack:///ci/pipelines_page/components/time_ago.vue","webpack:///./ci/pipelines_page/components/time_ago.vue?f528","webpack:///./ci/pipelines_page/components/time_ago.vue","webpack:///./ci/pipelines_page/components/pipeline_status_badge.vue?ebf1","webpack:///ci/pipelines_page/components/pipeline_status_badge.vue","webpack:///./ci/pipelines_page/components/pipeline_status_badge.vue?8e8b","webpack:///./ci/pipelines_page/components/pipeline_status_badge.vue","webpack:///ci/common/pipelines_table.vue","webpack:///./ci/common/pipelines_table.vue?8684","webpack:///./ci/common/pipelines_table.vue?f0ab","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:////build/source/node_modules/d3-path/src/index.js","webpack:///./ci/jobs_page/graphql/fragments/job.fragment.graphql","webpack:///./helpers/event_hub_factory.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/utils.js","webpack:////build/source/node_modules/d3-selection/src/matcher.js","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/scorer.js","webpack:///./ci/pipeline_details/stores/pipelines_store.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js","webpack:////build/source/node_modules/d3-selection/src/selector.js","webpack:///./ci/pipelines_page/graphql/queries/get_pipeline_actions.query.graphql","webpack:///./issues/list/queries/set_sort_preference.mutation.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_utils.js","webpack:///../images/no_avatar.png","webpack:////build/source/node_modules/d3-selection/src/selection/style.js","webpack:///./ci/pipelines_page/services/pipelines_service.js","webpack:///./ci/pipelines_page/graphql/queries/get_pipeline_failed_jobs.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/directives/outside/outside.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:////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:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_suggestion.js","webpack:////build/source/node_modules/d3-path/src/path.js","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/fuzzaldrin.js","webpack:///./vue_shared/components/pagination/table_pagination.vue","webpack:///./vue_shared/components/pagination/table_pagination.vue?cb6b","webpack:///vue_shared/components/pagination/table_pagination.vue","webpack:///./vue_shared/components/pagination/table_pagination.vue?217e","webpack:////build/source/node_modules/lodash/_baseMap.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/components/base/filtered_search/filtered_search_token.js","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:///./vue_shared/components/gl_countdown.vue","webpack:///./vue_shared/components/gl_countdown.vue?1908","webpack:///vue_shared/components/gl_countdown.vue","webpack:///./vue_shared/components/gl_countdown.vue?3137","webpack:///./vue_shared/components/filtered_search_bar/constants.js","webpack:////build/source/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js","webpack:////build/source/node_modules/@floating-ui/utils/dist/floating-ui.utils.esm.js","webpack:///./vue_shared/components/dismissible_alert.vue?5086","webpack:///vue_shared/components/dismissible_alert.vue","webpack:///./vue_shared/components/dismissible_alert.vue?9f2a","webpack:///./vue_shared/components/dismissible_alert.vue","webpack:///./vue_alerts.js","webpack:///./ci/merge_requests/graphql/mutations/retry_mr_failed_job.mutation.graphql","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:///./ci/pipelines_page/constants.js","webpack:////build/source/node_modules/core-js/internals/regexp-flags.js","webpack:////build/source/node_modules/lodash/first.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:///./ci/pipelines_page/graphql/queries/get_pipeline_failed_jobs_count.query.graphql","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/query.js","webpack:////build/source/node_modules/d3-selection/src/namespaces.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:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js","webpack:///./vue_shared/components/crud_component.vue","webpack:///./vue_shared/components/crud_component.vue?0a0d","webpack:///vue_shared/components/crud_component.vue","webpack:///./vue_shared/components/crud_component.vue?18b8","webpack:////build/source/node_modules/lodash/last.js","webpack:///./lib/utils/poll.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/search_box_by_type/search_box_by_type.js","webpack:////build/source/node_modules/lodash/map.js","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/pathScorer.js","webpack:////build/source/node_modules/d3-selection/src/window.js","webpack:////build/source/node_modules/core-js/modules/es.regexp.flags.js","webpack:///./ci/pipeline_details/graph/constants.js","webpack:////build/source/node_modules/lodash/cloneDeep.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/avatar_link/avatar_link.js","webpack:////build/source/ee/app/assets/javascripts/ci/job_details/components/root_cause_analysis_button.vue","webpack:////build/source/ee/app/assets/javascripts/ci/job_details/components/root_cause_analysis_button.vue?82b2","webpack:///../../../ee/app/assets/javascripts/ci/job_details/components/root_cause_analysis_button.vue","webpack:////build/source/ee/app/assets/javascripts/ci/job_details/components/root_cause_analysis_button.vue?4b80","webpack:////build/source/node_modules/portal-vue/dist/portal-vue.common.js","webpack:///./ci/utils.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/constants.js","webpack:///./ci/pipeline_details/mixins/pipelines_mixin.js","webpack:////build/source/node_modules/d3-selection/src/select.js","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/matcher.js","webpack:////build/source/node_modules/d3-selection/src/selectorAll.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/search_box_by_click/search_box_by_click.js","webpack:////build/source/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","webpack:///./ci/jobs_page/graphql/mutations/job_play.mutation.graphql","webpack:///./ci/event_hub.js","webpack:////build/source/node_modules/d3-selection/src/selection/on.js","webpack:////build/source/node_modules/@gitlab/svgs/dist/illustrations/empty-state/empty-job-failed-md.svg","webpack:///ci/pipelines_page/components/empty_state/ci_cards.vue","webpack:///./ci/pipelines_page/components/empty_state/ci_cards.vue?3450","webpack:///./ci/pipelines_page/components/empty_state/ci_cards.vue?c751","webpack:///./ci/pipelines_page/components/empty_state/ci_cards.vue","webpack:///./ci/pipelines_page/components/empty_state/ci_templates.vue?6188","webpack:///ci/pipelines_page/components/empty_state/ci_templates.vue","webpack:///./ci/pipelines_page/components/empty_state/ci_templates.vue?5e7e","webpack:///./ci/pipelines_page/components/empty_state/ci_templates.vue","webpack:///./ci/pipelines_page/components/empty_state/pipelines_ci_templates.vue?5bc5","webpack:///ci/pipelines_page/components/empty_state/pipelines_ci_templates.vue","webpack:///./ci/pipelines_page/components/empty_state/pipelines_ci_templates.vue?b283","webpack:///./ci/pipelines_page/components/empty_state/pipelines_ci_templates.vue","webpack:///./ci/pipelines_page/components/empty_state/no_ci_empty_state.vue?2267","webpack:///ci/pipelines_page/components/empty_state/no_ci_empty_state.vue","webpack:///./ci/pipelines_page/components/empty_state/no_ci_empty_state.vue?5e1f","webpack:///./ci/pipelines_page/components/empty_state/no_ci_empty_state.vue","webpack:///./ci/pipelines_page/components/nav_controls.vue?aed4","webpack:///ci/pipelines_page/components/nav_controls.vue","webpack:///./ci/pipelines_page/components/nav_controls.vue?d276","webpack:///./ci/pipelines_page/components/nav_controls.vue","webpack:///./ci/pipelines_page/tokens/pipeline_branch_name_token.vue?13b2","webpack:///ci/pipelines_page/tokens/pipeline_branch_name_token.vue","webpack:///./ci/pipelines_page/tokens/pipeline_branch_name_token.vue?9bc7","webpack:///./ci/pipelines_page/tokens/pipeline_branch_name_token.vue","webpack:///./ci/pipelines_page/tokens/constants.js","webpack:////build/source/ee/app/assets/javascripts/ci/pipelines_page/tokens/constants.js","webpack:///ci/pipelines_page/tokens/pipeline_source_token.vue","webpack:///./ci/pipelines_page/tokens/pipeline_source_token.vue?f45a","webpack:///./ci/pipelines_page/tokens/pipeline_source_token.vue?e6c5","webpack:///./ci/pipelines_page/tokens/pipeline_source_token.vue","webpack:///./ci/pipelines_page/tokens/pipeline_status_token.vue?c6f0","webpack:///ci/pipelines_page/tokens/pipeline_status_token.vue","webpack:///./ci/pipelines_page/tokens/pipeline_status_token.vue?12fc","webpack:///./ci/pipelines_page/tokens/pipeline_status_token.vue","webpack:///./ci/pipelines_page/tokens/pipeline_tag_name_token.vue?f3bc","webpack:///ci/pipelines_page/tokens/pipeline_tag_name_token.vue","webpack:///./ci/pipelines_page/tokens/pipeline_tag_name_token.vue?40e1","webpack:///./ci/pipelines_page/tokens/pipeline_tag_name_token.vue","webpack:///./ci/pipelines_page/tokens/pipeline_trigger_author_token.vue?13ad","webpack:///ci/pipelines_page/tokens/pipeline_trigger_author_token.vue","webpack:///./ci/pipelines_page/tokens/pipeline_trigger_author_token.vue?f2cd","webpack:///./ci/pipelines_page/tokens/pipeline_trigger_author_token.vue","webpack:///./ci/pipelines_page/components/pipelines_filtered_search.vue?fcb1","webpack:///ci/pipelines_page/components/pipelines_filtered_search.vue","webpack:///./ci/pipelines_page/components/pipelines_filtered_search.vue?96c0","webpack:///./ci/pipelines_page/components/pipelines_filtered_search.vue","webpack:///./ci/pipelines_page/pipelines.vue?0b58","webpack:///ci/pipelines_page/pipelines.vue","webpack:///./ci/pipelines_page/pipelines.vue?cb54","webpack:///./ci/pipelines_page/pipelines.vue","webpack:///./ci/pipeline_details/pipelines_index.js","webpack:///./pages/projects/pipelines/index/index.js","webpack:////build/source/ee/app/assets/javascripts/pages/projects/pipelines/index/index.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/toaster.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/toast.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/index.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/toast/toast.js","webpack:////build/source/node_modules/fuzzaldrin-plus/lib/filter.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_item.js"],"names":["name","components","GlTooltip","GlAvatar","props","lazy","type","Boolean","required","default","imgSrc","String","defaultAvatarUrl","cssClasses","imgAlt","__","size","Number","Object","tooltipText","tooltipPlacement","pseudo","computed","sanitizedSource","baseSrc","indexOf","includes","maximumSize","_isObject","Math","max","values","resultantSrcAttribute","placeholderImage","component","_vm","this","_c","_self","ref","staticClass","class","style","backgroundImage","attrs","undefined","_v","$scopedSlots","$refs","userAvatar","_t","_s","_e","module","exports","array","length","addition","a","b","sum","_len","arguments","numbers","Array","_key","reduce","average","modulo","n","divisor","result","engineeringNotation","value","precision","invalidValues","NaN","Infinity","num","toString","allYourBase","0","3","6","9","12","15","18","21","24","exponentialNotation","toExponential","power","split","map","scaledPower","floor","scaledMantissa","toFixed","replace","_","fractionalDigits","formatNumberToLocale","options","locales","isNaN","Intl","NumberFormat","format","toFloat","defaultValue","float","parseFloat","__vue_script__","GlFilteredSearchTokenSegment","GlToken","inject","inheritAttrs","availableTokens","active","data","placeholder","searchInputAttributes","isLastToken","currentValue","cursorPosition","validator","searchTextOptionLabel","title","viewOnly","termsAsTokens","tokens","filter","token","push","internalValue","$emit","mousedown","stopMousedownOnCloseButton","close","destroyByClose","methods","intent","event","target","closest","render","_h","$createElement","suggestedTokens","on","$event","onComplete","onBackspace","scopedSlots","_u","key","fn","label","_g","eventListeners","_b","model","callback","$$v","expression","staticRenderFns","portalUuid","initialState","GlSearchBoxByClick","GlIcon","PortalTarget","directives","portalName","alignSuggestions","suggestionsListClass","__v_raw","isOk","isArray","every","_ref","__v_skip","console","warn","clearButtonTitle","historyItems","showFriendlyText","searchButtonAttributes","showSearchButton","activeTokenIdx","suggestionsStyle","intendedCursorPosition","lastTokenIdx","hasValue","disabled","unique","find","t","watch","isLastTokenEmpty","deep","immediate","newValue","oldValue","applyNewValue","idx","_this$getTokenEntry","getTokenEntry","offsetRef","getBoundingClientRect","left","offsetMenu","$el","transform","tokenIdx","isLastTokenActive","activeToken","splice","$set","newStrings","newTokens","submit","slotScope","_l","getTokenComponent","id","refInFor","tag","getTokenClassList","currentAvailableTokens","termPlaceholder","appliedTokens","activate","deactivate","destroyToken","replaceToken","completeToken","createTokens","activatePreviousToken","activateNextToken","proxy","$attrs","GlButton","tooltipContainer","HTMLElement","__vue_component__","rawName","container","modifiers","$listeners","baseClamp","toNumber","number","lower","upper","EDITOR_APP_DRAWER_HELP","EDITOR_APP_DRAWER_JOB_ASSISTANT","EDITOR_APP_DRAWER_AI_ASSISTANT","EDITOR_APP_DRAWER_NONE","EDITOR_APP_STATUS_EMPTY","EDITOR_APP_STATUS_INVALID","EDITOR_APP_STATUS_LINT_UNAVAILABLE","EDITOR_APP_STATUS_LOADING","EDITOR_APP_STATUS_VALID","EDITOR_APP_VALID_STATUSES","COMMIT_FAILURE","COMMIT_SUCCESS","COMMIT_SUCCESS_WITH_REDIRECT","DEFAULT_FAILURE","DEFAULT_SUCCESS","LOAD_FAILURE_UNKNOWN","PIPELINE_FAILURE","CREATE_TAB","MERGED_TAB","VALIDATE_TAB","VISUALIZE_TAB","TABS_INDEX","TAB_QUERY_PARAM","COMMIT_ACTION_CREATE","COMMIT_ACTION_UPDATE","BRANCH_PAGINATION_LIMIT","BRANCH_SEARCH_DEBOUNCE","SOURCE_EDITOR_DEBOUNCE","FILE_TREE_DISPLAY_KEY","FILE_TREE_POPOVER_DISMISSED_KEY","FILE_TREE_TIP_DISMISSED_KEY","VALIDATE_TAB_BADGE_DISMISSED_KEY","STARTER_TEMPLATE_NAME","CI_EXAMPLES_LINK","CI_HELP_LINK","CI_NEEDS_LINK","CI_YAML_LINK","GITLAB_UNIVERSITY_LINK","pipelineEditorTrackingOptions","actions","browseCatalog","browseTemplates","closeHelpDrawer","commitCiConfig","helpDrawerLinks","openHelpDrawer","resimulatePipeline","simulatePipeline","VALIDATE_TAB_FEEDBACK_URL","COMMIT_SHA_POLL_INTERVAL","PIPELINE_POLL_INTERVAL","isOption","item","isGroup","hasNoDuplicates","Set","flattenedOptions","items","flatMap","itemsValidator","isAllOptionsOrAllGroups","hasUniqueValues","_ref2","text","hasUniqueGroups","filteredSearchSuggestionListInstance","initialValue","activeIdx","registeredItems","findIndex","valuesMatch","initialActiveIdx","initialActiveItem","firstValue","secondValue","toLowerCase","stepItem","direction","endIdx","index","activeItem","listClasses","isVNodeEmpty","vnode","_vnode$type2","_vnode$type2$toString","call","isVue3Fragment","children","_vnode$type","_vnode$type$toString","isVue3Comment","Portal","GlFilteredSearchSuggestionList","GlFilteredSearchSuggestion","isTerm","multiSelect","optionTextField","customInputKeydownHandler","Function","fallbackValue","some","_this$options","o","inputValue","nonMultipleValue","matchingOption","_this$options2","slot","vnodes","isSlotNotEmpty","$slots","suggestions","_this$options$","option","getMatchingOptionForInputValue","loose","hasTermSuggestion","defaultOption","op","hasUnclosedQuote","firstWord","otherWords","w","arr","e","button","preventDefault","_this$options3","$nextTick","input","focus","scrollIntoView","block","inline","setSelectionRange","_this$matchingOption","suggestedValue","formattedSuggestedValue","getValue","handlers","ArrowLeft","selectionStart","ArrowRight","selectionEnd","Backspace","Enter","applySuggestion","Escape","suggestionsHandlers","ArrowDown","nextItem","Down","ArrowUp","prevItem","Up","hasOptionsOrSuggestions","assign","keys","v","containerAttributes","emitIfInactive","submitValue","domProps","_i","handleInputKeydown","handleBlur","$$a","$$el","$$c","checked","$$i","concat","slice","_q","composing","_uid","defaultSuggestedValue","icon","timeFormatted","time","getTimeago","newDate","timeagoLanguageCode","tooltipTitle","localeDateFormat","asDateTimeFull","CiIcon","GlLink","RootCauseAnalysisButton","GlTooltipDirective","SafeHtml","job","canTroubleshootJob","isLoadingAction","canRetryJob","retryable","userPermissions","updateBuild","isBridgeJob","detailedStatus","_this$job","detailsPath","_this$detailedStatus","statusGroup","_this$detailedStatus2","group","kind","BRIDGE_KIND","parsedJobId","getIdFromGraphQLId","tooltipErrorText","$options","i18n","cannotRetryTrigger","cannotRetry","sprintf","jobActionTooltipText","jobName","isBuildJob","BUILD_KIND","jobRetry","errors","$apollo","mutate","mutation","RetryMrFailedJobMutation","variables","Error","error","createAlert","message","retryError","cannotReadBuild","s__","retry","stage","retryBtn","stopPropagation","retryJob","apply","JOB_ID_HEADER","JOB_NAME_HEADER","STAGE_HEADER","GlAlert","GlLoadingIcon","GlSprintf","FailedJobDetails","isMaximumJobLimitReached","pipelineIid","pipelinePath","projectPath","failedJobs","isLoadingMore","apollo","context","getQueryHeaders","graphqlResourceEtag","query","getPipelineFailedJobs","pollInterval","fullPath","update","_data$project","jobs","sort","_job$detailedStatus","isFailedJob","sortJobsByStatus","project","pipeline","nodes","_data$project2","troubleshootJobWithAi","fetchError","variant","graphqlEtagPipelinePath","graphqlPath","isInitialLoading","isLoading","queries","loading","mounted","toggleQueryPollingByVisibility","refetchJobs","$toast","show","retriedJobsSuccess","refetch","columns","maximumJobLimitAlert","content","col","GlBadge","FailedJobsList","CrudComponent","failedJobsCount","getPipelineFailedJobsCount","_project$pipeline","_project$pipeline2","isPipelineActive","count","isExpanded","bodyClasses","failedJobsCountBadge","iconName","startPolling","stopPolling","beforeDestroy","toggleWidget","ariaControlsId","refetchCount","searchPlaceholder","downloadArtifacts","artifactsFetchErrorMessage","artifactsFetchWarningMessage","emptyArtifactsMessage","GlDisclosureDropdown","GlSearchBoxByType","mixins","Tracking","mixin","artifactsEndpoint","artifactsEndpointPlaceholder","pipelineId","artifacts","hasError","searchQuery","isNewPipeline","hasArtifacts","filteredArtifacts","fuzzaldrinPlus","path","href","extraAttrs","download","rel","fetchArtifacts","_this","track","TRACKING_CATEGORIES","table","oldArtifacts","endpoint","axios","get","then","catch","finally","onDisclosureDropdownShown","onDisclosureDropdownHidden","trim","GlCountdown","GlDisclosureDropdownItem","iid","getPipelineActionsQuery","limit","manualActionsLimit","skip","hasDropdownBeenShown","isDropdownVisible","isActionsLoading","isDropdownLimitReached","action","scheduledAt","confirmationMessage","confirmAction","confirmJobConfirmationMessage","jobPlayMutation","fetchActions","trackClick","hideAction","jobItem","canPlayJob","onClickAction","GlModal","showConfirmationModal","hasRef","_isEmpty","modalTitle","modalText","primaryProps","attributes","showModal","set","emitSubmit","cancelProps","details","status","commit","commit_path","short_id","BUTTON_TOOLTIP_RETRY","BUTTON_TOOLTIP_CANCEL","PipelineMultiActions","PipelinesManualActions","PipelineStopModal","isCanceling","isRetrying","pipelineToCancel","hasActions","_this$pipeline","_this$pipeline2","has_manual_actions","has_scheduled_actions","onCloseModal","onConfirmCancelPipeline","handleCancelClick","handleRetryClick","flags","cancelable","GlAvatarLink","user","avatar_url","GlPopover","pipelineSchedulesPath","isScheduled","source","SCHEDULE_ORIGIN","isTriggered","TRIGGER_ORIGIN","isForked","forked","showMergedResultsBadge","merged_result_pipeline","merge_train_pipeline","autoDevopsTagId","autoDevopsHelpPath","helpPagePath","isApi","API_ORIGIN","latest","yaml_errors","failure_reason","auto_devops","stuck","detached_merge_request_pipeline","PipelineLabels","TooltipOnTruncate","UserAvatarLink","pipelineIdType","PIPELINE_ID_KEY","PIPELINE_IID_KEY","refClass","mergeRequestRef","merge_request","commitRef","commitTag","_this$commitRef","commitUrl","_this$pipeline3","commitShortSha","_this$pipeline4","refUrl","_this$commitRef2","_this$commitRef3","ref_url","_this$mergeRequestRef","_this$commitRef4","commitAuthor","_this$pipeline5","commitAuthorInformation","pipelineCommit","pipelineCommitAuthor","author","author_gravatar_url","author_email","username","author_name","commitIcon","ICONS","TAG","MR","BRANCH","commitIconTooltipTitle","commitTitle","_this$pipeline6","pipelineIdentifier","pipeline_schedule","pipelineSchedule","link","description","timeagoMixin","fontSize","duration","durationFormatted","formatTime","finishedTime","finished_at","finishedAt","PipelinesTimeago","pipelineStatus","_this$pipeline$detail","cellHeight","GlSkeletonLoader","GlTableLite","PipelineFailedJobsWidget","PipelineMiniGraph","PipelineOperations","PipelineStatusBadge","PipelineTriggerer","PipelineUrl","useFailedJobsWidget","isCreatingPipeline","pipelines","isMobile","GlBreakpointInstance","getBreakpointSize","tableFields","columnClass","tdClass","tdClasses","thAttr","pipelinesWithDetails","p","failed_builds_count","_showDetails","cellWidth","_this$$refs$ref","offsetWidth","displayFailedJobsWidget","getDownstreamPipelines","downstream","triggered","keepLatestDownstreamPipelines","getProjectPath","cleanLeadingSeparator","full_path","getStages","_item$details","stages","onCancelPipeline","onRefreshPipelinesTable","onRetryPipeline","rowClass","setLoaderPosition","trackPipelineMiniGraph","TBODY_TR_ATTR","fields","field","triggered_by","f","compare","d","x","ascending","lo","hi","mid","right","ascendingBisect","bisector","bisectRight","bisect","min","i","valueof","prototype","start","stop","step","ceil","range","e10","sqrt","e5","e2","reverse","ticks","tickIncrement","isFinite","log","LN10","pow","tickStep","step0","abs","step1","LN2","i0","value0","doc","loc","definitionRefs","findOperation","definitions","element","forEach","def","refs","collectFragmentReferences","node","add","selectionSet","selections","selection","variableDefinitions","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","prevRefs","has","childRef","oneQuery","EventHub","constructor","$_all","Map","dispose","clear","$on","handler","$off","newHandlers","delete","$once","wrapHandler","args","isItem","_item$text","itemValidator","hasOnlyListItemsVue2","defaultSlot","tags","vNode","_vNode$componentOptio","componentOptions","isValidSlotTagVue2","hasOnlyListItemsVue3","fragment","_vNode$type","isValidSlotTagVue3","hasOnlyListItems","version","startsWith","matches","selector","AcronymResult","computeScore","emptyAcronymResult","isAcronymFullWord","isMatch","isSeparator","isWordEnd","isWordStart","scoreAcronyms","scoreCharacter","scoreConsecutives","scoreExact","scoreExactMatch","scorePattern","scorePosition","scoreSize","score","string","preparedQuery","string_lw","allowErrors","core_lw","core_up","subject","query_lw","query_up","j","m","qj_lw","qj_up","si","charCodeAt","subject_lw","acro","acro_score","align","csc_diag","csc_row","csc_score","csc_should_rebuild","miss_budget","miss_left","pos","record_miss","score_diag","score_row","score_up","si_lw","sz","charCodes","curr_s","prev_s","len","next_s","c","sc","quality","sameCase","end","bonus","posBonus","startOfWord","k","mi","nj","pos2","fullWord","sepCount","sumPos","nbAcronymInQuery","PipelinesStore","state","pageInfo","isRunningMergeRequestPipeline","storePipelines","isUsingAsyncPipelineCreation","firstPipelineFromTable","firstPipelineFromRequest","created_at","toggleIsRunningPipeline","storeCount","storePagination","pagination","paginationInfo","normalizedHeaders","normalizeHeaders","parseIntPagination","DISCLOSURE_DROPDOWN_ITEM_NAME","DISCLOSURE_DROPDOWN_GROUP_NAME","DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS","top","bottom","DROPDOWN_SELECTOR","ITEM_SELECTOR","events","GL_DROPDOWN_SHOWN","GL_DROPDOWN_HIDDEN","GL_DROPDOWN_BEFORE_CLOSE","GL_DROPDOWN_FOCUS_CONTENT","GlBaseDropdown","GlDisclosureDropdownGroup","toggleText","textSrOnly","category","primary","toggleId","toggleClass","noCaret","placement","toggleAriaLabelledBy","listAriaLabelledBy","dropdownOffset","fluidWidth","autoClose","positioningStrategy","strategy","startOpened","disclosureId","nextFocusedItemIndex","_this$items","toggle","open","baseDropdown","code","elements","getFocusableListItemElements","focusItem","focusNextItem","handleAutoClose","_this$$refs$content","querySelectorAll","from","offset","currentIndex","nextIndex","_elements$index","closeAndFocus","window","requestAnimationFrame","uniqueItemId","GL_DROPDOWN_CONTENTS_CLASS","_d","onShow","onHide","onBeforeClose","onKeydown","disclosureTag","handleAction","groupItem","none","querySelector","TERM_TOKEN_TYPE","INTENT_ACTIVATE_PREVIOUS","TOKEN_CLOSE_SELECTOR","isEmptyTerm","normalizeTokens","assertValidTokens","needDenormalization","stepIndexAndWrap","tokenToOption","optionComponent","tokenIdCounter","getTokenId","tokenId","ensureTokenId","createTerm","denormalizeTokens","inputTokens","trimmedText","strToken","match","termTokenDefinition","splitOnQuotes","str","queue","waitingForMatchingQuote","quoteContent","part","shift","firstPart","secondPart","unshift","wrapTokenInQuotes","quote","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","each","PipelinesService","root","getPipelines","scope","page","CancelToken","queryParams","validateParams","cancelationSource","params","cancelToken","postAction","post","runMRPipeline","projectId","mergeRequestId","Api","postMergeRequestPipeline","callbacks","activeEventTypes","lastMousedown","globalListener","eventTypes","originalEvent","contains","onMousedown","OutsideDirective","bind","el","bindings","_ref3","arg","modifiersList","parseBinding","eventType","document","addEventListener","capture","startListening","unbind","entry","eventTypesToUnbind","removeEventListener","noop","dispatch","test","Dispatch","parseTypenames","typenames","types","typename","T","copy","that","factory","extend","parent","definition","create","Color","reI","reN","reP","reHex","reRgbInteger","RegExp","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","l","exec","parseInt","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","round","h","s","Hsl","hslConvert","hsl2rgb","m1","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","displayable","formatHsl","brighter","darker","linear","gamma","y","nogamma","exponential","constant","color","rgbGamma","rgbSpline","spline","colors","reA","reB","taskHead","taskTail","am","bm","bs","bi","lastIndex","q","one","join","timeout","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","setTimeout","clearNow","Timer","_call","_time","_next","timer","delay","restart","wake","timerFlush","t0","sleep","nap","poke","clearTimeout","clearInterval","setInterval","TypeError","elapsed","emptyOn","emptyTween","schedules","__transition","self","tween","__data__","tick","ease","timing","init","schedule","cssNode","cssRoot","cssView","svgNode","empty","degrees","PI","translateX","translateY","rotate","skewX","scaleX","scaleY","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","scale","interpolateTransformCss","createElement","documentElement","defaultView","appendChild","removeChild","decompose","interpolateTransformSvg","createElementNS","setAttribute","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","space","local","attrConstant","interpolate","value1","string00","interpolate0","string1","string0","getAttribute","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","textContent","textTween","Transition","groups","parents","_groups","_parents","_name","newId","selection_prototype","select","subgroups","subnode","subgroup","selectAll","selectorAll","child","inherit","matcher","merge","groups0","groups1","m0","merges","group0","group1","id0","id1","attr","namespace","styleNull","listener0","remove","styleMaybeRemove","textFunction","textConstant","parentNode","Promise","resolve","reject","cancel","interrupt","defaultTiming","number1","number2","cos","sin","object","property","entries","proto","tree","xm","ym","xp","yp","_root","leaf","x0","_x0","y0","_y0","x1","_x1","y1","_y1","_x","_y","next","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","random","randomUniform","sourceRandomUniform","randomNormal","mu","sigma","sourceRandomNormal","randomLogNormal","normal","exp","sourceRandomLogNormal","randomIrwinHall","sourceRandomIrwinHall","randomBates","irwinHall","sourceRandomBates","randomExponential","lambda","sourceRandomExponential","re","formatSpecifier","specifier","FormatSpecifier","fill","sign","symbol","zero","width","comma","formatDecimalParts","coefficient","prefixExponent","exponent","toLocaleString","toPrecision","formatRounded","toUpperCase","prefixes","locale","grouping","thousands","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","prefix","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","i1","formatTrim","padding","formatPrefix","newInterval","floori","offseti","interval","date","d0","d1","setTime","setMonth","setHours","setFullYear","getFullYear","setDate","getMonth","weekday","getDate","getDay","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","UTC","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","names","formatLookup","parseWeekdayNumberSunday","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","day","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","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","charAt","newParse","week","X","utcFormat","utcParse","formatLocale","utcMonth","utcHour","setUTCMinutes","utcMinute","setUTCSeconds","RedBlackTree","RedBlackNode","C","R","P","N","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","insert","after","grandpa","uncle","sibling","createEdge","edge","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","ax","ay","connectEdge","fm","fb","lx","ly","rx","ry","fx","fy","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","arc","cy","attachCircle","lArc","rArc","lSite","cSite","rSite","bx","by","cx","epsilon2","ha","hc","circle","before","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","invert","location","invertX","invertY","rescaleX","domain","rescaleY","targetDepth","depth","height","justify","sourceLinks","center","targetLinks","ascendingSourceBreadth","ascendingBreadth","ascendingTargetBreadth","defaultId","defaultNodes","graph","defaultLinks","nodeById","computeLinkBreadths","Sankey","py","linkSort","iterations","sankey","computeNodeLinks","computeNodeValues","computeNodeDepths","computeNodeHeights","computeNodeBreadths","fixedValue","current","kx","layer","column","computeNodeLayers","ky","reorderLinks","initializeNodeBreadths","alpha","beta","relaxRightToLeft","relaxLeftToRight","targetTop","reorderNodeLinks","resolveCollisions","sourceTop","resolveCollisionsBottomToTop","resolveCollisionsTopToBottom","nodeId","nodeAlign","nodeSort","nodeWidth","nodePadding","linkSource","linkTarget","curve","buffer","argv","curveHorizontal","moveTo","bezierCurveTo","horizontalSource","horizontalTarget","GlDropdownItem","_this$$refs$item","_this$$refs$item$$el","register","unregister","isActive","nativeOn","emitValue","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","rect","Query","defaultPathSeparator","parseOptions","pathScorer","preparedQueryCache","scorer","process","platform","candidates","usePathScoring","_results","wrap","prepareQuery","useExtensionBonus","pathSeparator","optCharRegEx","GlPagination","change","showPagination","nextPage","previousPage","perPage","total","baseEach","isArrayLike","collection","iteratee","EnterNode","datum","ownerDocument","namespaceURI","_parent","insertBefore","bindIndex","enter","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","classedAdd","list","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","previousSibling","firstChild","creatorInherit","uri","creatorFixed","constantNull","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","dispatchEvent","CustomEvent","createEvent","initEvent","bubbles","detail","dispatchConstant","dispatchFunction","enterGroup","updateGroup","_enter","_exit","sparse","onenter","append","onupdate","onexit","order","compareDocumentPosition","compareNode","sortgroups","sortgroup","classed","html","creator","DEFAULT_OPERATORS","config","multiSelectValues","operator","dataSegmentInputAttributes","activeSegment","tokenValue","operators","_this$tokenValue$data","tokenEmpty","isSegmentActive","segments","SEGMENT_TITLE","SEGMENT_DATA","SEGMENT_OPERATOR","tokenIsActive","activateSegment","segment","newType","newTokenConfig","isCompatible","dataType","evt","potentialValue","activateDataSegment","availableTokensWithSelf","activateNextOperatorSegment","getAdditionalSegmentClasses","handleOperatorKeydown","replaceWithTermIfEmpty","activatePreviousTitleSegment","activateNextDataSegment","operatorDescription","handleComplete","activatePreviousOperatorSegment","listeners","ARROW_DOWN","ARROW_UP","END","ENTER","HOME","SPACE","POSITION_ABSOLUTE","POSITION_FIXED","endDateString","getTime","remainingTime","countdownUpdateIntervalId","updateRemainingTime","remainingMilliseconds","calculateRemainingMilliseconds","DEBOUNCE_DELAY","MAX_RECENT_TOKENS_SIZE","FILTER_NONE","FILTER_ANY","FILTER_CURRENT","FILTER_UPCOMING","FILTER_STARTED","FILTERS_NONE_ANY","OPERATOR_IS","OPERATOR_IS_TEXT","OPERATOR_NOT","OPERATOR_NOT_TEXT","OPERATOR_OR","OPERATOR_OR_TEXT","OPERATOR_AFTER","OPERATOR_AFTER_TEXT","OPERATOR_BEFORE","OPERATOR_BEFORE_TEXT","OPERATORS_IS","OPERATORS_NOT","OPERATORS_OR","OPERATORS_AFTER","OPERATORS_BEFORE","OPERATORS_IS_NOT","OPERATORS_IS_NOT_OR","OPERATORS_AFTER_BEFORE","OPERATORS_TO_GROUP","OPTION_NONE","OPTION_ANY","OPTION_CURRENT","OPTION_STARTED","OPTION_UPCOMING","OPTIONS_NONE_ANY","DEFAULT_MILESTONES","SORT_DIRECTION","descending","FILTERED_SEARCH_TERM","TOKEN_EMPTY_SEARCH_TERM","TOKEN_TITLE_APPROVED_BY","TOKEN_TITLE_MERGE_USER","TOKEN_TITLE_APPROVER","TOKEN_TITLE_ASSIGNEE","TOKEN_TITLE_AUTHOR","TOKEN_TITLE_CONFIDENTIAL","TOKEN_TITLE_CONTACT","TOKEN_TITLE_DRAFT","TOKEN_TITLE_GROUP","TOKEN_TITLE_LABEL","TOKEN_TITLE_PROJECT","TOKEN_TITLE_MILESTONE","TOKEN_TITLE_MY_REACTION","TOKEN_TITLE_ORGANIZATION","TOKEN_TITLE_RELEASE","TOKEN_TITLE_REVIEWER","TOKEN_TITLE_SOURCE_BRANCH","TOKEN_TITLE_STATUS","TOKEN_TITLE_JOBS_RUNNER_TYPE","TOKEN_TITLE_TARGET_BRANCH","TOKEN_TITLE_TYPE","TOKEN_TITLE_VERSION","TOKEN_TITLE_SEARCH_WITHIN","TOKEN_TITLE_CREATED","TOKEN_TITLE_CLOSED","TOKEN_TITLE_DEPLOYED_BEFORE","TOKEN_TITLE_DEPLOYED_AFTER","TOKEN_TITLE_ASSIGNED_SEAT","TOKEN_TITLE_ENVIRONMENT","TOKEN_TYPE_APPROVER","TOKEN_TYPE_APPROVED_BY","TOKEN_TYPE_MERGE_USER","TOKEN_TYPE_ASSIGNEE","TOKEN_TYPE_AUTHOR","TOKEN_TYPE_CONFIDENTIAL","TOKEN_TYPE_CONTACT","TOKEN_TYPE_DRAFT","TOKEN_TYPE_GROUP","TOKEN_TYPE_GROUP_INVITE","TOKEN_TYPE_EPIC","TOKEN_TYPE_ASSIGNED_SEAT","TOKEN_TYPE_PROJECT","TOKEN_TYPE_HEALTH","TOKEN_TYPE_ITERATION","TOKEN_TYPE_LABEL","TOKEN_TYPE_MILESTONE","TOKEN_TYPE_MY_REACTION","TOKEN_TYPE_ORGANIZATION","TOKEN_TYPE_RELEASE","TOKEN_TYPE_REVIEWER","TOKEN_TYPE_SOURCE_BRANCH","TOKEN_TYPE_STATUS","TOKEN_TYPE_JOBS_RUNNER_TYPE","TOKEN_TYPE_TARGET_BRANCH","TOKEN_TYPE_TYPE","TOKEN_TYPE_VERSION","TOKEN_TYPE_WEIGHT","TOKEN_TYPE_SEARCH_WITHIN","TOKEN_TYPE_CREATED","TOKEN_TYPE_CLOSED","TOKEN_TYPE_DEPLOYED_BEFORE","TOKEN_TYPE_DEPLOYED_AFTER","TOKEN_TYPE_ENVIRONMENT","ENTITY_TYPES","USER","AUTHOR","GROUP","PROJECT","getWindow","_node$ownerDocument","getComputedStyle$1","isNode","Node","getNodeName","nodeName","isHTMLElement","isElement","Element","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","safari","isSafari","css","perspective","containerType","backdropFilter","willChange","contain","CSS","supports","isLastTraversableNode","createEmptyCoords","getCssDimensions","hasOffset","offsetHeight","shouldFallback","$","unwrapElement","contextElement","getScale","domElement","noOffsets","getVisualOffsets","isFixed","floatingOffsetParent","_win$visualViewport","_win$visualViewport2","win","visualViewport","offsetLeft","offsetTop","includeScale","isFixedStrategy","offsetParent","clientRect","visualOffsets","offsetWin","currentIFrame","frameElement","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getDocumentElement","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getWindowScrollBarX","getParentNode","assignedSlot","host","getOverflowAncestors","scrollableAncestor","getNearestOverflowAncestor","body","isBody","getClientRectFromClippingAncestor","clippingAncestor","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getTrueOffsetParent","polyfill","getOffsetParent","currentNode","getContainingBlock","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getClippingRect","boundary","rootBoundary","clippingAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","firstClippingAncestor","clippingRect","accRect","convertOffsetParentRelativeRectToViewportRelativeRect","getDimensions","reference","floating","getOffsetParentFn","getDimensionsFn","getClientRects","isRTL","autoUpdate","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","passive","cleanupIo","onMove","timeoutId","io","cleanup","disconnect","refresh","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","prevRefRect","frameLoop","nextRefRect","computePosition","mergedOptions","platformWithCache","ITEM_CLASS","BLink","_this$item","_this$item2","to","isLink","is","click","_item$action","_this$item3","_this$item3$extraAttr","_this$item4","_this$item4$extraAttr","_this$item$wrapperCla","_this$item5","wrapperClass","keydown","isCustomContent","MouseEvent","listIndex","wrapperListeners","itemComponent","componentIndex","sides","alignments","placements","acc","side","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","param","getSide","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getOppositeAxisPlacements","flipAlignment","isStart","lr","rl","tb","bt","getSideList","getPaddingObject","expandPaddingObject","rectToClientRect","isDismissed","dismiss","getCookieExpirationPeriod","expirationPeriod","alertExpirationPeriod","mountVueAlert","dataset","dismissible","parseBoolean","dismissCookieName","dismissCookieExpire","Vue","DismissibleAlert","alertDismissed","setCookie","expires","UserAvatarImage","linkHref","imgCssClasses","imgCssWrapperClasses","imgSize","popoverUserId","popoverUsername","userId","shouldShowUsername","avatarTooltipText","ANY_TRIGGER_AUTHOR","FILTER_PIPELINES_SEARCH_DELAY","CATALOG_TRACKING_LABEL","GITLAB_UNIVERSITY_TRACKING_LABEL","MIGRATE_FROM_JENKINS_TRACKING_LABEL","anObject","hasIndices","global","ignoreCase","multiline","dotAll","unicode","unicodeSets","sticky","GlClearIconButton","prop","focusInput","inputListeners","clearInput","nameId","GROUP_TOP_BORDER_CLASSES","HEADER_ITEMS_BORDER_CLASSES","GlListboxItem","GlListboxGroup","GlListboxSearchInput","GlIntersectionObserver","selected","multiple","headerText","isCheckCentered","searchable","searching","infiniteScroll","totalItems","infiniteScrollLoading","noResultsText","resetButtonLabel","showSelectAllButtonLabel","srOnlyResultsLabel","selectedValues","listboxId","searchStr","topBoundaryVisible","bottomBoundaryVisible","hasItems","listboxTag","_this$flattenedOption","showNoResultsText","showSelectAllButton","toggleClasses","hasSelection","footer","newSelected","observeScroll","_this$scrollObserver","scrollObserver","groupClasses","_this$selectedIndices","focusSearchInput","selectedIndices","isSearchInput","_this$$refs$list","searchBox","isSelected","onMultiSelect","onSingleSelect","selectedValue","searchTerm","_this$scrollObserver2","observer","_entry$target","$__visibilityProp","isIntersecting","topBoundary","bottomBoundary","listboxToggleText","toggleButtonClasses","headerId","onResetButtonClicked","onSelectAllButtonClicked","search","_k","keyCode","listboxClasses","itemTag","hasHeader","isFocused","onSelect","listboxItemMoreItemsAriaAttributes","onIntersectionObserverAppear","hasFooter","coreChars","countDir","getCharCodes","getExtension","opt_char_re","truncatedUpperCase","_arg","_ref1","core","ext","xhtml","svg","xlink","xml","xmlns","GlResizeObserver","GlResizeObserverDirective","truncateTarget","tooltipDisabled","classes","tooltip","updateTooltip","created","updateTooltipDebounced","_debounce","selectTarget","_isFunction","childNodes","hasHorizontalOverflow","onResize","getObserver","$_gl_intersectionHandler","$_gl_intersectionObserver","BORDER_CLASSES","bordered","borderPosition","_this$group","showHeader","borderClass","groupLabeledBy","toggleAriaLabel","isCollapsible","collapsed","anchorId","headerClass","titleClass","bodyClass","persistCollapsedState","isCollapsed","localStorage","getItem","getLocalStorageKeyName","isFormVisible","isContentVisible","toggleIcon","toggleLabel","ariaExpandedAttr","displayedCount","isFormUsedAndVisible","form","newVal","toggleCollapse","setItem","showForm","hideForm","toggleForm","Poll","notificationCallback","intervalHeader","timeoutID","canPoll","checkConditions","response","headers","successCodes","makeRequest","successCallback","makeDelayedRequest","_this2","_this3","resource","method","errorCallback","HTTP_STATUS_ABORTED","enable","GlFormInput","borderless","onInput","focusin","onFocusin","focusout","onFocusout","_this$$refs$input","_this$$refs$clearButt","clearButton","relatedTarget","isInputOrClearButton","inputAttributes","showClearButton","arrayMap","baseIteratee","baseMap","getExtensionScore","scorePath","fullPathScore","basePathScore","basePos","extAdjust","fileLength","lastIndexOf","substr","candidate","startPos","endPos","maxDepth","matched","globalThis","DESCRIPTORS","defineBuiltInAccessor","regExpFlags","fails","RegExpPrototype","INDICES_SUPPORT","O","calls","expected","addGetter","chr","defineProperty","pairs","getOwnPropertyDescriptor","configurable","DOWNSTREAM","MAIN","UPSTREAM","ONE_COL_WIDTH","STAGE_VIEW","LAYER_VIEW","SKIP_RETRY_MODAL_KEY","VIEW_TYPE_KEY","SINGLE_JOB","JOB_DROPDOWN","ACTION_FAILURE","IID_FAILURE","RETRY_ACTION_TITLE","POLL_INTERVAL","baseClone","CLONE_DEEP_FLAG","InternalEvents","jobStatusGroup","jobId","jobGid","isBuild","resourceId","convertToGraphQLId","TYPENAME_CI_BUILD","jobFailed","shouldDisplayButton","trackEvent","callDuo","sendDuoChatCommand","question","ex","_typeof","obj","Symbol","iterator","_toConsumableArray","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","inBrowser","pick","transports","targets","sources","wormhole","trackInstances","transport","passengers","_transport$order","newTransport","freeze","compareFn","$_getTransportIndex","newTransports","force","registerTarget","vm","unregisterTarget","$delete","registerSource","unregisterSource","hasTarget","hasSource","hasContentFor","slim","slotProps","sendUpdate","updated","closer","normalizeSlots","normalizeOwnChildren","slotContent","Tag","firstRender","ownTransports","oldVal","temp","newPassengers","combinePassengers","noWrapper","_id$1","portalProps","targetProps","MountingPortal","bail","mountTo","targetSlim","targetSlotProps","targetTag","$props","portalTarget","mountEl","_props","$parent","propsData","$destroy","manual","install","Vue$$1","portalTargetName","MountingPortalName","Wormhole","reportToSentry","failureType","Sentry","BASE_DROPDOWN_CLASS","Outside","ariaHaspopup","ariaLabelledby","mainAxis","openedYet","visible","baseDropdownId","_this$toggleText","hasNoVisibleToggleText","isIconOnly","toggleLabelledBy","isEllipsisButton","isCaretOnly","isDefaultToggle","buttonTextClasses","toggleButtonTextClasses","ariaAttributes","toggleOptions","_this$$refs$toggle","firstElementChild","middleware","allowedPlacements","_this$nonScrollableCo","availableHeight","contentsEl","contentsAvailableHeight","nonScrollableContentHeight","maxHeight","toggleElement","checkToggleFocusable","stopFloating","calculateNonScrollableAreaHeight","MutationObserver","childList","subtree","stopAutoUpdate","async","floatingUIConfig","_this$observer","_this$stopAutoUpdate","prevented","startFloating","hadFocusWithin","activeElement","hasToggled","focusToggle","tagName","toggleOnEnter","toggleOnSpace","scrollableArea","floatingElementBoundingBox","scrollableAreaBoundingBox","toggleComponent","toggleAttributes","toggleListeners","panelClasses","isMakingRequest","updateGraphDropdown","hasMadeRequest","shouldRenderPagination","beforeMount","poll","service","requestData","setIsMakingRequest","Visibility","hidden","fetchPipelines","eventHub","updateTable","runMergeRequestPipeline","destroyed","cancel_path","retry_path","updateInternalState","parameters","queryString","parameter","encodeURIComponent","historyPushState","buildUrlWithCurrentLocation","updateContent","CANCEL_REQUEST","_this4","setCommonData","store","_this5","_this6","isAsync","TOAST_MESSAGE","unauthorized","HTTP_STATUS_UNAUTHORIZED","errorMessage","primaryButton","onChangePage","onChangeWithFilter","basenameMatch","computeMatch","mergeMatches","baseMatches","matchIndex","matchPos","matchPositions","output","strPos","tagClass","tagClose","tagOpen","ai","bj","backtrack","move","trace","GlFormInputGroup","clearable","recentSearchesHeader","closeButtonTitle","clearRecentSearchesText","noRecentSearchesText","blur","emitClearHistory","selectHistoryItem","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","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","shouldAddOffset","alignmentOffset","centerOffset","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","crossAxis","autoAlignment","detectOverflowOptions","placements$1","getPlacementList","currentPlacement","alignmentSides","currentOverflows","allOverflows","overflows","nextPlacement","placementsSortedByMostSpace","resetPlacement","flip","_middlewareData$arrow","_middlewareData$flip","checkMainAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","initialSideAxis","isBasePlacement","hasFallbackAxisSideDirection","overflowsData","_middlewareData$flip2","_overflowsData$filter","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","hide","referenceHiddenOffsets","referenceHidden","escapedOffsets","escaped","getBoundingRect","minX","minY","nativeClientRects","clientRects","sortedRects","prevRect","getRectsByLine","fallback","resetRects","firstRect","lastRect","isTop","isLeftSide","maxRight","minLeft","measureRects","_middlewareData$offse","diffCoords","mainAxisMulti","crossAxisMulti","rawValue","convertValueToCoords","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","enabled","limitShift","rawOffset","computedOffset","limitMin","limitMax","_middlewareData$offse2","isOriginSide","_state$middlewareData","_state$middlewareData2","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","createEventHub","filterEvents","mouseenter","mouseleave","filterContextListener","contextListener","related","event1","event0","onRemove","__on","onAdd","customEvent","sourceEvent","cards","jenkins_migration_card","buttonLink","buttonText","emoji","isVisible","styles","trackingLabel","getting_started_card","gitlab_university_card","ci_cd_catalog_card","GlCard","showJenkinsCiPrompt","gettingStartedTemplateUrl","mergeUrlParams","template","pipelineEditorPath","card","filterTemplates","templates","suggestedCiTemplates","logo","isPng","endsWith","logoStyle","objectFit","cta","AVATAR_SHAPE_OPTION_RECT","learnBasics","subtitle","CiCards","CiTemplates","noCiDescription","GlEmptyState","PipelinesCiTemplates","emptyStateSvgPath","canCreatePipeline","isResetCacheButtonLoading","newPipelinePath","resetCachePath","onClickResetCache","pipelinesAnalyticsPath","GlFilteredSearchToken","branches","fetchBranches","searchterm","branch","defaultBranchName","err","searchBranches","PIPELINE_SOURCES","activeSource","statuses","findActiveStatus","fetchTags","searchTags","anyTriggerAuthor","GlDropdownDivider","users","activeUser","fetchProjectUsers","projectUsers","searchAuthors","userType","branchType","tagType","statusType","sourceType","defaultTokensLength","GlFilteredSearch","selectedTypes","PipelineTriggerAuthorToken","PipelineBranchNameToken","PipelineTagNameToken","PipelineStatusToken","PipelineSourceToken","parsedParams","_map","val","onSubmit","filters","NoCiEmptyState","GlCollapsibleListbox","NavigationTabs","NavigationControls","PipelinesFilteredSearch","PipelinesTable","TablePagination","PipelineAccountVerificationAlert","PipelinesMixin","hasGitlabCi","defaultVisibilityPipelineIdType","getParameterByName","visibilityPipelineIdType","stateMap","tableList","emptyTab","emptyState","scopes","all","finished","stateToRender","shouldRenderTabs","shouldRenderButtons","emptyTabMessage","tabs","validatedParams","selectedPipelineKeyOption","pipelineKeyOptions","onChangeTab","resp","_isEqual","handleResetRunnersCache","VARIANT_INFO","resetRequestData","filterPipelines","FILTER_TAG_IDENTIFIER","RAW_TEXT_WARNING","VARIANT_WARNING","changeVisibilityPipelineIDType","idType","listbox","isLoggedIn","saveVisibilityPipelineIDType","setSortPreferenceMutation","userPreferencesUpdate","errorStateSvgPath","ERROR_STATE_SVG","noPipelinesSvgPath","NO_PIPELINES_SVG","use","Translate","GlToast","VueApollo","apolloProvider","defaultClient","createDefaultClient","identityVerificationPath","identityVerificationRequired","provide","JSON","doesHashExistInUrl","historyReplaceState","Pipelines","initPipelinesIndex","initVueAlerts","DefaultTransition","afterEnter","onAfterEnter","normalizeSlot","ariaAtomic","ariaLive","role","BToaster","doRender","dead","staticName","emitOnRoot","$toaster","$target","modelMixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","linkProps","appendToast","autoHideDelay","headerTag","isStatus","noAutoHide","noFade","noHoverPause","solid","static","toastClass","toaster","BToast","isMounted","localShow","isTransitioning","isHiding","dismissStarted","resumeDismiss","math","beforeEnter","onBeforeEnter","beforeLeave","onBeforeLeave","afterLeave","onAfterLeave","bvAttrs","safeId","tabindex","ensureToaster","$_dismissTimer","listenOnRoot","computedToaster","clearDismissTimer","showEvent","buildEvent","emitEvent","hideEvent","setHoverHandler","vueTarget","componentId","bvEvent","div","bvEventRoot","$mount","computedDuration","onPause","onUnPause","passed","startDismissTimer","hiddenEvent","$headerContent","$title","$header","$body","onLinkClick","computedAttrs","isStatic","toastClasses","scopedStyleAttrs","transitionHandlers","makeToast","BASE_PROPS","propsToSlots","toastContent","filterOptions","memo","BVToastPlugin","plugins","plugin","BVToastPop","extends","handleDestroy","bvParent","BvToast","toast","ToastPlugin","DEFAULT_OPTIONS","toastsCount","renderTitle","onClick","showToast","$bvToast","toastHiddenCallback","$root","updatedAutoHideDelay","pluckCandidates","sortCandidates","bKey","maxInners","maxResults","scoreProvider","scoredCandidates","spotLeft","toggleSelection","checkedClasses"],"mappings":"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","file":"pages.projects.pipelines.index.b1a69c4e.chunk.js","sourcesContent":["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 * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","/**\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","import GlToken from '../token/token';\nimport { stopEvent } from '../../../utils/utils';\nimport GlFilteredSearchTokenSegment from './filtered_search_token_segment';\nimport { termTokenDefinition, match, tokenToOption, INTENT_ACTIVATE_PREVIOUS, TOKEN_CLOSE_SELECTOR, TERM_TOKEN_TYPE } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlFilteredSearchTerm',\n components: {\n GlFilteredSearchTokenSegment,\n GlToken\n },\n inject: ['termsAsTokens'],\n inheritAttrs: false,\n props: {\n /**\n * Tokens available for this filtered search instance.\n */\n availableTokens: {\n type: Array,\n required: true\n },\n /**\n * Determines if the term is being edited or not.\n */\n active: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Current term value.\n */\n value: {\n type: Object,\n required: false,\n default: () => ({\n data: ''\n })\n },\n placeholder: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * HTML attributes to add to the search input.\n */\n searchInputAttributes: {\n type: Object,\n required: false,\n default: () => ({})\n },\n /**\n * If this is the last token.\n */\n isLastToken: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * The current `value` (tokens) of the ancestor GlFilteredSearch component.\n */\n currentValue: {\n type: Array,\n required: false,\n default: () => []\n },\n cursorPosition: {\n type: String,\n required: false,\n default: 'end',\n validator: value => ['start', 'end'].includes(value)\n },\n /**\n * The title of the text search option. Ignored unless termsAsTokens is enabled.\n */\n searchTextOptionLabel: {\n type: String,\n required: false,\n default: termTokenDefinition.title\n },\n viewOnly: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n computed: {\n showInput() {\n return this.termsAsTokens() || Boolean(this.placeholder);\n },\n showToken() {\n return this.termsAsTokens() && Boolean(this.value.data);\n },\n suggestedTokens() {\n const tokens = this.availableTokens.filter(token => match(token.title, this.value.data));\n if (this.termsAsTokens() && this.value.data) {\n tokens.push({\n ...termTokenDefinition,\n title: this.searchTextOptionLabel\n });\n }\n\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return tokens.map(tokenToOption);\n },\n internalValue: {\n get() {\n return this.value.data;\n },\n set(data) {\n /**\n * Emitted when the token changes its value.\n *\n * @event input\n * @type {object} dataObj Object containing the update value.\n */\n this.$emit('input', {\n data\n });\n }\n },\n eventListeners() {\n return this.viewOnly ? {} : {\n mousedown: this.stopMousedownOnCloseButton,\n close: this.destroyByClose\n };\n }\n },\n methods: {\n onBackspace() {\n /**\n * Emitted when token value is empty and backspace is pressed.\n * Includes user intent to activate previous token.\n *\n * @event destroy\n * @type {object} details The user intent\n */\n this.$emit('destroy', {\n intent: INTENT_ACTIVATE_PREVIOUS\n });\n },\n stopMousedownOnCloseButton(event) {\n if (event.target.closest(TOKEN_CLOSE_SELECTOR)) {\n stopEvent(event);\n }\n },\n destroyByClose() {\n this.$emit('destroy');\n },\n onComplete(type) {\n if (type === TERM_TOKEN_TYPE) {\n // We've completed this term token\n this.$emit('complete');\n } else {\n // We're changing the current token type\n this.$emit('replace', {\n type\n });\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-filtered-search-term gl-h-auto\",attrs:{\"data-testid\":\"filtered-search-term\"}},[_c('gl-filtered-search-token-segment',{ref:\"segment\",staticClass:\"gl-filtered-search-term-token\",attrs:{\"is-term\":\"\",\"active\":_vm.active,\"cursor-position\":_vm.cursorPosition,\"search-input-attributes\":_vm.searchInputAttributes,\"is-last-token\":_vm.isLastToken,\"current-value\":_vm.currentValue,\"view-only\":_vm.viewOnly,\"options\":_vm.suggestedTokens},on:{\"activate\":function($event){return _vm.$emit('activate')},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"complete\":_vm.onComplete,\"backspace\":_vm.onBackspace,\"submit\":function($event){return _vm.$emit('submit')},\"split\":function($event){return _vm.$emit('split', $event)},\"previous\":function($event){return _vm.$emit('previous')},\"next\":function($event){return _vm.$emit('next')}},scopedSlots:_vm._u([{key:\"view\",fn:function(ref){\nvar label = ref.label;\nreturn [(_vm.showToken)?_c('gl-token',_vm._g({class:{ 'gl-cursor-pointer': !_vm.viewOnly },attrs:{\"view-only\":_vm.viewOnly}},_vm.eventListeners),[_vm._v(_vm._s(_vm.value.data))]):(_vm.showInput)?_c('input',_vm._b({staticClass:\"gl-filtered-search-term-input\",class:{ 'gl-bg-gray-10': _vm.viewOnly },attrs:{\"placeholder\":_vm.placeholder,\"aria-label\":label,\"readonly\":_vm.viewOnly,\"data-testid\":\"filtered-search-term-input\"},on:{\"focusin\":function($event){return _vm.$emit('activate')},\"focusout\":function($event){return _vm.$emit('deactivate')}}},'input',_vm.searchInputAttributes,false)):[_vm._v(_vm._s(_vm.value.data))]]}}]),model:{value:(_vm.internalValue),callback:function ($$v) {_vm.internalValue=$$v;},expression:\"internalValue\"}})],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 isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { PortalTarget } from 'portal-vue';\nimport { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlIcon from '../icon/icon';\nimport GlSearchBoxByClick from '../search_box_by_click/search_box_by_click';\nimport GlFilteredSearchTerm from './filtered_search_term';\nimport { termTokenDefinition, createTerm, isEmptyTerm, needDenormalization, denormalizeTokens, INTENT_ACTIVATE_PREVIOUS, ensureTokenId, normalizeTokens } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nlet portalUuid = 0;\nfunction initialState() {\n return [createTerm()];\n}\nvar script = {\n name: 'GlFilteredSearch',\n components: {\n GlSearchBoxByClick,\n GlIcon,\n PortalTarget\n },\n directives: {\n GlTooltip: GlTooltipDirective\n },\n provide() {\n portalUuid += 1;\n this.portalName = `filters_portal_${portalUuid}`;\n return {\n portalName: this.portalName,\n alignSuggestions: ref => this.alignSuggestions(ref),\n // Return a function reference instead of a prop to work around vue-apollo@3 bug.\n // TODO: This can be reverted once https://github.com/vuejs/vue-apollo/pull/1153\n // has been merged and we consume it, or we upgrade to vue-apollo@4.\n suggestionsListClass: () => this.suggestionsListClass,\n termsAsTokens: () => this.termsAsTokens\n };\n },\n inheritAttrs: false,\n props: {\n /**\n * If provided, used as value of filtered search\n */\n value: {\n required: false,\n type: Array,\n default: () => []\n },\n /**\n * Available tokens\n */\n availableTokens: {\n type: Array,\n required: false,\n default: () => [],\n validator(value) {\n // eslint-disable-next-line no-underscore-dangle\n if (!value.__v_raw) {\n // This is Vue 2\n return true;\n }\n\n // eslint-disable-next-line no-underscore-dangle\n const isOk = Array.isArray(value) && value.every(_ref => {\n let {\n token\n } = _ref;\n return token.__v_skip;\n });\n if (!isOk) {\n // eslint-disable-next-line no-console\n console.warn('You are using Vue3. In Vue3 each token component passed to filtered search must be wrapped into markRaw');\n }\n return isOk;\n }\n },\n /**\n * If provided, used as history items for this component\n */\n placeholder: {\n type: String,\n required: false,\n default: 'Search'\n },\n clearButtonTitle: {\n type: String,\n required: false,\n default: 'Clear'\n },\n historyItems: {\n type: Array,\n required: false,\n default: null\n },\n /**\n * Additional classes to add to the suggestion list menu. NOTE: this not reactive, and the value\n * must be available and fixed when the component is instantiated\n */\n suggestionsListClass: {\n type: [String, Array, Object],\n required: false,\n default: null\n },\n /**\n * Display operators' descriptions instead of their values (e.g., \"is\" instead of \"=\").\n */\n showFriendlyText: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * HTML attributes to add to the search button\n */\n searchButtonAttributes: {\n type: Object,\n required: false,\n default: () => ({})\n },\n /**\n * HTML attributes to add to the search input\n */\n searchInputAttributes: {\n type: Object,\n required: false,\n default: () => ({})\n },\n viewOnly: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Render search terms as GlTokens. Ideally, this prop will be as\n * short-lived as possible, and this behavior will become the default and\n * only behavior.\n *\n * This prop is *not* reactive.\n *\n * See https://gitlab.com/gitlab-org/gitlab-ui/-/issues/2159.\n */\n termsAsTokens: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * The title of the text search option. Ignored unless termsAsTokens is enabled.\n */\n searchTextOptionLabel: {\n type: String,\n required: false,\n default: termTokenDefinition.title\n },\n /**\n * Display search button to perform a search.\n *\n * Note: it is required to ensure accessibility for WCAG 2.1 3.2.2: On Input.\n * If the search button is hidden, a separate button should be provided for the same context.\n */\n showSearchButton: {\n type: Boolean,\n required: false,\n default: true\n }\n },\n data() {\n return {\n tokens: initialState(),\n activeTokenIdx: null,\n suggestionsStyle: {},\n intendedCursorPosition: 'end'\n };\n },\n computed: {\n activeToken() {\n return this.tokens[this.activeTokenIdx];\n },\n appliedTokens() {\n return this.tokens.filter(token => !isEmptyTerm(token));\n },\n lastTokenIdx() {\n return this.tokens.length - 1;\n },\n isLastTokenActive() {\n return this.activeTokenIdx === this.lastTokenIdx;\n },\n hasValue() {\n return this.tokens.length > 1 || this.tokens[0].value.data !== '';\n },\n termPlaceholder() {\n return this.hasValue ? null : this.placeholder;\n },\n currentAvailableTokens() {\n return this.availableTokens.filter(token => {\n if (token.disabled) {\n return false;\n }\n if (token.unique) {\n return !this.tokens.find(t => t.type === token.type);\n }\n return true;\n });\n }\n },\n watch: {\n tokens: {\n handler() {\n if (process.env.NODE_ENV !== 'production') {\n const invalidToken = this.tokens.find(token => !token.id);\n if (invalidToken) {\n throw new Error(`Token does not have an id:\\n${JSON.stringify(invalidToken)}`);\n }\n }\n if ((this.tokens.length === 0 || !this.isLastTokenEmpty()) && !this.viewOnly) {\n this.tokens.push(createTerm());\n }\n\n /**\n * Emitted when the tokens (value) changes\n * @property {array} tokens\n */\n this.$emit('input', this.tokens);\n },\n deep: true,\n immediate: true\n },\n value: {\n handler(newValue, oldValue) {\n if (!isEqual(newValue, oldValue)) {\n const value = newValue.length ? newValue : initialState();\n this.applyNewValue(cloneDeep(value));\n }\n },\n deep: true,\n immediate: true\n }\n },\n methods: {\n applyNewValue(newValue) {\n this.tokens = needDenormalization(newValue) ? denormalizeTokens(newValue, this.termsAsTokens) : newValue;\n },\n isActiveToken(idx) {\n return this.activeTokenIdx === idx;\n },\n isLastToken(idx) {\n return this.activeTokenIdx === null && idx === this.lastTokenIdx;\n },\n isLastTokenEmpty() {\n return isEmptyTerm(this.tokens[this.lastTokenIdx]);\n },\n getTokenEntry(type) {\n return this.availableTokens.find(t => t.type === type);\n },\n getTokenComponent(type) {\n var _this$getTokenEntry;\n return ((_this$getTokenEntry = this.getTokenEntry(type)) === null || _this$getTokenEntry === void 0 ? void 0 : _this$getTokenEntry.token) || GlFilteredSearchTerm;\n },\n getTokenClassList(idx) {\n return {\n 'gl-filtered-search-item': true,\n 'gl-filtered-search-last-item': this.isLastToken(idx) && !this.viewOnly\n };\n },\n activate(idx) {\n if (!this.viewOnly) {\n this.activeTokenIdx = idx;\n }\n },\n activatePreviousToken() {\n if (this.activeTokenIdx > 0) {\n this.activeTokenIdx -= 1;\n this.intendedCursorPosition = 'end';\n }\n },\n activateNextToken() {\n if (this.activeTokenIdx < this.value.length) {\n this.activeTokenIdx += 1;\n this.intendedCursorPosition = 'start';\n }\n },\n alignSuggestions(ref) {\n const offsetRef = ref.getBoundingClientRect().left;\n const offsetMenu = this.$el.getBoundingClientRect().left;\n const transform = `translateX(${Math.floor(offsetRef - offsetMenu)}px)`;\n this.suggestionsStyle = {\n transform\n };\n },\n deactivate(token) {\n this.intendedCursorPosition = 'end';\n const tokenIdx = this.tokens.indexOf(token);\n if (tokenIdx === -1 || this.activeTokenIdx !== tokenIdx) {\n return;\n }\n if (!this.isLastTokenEmpty()) {\n this.tokens.push(createTerm());\n }\n if (!this.isLastTokenActive && isEmptyTerm(this.activeToken)) {\n this.tokens.splice(tokenIdx, 1);\n }\n this.activeTokenIdx = null;\n },\n destroyToken(idx) {\n let {\n intent\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.tokens.length === 1) {\n return;\n }\n this.tokens.splice(idx, 1);\n\n // First, attempt to honor the user's activation intent behind the\n // destruction of the token, if any. Otherwise, try to maintain the\n // active state for the token that was active at the time. If that's not\n // possible, make sure no token is active.\n if (intent === INTENT_ACTIVATE_PREVIOUS) {\n // If there is a previous token, activate it; else, activate the first token\n this.activeTokenIdx = Math.max(idx - 1, 0);\n } else if (idx < this.activeTokenIdx) {\n // Preserve the active token's active status (it shifted down one index)\n this.activeTokenIdx -= 1;\n } else if (idx === this.activeTokenIdx) {\n // User destroyed the active token; don't activate another one.\n this.activeTokenIdx = null;\n }\n // Do nothing if there was no active token, or if idx > this.activeTokenIdx,\n // to preserve the active state of the remaining tokens.\n },\n replaceToken(idx, token) {\n this.$set(this.tokens, idx, ensureTokenId({\n ...token,\n value: {\n data: '',\n ...token.value\n }\n }));\n this.activeTokenIdx = idx;\n },\n // This method can be deleted once termsAsTokens behavior is the default.\n createTokens(idx) {\n let newStrings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [''];\n if (!this.isLastTokenActive && newStrings.length === 1 && newStrings[0] === '') {\n this.activeTokenIdx = this.lastTokenIdx;\n return;\n }\n const newTokens = newStrings.map(data => createTerm(data));\n this.tokens.splice(idx + 1, 0, ...newTokens);\n this.activeTokenIdx = idx + newStrings.length;\n },\n completeToken() {\n if (this.activeTokenIdx === this.lastTokenIdx - 1) {\n this.activeTokenIdx = this.lastTokenIdx;\n } else {\n this.activeTokenIdx = null;\n }\n },\n submit() {\n /**\n * Emitted when search is submitted\n * @property {array} tokens\n */\n this.$emit('submit', normalizeTokens(cloneDeep(this.tokens)));\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('gl-search-box-by-click',_vm._b({attrs:{\"value\":_vm.tokens,\"history-items\":_vm.historyItems,\"clearable\":_vm.hasValue,\"search-button-attributes\":_vm.searchButtonAttributes,\"show-search-button\":_vm.showSearchButton,\"disabled\":_vm.viewOnly,\"data-testid\":\"filtered-search-input\"},on:{\"submit\":_vm.submit,\"input\":_vm.applyNewValue,\"history-item-selected\":function($event){return _vm.$emit('history-item-selected', $event)},\"clear\":function($event){return _vm.$emit('clear')},\"clear-history\":function($event){return _vm.$emit('clear-history')}},scopedSlots:_vm._u([{key:\"history-item\",fn:function(slotScope){return [_vm._t(\"history-item\",null,null,slotScope)]}},{key:\"input\",fn:function(){return [_c('div',{staticClass:\"gl-filtered-search-scrollable-container\",class:{\n 'gl-filtered-search-scrollable-container-with-search-button': _vm.showSearchButton,\n '!gl-bg-gray-10 !gl-shadow-inner-1-gray-100': _vm.viewOnly,\n }},[_c('div',{staticClass:\"gl-filtered-search-scrollable\"},_vm._l((_vm.tokens),function(token,idx){return _c(_vm.getTokenComponent(token.type),{key:token.id,ref:\"tokens\",refInFor:true,tag:\"component\",class:_vm.getTokenClassList(idx),attrs:{\"config\":_vm.getTokenEntry(token.type),\"active\":_vm.activeTokenIdx === idx,\"cursor-position\":_vm.intendedCursorPosition,\"available-tokens\":_vm.currentAvailableTokens,\"current-value\":_vm.tokens,\"index\":idx,\"placeholder\":_vm.termPlaceholder,\"show-friendly-text\":_vm.showFriendlyText,\"search-input-attributes\":_vm.searchInputAttributes,\"view-only\":_vm.viewOnly,\"is-last-token\":_vm.isLastToken(idx),\"search-text-option-label\":_vm.searchTextOptionLabel,\"applied-tokens\":_vm.appliedTokens},on:{\"activate\":function($event){return _vm.activate(idx)},\"deactivate\":function($event){return _vm.deactivate(token)},\"destroy\":function($event){return _vm.destroyToken(idx, $event)},\"replace\":function($event){return _vm.replaceToken(idx, $event)},\"complete\":_vm.completeToken,\"submit\":_vm.submit,\"split\":function($event){return _vm.createTokens(idx, $event)},\"previous\":_vm.activatePreviousToken,\"next\":_vm.activateNextToken},model:{value:(token.value),callback:function ($$v) {_vm.$set(token, \"value\", $$v);},expression:\"token.value\"}})}),1)]),_vm._v(\" \"),_c('portal-target',{key:_vm.activeTokenIdx,ref:\"menu\",style:(_vm.suggestionsStyle),attrs:{\"name\":_vm.portalName,\"slim\":\"\"}})]},proxy:true}],null,true)},'gl-search-box-by-click',_vm.$attrs,false))};\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 { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlButton from '../../base/button/button';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'ClearIconButton',\n components: {\n GlButton\n },\n directives: {\n GlTooltip: GlTooltipDirective\n },\n props: {\n title: {\n type: String,\n required: false,\n default: () => translate('ClearIconButton.title', 'Clear')\n },\n tooltipContainer: {\n required: false,\n default: false,\n validator: value => value === false || typeof value === 'string' || value instanceof HTMLElement\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('gl-button',_vm._g({directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",value:({ container: _vm.tooltipContainer }),expression:\"{ container: tooltipContainer }\",modifiers:{\"hover\":true}}],staticClass:\"gl-clear-icon-button\",attrs:{\"variant\":\"default\",\"category\":\"tertiary\",\"size\":\"small\",\"name\":\"clear\",\"icon\":\"clear\",\"title\":_vm.title,\"aria-label\":_vm.title}},_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","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","export const EDITOR_APP_DRAWER_HELP = 'HELP';\nexport const EDITOR_APP_DRAWER_JOB_ASSISTANT = 'JOB_ASSISTANT';\nexport const EDITOR_APP_DRAWER_AI_ASSISTANT = 'AI_ASSISTANT';\nexport const EDITOR_APP_DRAWER_NONE = '';\n\n// Values for CI_CONFIG_STATUS_* comes from lint graphQL\nexport const CI_CONFIG_STATUS_INVALID = 'INVALID';\nexport const CI_CONFIG_STATUS_VALID = 'VALID';\n\n// Values for EDITOR_APP_STATUS_* are frontend specifics and\n// represent the global state of the pipeline editor app.\nexport const EDITOR_APP_STATUS_EMPTY = 'EMPTY';\nexport const EDITOR_APP_STATUS_INVALID = CI_CONFIG_STATUS_INVALID;\nexport const EDITOR_APP_STATUS_LINT_UNAVAILABLE = 'LINT_DOWN';\nexport const EDITOR_APP_STATUS_LOADING = 'LOADING';\nexport const EDITOR_APP_STATUS_VALID = CI_CONFIG_STATUS_VALID;\n\nexport const EDITOR_APP_VALID_STATUSES = [\n EDITOR_APP_STATUS_EMPTY,\n EDITOR_APP_STATUS_INVALID,\n EDITOR_APP_STATUS_LINT_UNAVAILABLE,\n EDITOR_APP_STATUS_LOADING,\n EDITOR_APP_STATUS_VALID,\n];\n\nexport const COMMIT_FAILURE = 'COMMIT_FAILURE';\nexport const COMMIT_SUCCESS = 'COMMIT_SUCCESS';\nexport const COMMIT_SUCCESS_WITH_REDIRECT = 'COMMIT_SUCCESS_WITH_REDIRECT';\n\nexport const DEFAULT_FAILURE = 'DEFAULT_FAILURE';\nexport const DEFAULT_SUCCESS = 'DEFAULT_SUCCESS';\nexport const LOAD_FAILURE_UNKNOWN = 'LOAD_FAILURE_UNKNOWN';\nexport const PIPELINE_FAILURE = 'PIPELINE_FAILURE';\n\nexport const CREATE_TAB = 'CREATE_TAB';\nexport const MERGED_TAB = 'MERGED_TAB';\nexport const VALIDATE_TAB = 'VALIDATE_TAB';\nexport const VISUALIZE_TAB = 'VISUALIZE_TAB';\n\nexport const TABS_INDEX = {\n [CREATE_TAB]: '0',\n [VISUALIZE_TAB]: '1',\n [VALIDATE_TAB]: '2',\n [MERGED_TAB]: '3',\n};\nexport const TAB_QUERY_PARAM = 'tab';\n\nexport const COMMIT_ACTION_CREATE = 'CREATE';\nexport const COMMIT_ACTION_UPDATE = 'UPDATE';\n\nexport const BRANCH_PAGINATION_LIMIT = 20;\nexport const BRANCH_SEARCH_DEBOUNCE = '500';\nexport const SOURCE_EDITOR_DEBOUNCE = 500;\n\nexport const FILE_TREE_DISPLAY_KEY = 'pipeline_editor_file_tree_display';\nexport const FILE_TREE_POPOVER_DISMISSED_KEY = 'pipeline_editor_file_tree_popover_dismissed';\nexport const FILE_TREE_TIP_DISMISSED_KEY = 'pipeline_editor_file_tree_tip_dismissed';\nexport const VALIDATE_TAB_BADGE_DISMISSED_KEY = 'pipeline_editor_validate_tab_badge_dismissed';\n\nexport const STARTER_TEMPLATE_NAME = 'Getting-Started';\n\nexport const CI_EXAMPLES_LINK = 'CI_EXAMPLES_LINK';\nexport const CI_HELP_LINK = 'CI_HELP_LINK';\nexport const CI_NEEDS_LINK = 'CI_NEEDS_LINK';\nexport const CI_RUNNERS_LINK = 'CI_RUNNERS_LINK';\nexport const CI_YAML_LINK = 'CI_YAML_LINK';\nexport const GITLAB_UNIVERSITY_LINK = 'GITLAB_UNIVERSITY_LINK';\n\nexport const pipelineEditorTrackingOptions = {\n label: 'pipeline_editor',\n actions: {\n browseCatalog: 'browse_catalog',\n browseTemplates: 'browse_templates',\n closeHelpDrawer: 'close_help_drawer',\n commitCiConfig: 'commit_ci_config',\n helpDrawerLinks: {\n [CI_EXAMPLES_LINK]: 'visit_help_drawer_link_ci_examples',\n [CI_HELP_LINK]: 'visit_help_drawer_link_ci_help',\n [CI_NEEDS_LINK]: 'visit_help_drawer_link_needs',\n [CI_RUNNERS_LINK]: 'visit_help_drawer_link_runners',\n [CI_YAML_LINK]: 'visit_help_drawer_link_yaml',\n [GITLAB_UNIVERSITY_LINK]: 'visit_help_drawer_link_gitlab_university',\n },\n openHelpDrawer: 'open_help_drawer',\n resimulatePipeline: 'resimulate_pipeline',\n simulatePipeline: 'simulate_pipeline',\n },\n};\n\nexport const VALIDATE_TAB_FEEDBACK_URL = 'https://gitlab.com/gitlab-org/gitlab/-/issues/346687';\n\nexport const COMMIT_SHA_POLL_INTERVAL = 1000;\nexport const PIPELINE_POLL_INTERVAL = 5000;\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","/**\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 { stepIndexAndWrap } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst DEFER_TO_INITIAL_VALUE = -1;\nconst NO_ACTIVE_ITEM = -2;\nvar script = {\n name: 'GlFilteredSearchSuggestionList',\n inject: ['suggestionsListClass', 'termsAsTokens'],\n provide() {\n return {\n filteredSearchSuggestionListInstance: this\n };\n },\n props: {\n /**\n * Value to be initially selected in list.\n */\n initialValue: {\n required: false,\n validator: () => true,\n default: null\n }\n },\n data() {\n return {\n activeIdx: DEFER_TO_INITIAL_VALUE,\n registeredItems: []\n };\n },\n computed: {\n initialActiveIdx() {\n return this.registeredItems.findIndex(item => this.valuesMatch(item.value, this.initialValue));\n },\n initialActiveItem() {\n return this.registeredItems[this.initialActiveIdx];\n },\n activeItem() {\n if (!this.termsAsTokens() && this.activeIdx === NO_ACTIVE_ITEM) return null;\n if (this.activeIdx === DEFER_TO_INITIAL_VALUE) return this.initialActiveItem;\n return this.registeredItems[this.activeIdx];\n },\n listClasses() {\n return [this.suggestionsListClass(), 'dropdown-menu gl-filtered-search-suggestion-list'];\n }\n },\n watch: {\n initialValue() {\n this.activeIdx = DEFER_TO_INITIAL_VALUE;\n }\n },\n methods: {\n valuesMatch(firstValue, secondValue) {\n if (firstValue == null || secondValue == null) return false;\n return typeof firstValue === 'string' && typeof secondValue === 'string' ? firstValue.toLowerCase() === secondValue.toLowerCase() : firstValue === secondValue;\n },\n register(item) {\n this.registeredItems.push(item);\n },\n unregister(item) {\n const idx = this.registeredItems.indexOf(item);\n if (idx !== -1) {\n this.registeredItems.splice(idx, 1);\n if (idx === this.activeIdx) {\n this.activeIdx = DEFER_TO_INITIAL_VALUE;\n }\n }\n },\n nextItem() {\n if (this.termsAsTokens()) {\n this.stepItem(1);\n } else {\n this.stepItem(1, this.registeredItems.length - 1);\n }\n },\n prevItem() {\n if (this.termsAsTokens()) {\n this.stepItem(-1);\n } else {\n this.stepItem(-1, 0);\n }\n },\n stepItem(direction, endIdx) {\n if (!this.termsAsTokens() && (this.activeIdx === endIdx || this.activeIdx === DEFER_TO_INITIAL_VALUE && this.initialActiveIdx === endIdx)) {\n // The user wants to move past the end of the list, so ensure nothing is selected.\n this.activeIdx = NO_ACTIVE_ITEM;\n } else {\n const index = this.activeIdx === DEFER_TO_INITIAL_VALUE ?\n // Currently active item is set by initialValue (i.e., text input matching),\n // so step relative to that.\n this.initialActiveIdx :\n // Otherwise, step relative to the explicitly (via up/down arrows) activated item.\n this.activeIdx;\n this.activeIdx = stepIndexAndWrap(index, direction, this.registeredItems.length);\n }\n },\n getValue() {\n return this.activeItem ? this.activeItem.value : null;\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('ul',{class:_vm.listClasses},[_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 last from 'lodash/last';\nimport { Portal } from 'portal-vue';\nimport { LEFT_MOUSE_BUTTON } from '../../../utils/constants';\nimport GlFilteredSearchSuggestion from './filtered_search_suggestion';\nimport GlFilteredSearchSuggestionList from './filtered_search_suggestion_list';\nimport { TERM_TOKEN_TYPE, splitOnQuotes, match, wrapTokenInQuotes } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n// We need some helpers to ensure @vue/compat compatibility\n// @vue/compat will render comment nodes for v-if and comments in HTML\n// Also it makes use of fragments - both comments and nodes are Symbols.\n// In Vue3 all of them (Comment, Fragment) are exposed as named exports on vue module\n// However we want to maintain compatibility with Vue2, so taking this hacky approach\n// relying on Symbol.toString()\n\n// I'm keeping this directly here instead of helper to increase probability of\n// fixing ASAP and because I don't want this helper to be reused\n// FIXME: replace with Symbols when we will switch to Vue3\n\nconst isVue3Comment = vnode => {\n var _vnode$type, _vnode$type$toString;\n return (vnode === null || vnode === void 0 ? void 0 : (_vnode$type = vnode.type) === null || _vnode$type === void 0 ? void 0 : (_vnode$type$toString = _vnode$type.toString) === null || _vnode$type$toString === void 0 ? void 0 : _vnode$type$toString.call(_vnode$type)) === 'Symbol(Comment)';\n};\nconst isVue3Fragment = vnode => {\n var _vnode$type2, _vnode$type2$toString;\n return (vnode === null || vnode === void 0 ? void 0 : (_vnode$type2 = vnode.type) === null || _vnode$type2 === void 0 ? void 0 : (_vnode$type2$toString = _vnode$type2.toString) === null || _vnode$type2$toString === void 0 ? void 0 : _vnode$type2$toString.call(_vnode$type2)) === 'Symbol(Fragment)';\n};\nconst isVNodeEmpty = vnode => {\n if (isVue3Fragment(vnode)) {\n // vnode.children might be an array or single node in edge cases\n return Array.isArray(vnode.children) ?\n // eslint-disable-next-line unicorn/no-array-callback-reference\n vnode.children.every(isVNodeEmpty) : isVNodeEmpty(vnode.children);\n }\n if (isVue3Comment(vnode)) {\n return true;\n }\n return false;\n};\nconst isSlotNotEmpty = slot => {\n if (!slot) {\n return false;\n }\n const vnodes = typeof slot === 'function' ? slot() : slot;\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return !(Array.isArray(vnodes) ? vnodes.every(isVNodeEmpty) : isVNodeEmpty(vnodes));\n};\nvar script = {\n name: 'GlFilteredSearchTokenSegment',\n components: {\n Portal,\n GlFilteredSearchSuggestionList,\n GlFilteredSearchSuggestion\n },\n inject: ['portalName', 'alignSuggestions', 'termsAsTokens'],\n inheritAttrs: false,\n props: {\n /**\n * If this token segment is currently being edited.\n */\n active: {\n type: Boolean,\n required: false,\n default: false\n },\n isTerm: {\n type: Boolean,\n required: false,\n default: false\n },\n label: {\n type: String,\n required: false,\n default: 'Search'\n },\n multiSelect: {\n type: Boolean,\n required: false,\n default: false\n },\n options: {\n type: Array,\n required: false,\n default: () => null\n },\n optionTextField: {\n type: String,\n required: false,\n default: 'title'\n },\n customInputKeydownHandler: {\n type: Function,\n required: false,\n default: () => () => false\n },\n /**\n * Current term value\n */\n value: {\n required: true,\n validator: () => true\n },\n /**\n * HTML attributes to add to the search input\n */\n searchInputAttributes: {\n type: Object,\n required: false,\n default: () => ({})\n },\n /**\n * If this is the last token\n */\n isLastToken: {\n type: Boolean,\n required: false,\n default: false\n },\n currentValue: {\n type: Array,\n required: false,\n default: () => []\n },\n cursorPosition: {\n type: String,\n required: false,\n default: 'end',\n validator: value => ['start', 'end'].includes(value)\n },\n viewOnly: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n data() {\n return {\n fallbackValue: this.value\n };\n },\n computed: {\n hasTermSuggestion() {\n if (!this.termsAsTokens()) return false;\n if (!this.options) return false;\n return this.options.some(_ref => {\n let {\n value\n } = _ref;\n return value === TERM_TOKEN_TYPE;\n });\n },\n matchingOption() {\n var _this$options;\n return (_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.find(o => o.value === this.value);\n },\n nonMultipleValue() {\n return Array.isArray(this.value) ? last(this.value) : this.value;\n },\n inputValue: {\n get() {\n if (this.isTerm) {\n return this.nonMultipleValue;\n }\n return this.matchingOption ? this.matchingOption[this.optionTextField] : this.nonMultipleValue;\n },\n set(inputValue) {\n /**\n * Emitted when this token segment's value changes.\n *\n * @type {object} option The current option.\n */\n this.$emit('input', inputValue);\n }\n },\n hasOptionsOrSuggestions() {\n var _this$options2;\n // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n return ((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.length) || isSlotNotEmpty(this.$slots.suggestions);\n },\n defaultSuggestedValue() {\n var _this$options$;\n if (!this.options) {\n return this.nonMultipleValue;\n }\n if (this.value) {\n const option = this.getMatchingOptionForInputValue(this.inputValue) || this.getMatchingOptionForInputValue(this.inputValue, {\n loose: true\n });\n if (option) return option.value;\n if (this.hasTermSuggestion) return TERM_TOKEN_TYPE;\n return null;\n }\n const defaultOption = this.options.find(op => op.default);\n if (defaultOption) {\n return defaultOption.value;\n }\n return this.isTerm ? undefined : (_this$options$ = this.options[0]) === null || _this$options$ === void 0 ? void 0 : _this$options$.value;\n },\n containerAttributes() {\n return this.isLastToken && !this.active && this.currentValue.length > 1 && this.searchInputAttributes;\n }\n },\n watch: {\n active: {\n immediate: true,\n handler(newValue) {\n if (newValue) {\n this.activate();\n } else {\n this.deactivate();\n }\n }\n },\n inputValue(newValue) {\n if (this.termsAsTokens()) return;\n if (this.multiSelect) return;\n\n /**\n * This is a temporary workaround to implement the same behaviour\n * implemented in https://gitlab.com/gitlab-org/gitlab-ui/-/issues/2381\n * for tokens with `terms-as-tokens=false` and `multi-select=false`.\n *\n * We're aiming to remove this temporary fix when\n * https://gitlab.com/groups/gitlab-org/-/epics/15948 gets completed, as\n * that refactoring will use the `@input` handler on the GlFilteredSearch\n * component to handle tokens instead of doing workarounds.\n */\n if (typeof newValue !== 'string') return;\n const hasUnclosedQuote = newValue.split('\"').length % 2 === 0;\n if (newValue.indexOf(' ') === -1 || hasUnclosedQuote) {\n return;\n }\n const [firstWord, ...otherWords] = splitOnQuotes(newValue).filter((w, idx, arr) => Boolean(w) || idx === arr.length - 1);\n this.$emit('input', firstWord);\n if (otherWords.length) {\n /**\n * Emitted when Space appears in token segment value\n * @property {array|string} newStrings New strings to be converted into term tokens\n */\n this.$emit('split', otherWords);\n }\n }\n },\n methods: {\n emitIfInactive(e) {\n if (e.button === LEFT_MOUSE_BUTTON && !this.active) {\n /**\n * Emitted on mousedown event on the main component.\n */\n this.$emit('activate');\n e.preventDefault();\n }\n },\n getMatchingOptionForInputValue(inputValue) {\n var _this$options3;\n let {\n loose\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n loose: false\n };\n return (_this$options3 = this.options) === null || _this$options3 === void 0 ? void 0 : _this$options3.find(option => loose ? match(option[this.optionTextField], inputValue) : option[this.optionTextField] === inputValue);\n },\n activate() {\n this.fallbackValue = this.value;\n this.$nextTick(() => {\n const {\n input\n } = this.$refs;\n if (input) {\n input.focus();\n input.scrollIntoView({\n block: 'nearest',\n inline: 'end'\n });\n this.alignSuggestions(input);\n if (this.cursorPosition === 'start') {\n input === null || input === void 0 ? void 0 : input.setSelectionRange(0, 0);\n }\n }\n });\n },\n deactivate() {\n var _this$matchingOption;\n if (!this.options || this.isTerm) {\n return;\n }\n if (((_this$matchingOption = this.matchingOption) === null || _this$matchingOption === void 0 ? void 0 : _this$matchingOption.value) !== this.value) {\n this.$emit('input', this.fallbackValue);\n }\n },\n applySuggestion(suggestedValue) {\n const formattedSuggestedValue = this.termsAsTokens() ? suggestedValue : wrapTokenInQuotes(suggestedValue);\n\n /**\n * Emitted when autocomplete entry is selected.\n *\n * @type {string} value The selected value.\n */\n this.$emit('select', formattedSuggestedValue);\n if (!this.multiSelect) {\n this.$emit('input', formattedSuggestedValue === TERM_TOKEN_TYPE ? this.inputValue : formattedSuggestedValue);\n this.$emit('complete', formattedSuggestedValue);\n }\n },\n handleInputKeydown(e) {\n const {\n key\n } = e;\n const {\n suggestions,\n input\n } = this.$refs;\n const suggestedValue = suggestions === null || suggestions === void 0 ? void 0 : suggestions.getValue();\n const handlers = {\n ArrowLeft: () => {\n if (input.selectionStart === 0) {\n e.preventDefault();\n this.$emit('previous');\n }\n },\n ArrowRight: () => {\n if (input.selectionEnd === this.inputValue.length) {\n e.preventDefault();\n this.$emit('next');\n }\n },\n Backspace: () => {\n if (this.inputValue === '') {\n e.preventDefault();\n /**\n * Emitted when Backspace is pressed and the value is empty\n */\n this.$emit('backspace');\n }\n },\n Enter: () => {\n e.preventDefault();\n if (suggestedValue != null) {\n this.applySuggestion(suggestedValue);\n } else {\n /**\n * Emitted when Enter is pressed and no suggestion is selected\n */\n this.$emit('submit');\n }\n },\n ':': () => {\n if (suggestedValue != null) {\n e.preventDefault();\n this.applySuggestion(suggestedValue);\n }\n },\n Escape: () => {\n e.preventDefault();\n /**\n * Emitted when suggestion is selected from the suggestion list\n */\n this.$emit('complete');\n }\n };\n const suggestionsHandlers = {\n ArrowDown: () => suggestions.nextItem(),\n Down: () => suggestions.nextItem(),\n ArrowUp: () => suggestions.prevItem(),\n Up: () => suggestions.prevItem()\n };\n if (this.hasOptionsOrSuggestions) {\n Object.assign(handlers, suggestionsHandlers);\n }\n if (Object.keys(handlers).includes(key)) {\n handlers[key]();\n return;\n }\n this.customInputKeydownHandler(e, {\n suggestedValue,\n inputValue: this.inputValue,\n applySuggestion: v => this.applySuggestion(v)\n });\n },\n handleBlur() {\n if (this.multiSelect) {\n this.$emit('complete');\n } else if (this.active) {\n /**\n * Emitted when this term token will lose its focus.\n */\n this.$emit('deactivate');\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',_vm._g(_vm._b({staticClass:\"gl-filtered-search-token-segment\",class:{\n 'gl-filtered-search-token-segment-active': _vm.active,\n '!gl-cursor-text': _vm.viewOnly,\n },attrs:{\"data-testid\":\"filtered-search-token-segment\"}},'div',_vm.containerAttributes,false),_vm.viewOnly ? {} : { mousedown: _vm.emitIfInactive }),[(_vm.active)?[_vm._t(\"before-input\",null,null,{ submitValue: _vm.applySuggestion }),_vm._v(\" \"),(((_vm.searchInputAttributes).type)==='checkbox')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputValue),expression:\"inputValue\"}],ref:\"input\",staticClass:\"gl-filtered-search-token-segment-input\",attrs:{\"data-testid\":\"filtered-search-token-segment-input\",\"aria-label\":_vm.label,\"readonly\":_vm.viewOnly,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.inputValue)?_vm._i(_vm.inputValue,null)>-1:(_vm.inputValue)},on:{\"keydown\":_vm.handleInputKeydown,\"blur\":_vm.handleBlur,\"change\":function($event){var $$a=_vm.inputValue,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.inputValue=$$a.concat([$$v]));}else {$$i>-1&&(_vm.inputValue=$$a.slice(0,$$i).concat($$a.slice($$i+1)));}}else {_vm.inputValue=$$c;}}}},'input',_vm.searchInputAttributes,false)):(((_vm.searchInputAttributes).type)==='radio')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputValue),expression:\"inputValue\"}],ref:\"input\",staticClass:\"gl-filtered-search-token-segment-input\",attrs:{\"data-testid\":\"filtered-search-token-segment-input\",\"aria-label\":_vm.label,\"readonly\":_vm.viewOnly,\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.inputValue,null)},on:{\"keydown\":_vm.handleInputKeydown,\"blur\":_vm.handleBlur,\"change\":function($event){_vm.inputValue=null;}}},'input',_vm.searchInputAttributes,false)):_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputValue),expression:\"inputValue\"}],ref:\"input\",staticClass:\"gl-filtered-search-token-segment-input\",attrs:{\"data-testid\":\"filtered-search-token-segment-input\",\"aria-label\":_vm.label,\"readonly\":_vm.viewOnly,\"type\":(_vm.searchInputAttributes).type},domProps:{\"value\":(_vm.inputValue)},on:{\"keydown\":_vm.handleInputKeydown,\"blur\":_vm.handleBlur,\"input\":function($event){if($event.target.composing){ return; }_vm.inputValue=$event.target.value;}}},'input',_vm.searchInputAttributes,false)),_vm._v(\" \"),_c('portal',{key:(\"operator-\" + _vm._uid),attrs:{\"to\":_vm.portalName}},[(_vm.hasOptionsOrSuggestions)?_c('gl-filtered-search-suggestion-list',{key:(\"operator-\" + _vm._uid),ref:\"suggestions\",attrs:{\"initial-value\":_vm.defaultSuggestedValue},on:{\"suggestion\":_vm.applySuggestion}},[(_vm.options)?_vm._l((_vm.options),function(option,idx){return _c('gl-filtered-search-suggestion',{key:((option.value) + \"-\" + idx),attrs:{\"value\":option.value,\"icon-name\":option.icon}},[_vm._t(\"option\",function(){return [(option.component)?[_c(option.component,{tag:\"component\",attrs:{\"option\":option}})]:[_vm._v(\"\\n \"+_vm._s(option[_vm.optionTextField])+\"\\n \")]]},null,{ option: option })],2)}):_vm._t(\"suggestions\")],2):_vm._e()],1)]:_vm._t(\"view\",function(){return [_vm._v(_vm._s(_vm.inputValue))]},null,{ label: _vm.label, inputValue: _vm.inputValue })],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 {\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","/**\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"ci-table\"},[_c('gl-table-lite',{attrs:{\"fields\":_vm.tableFields,\"items\":_vm.pipelinesWithDetails,\"tbody-tr-attr\":_vm.$options.TBODY_TR_ATTR,\"tbody-tr-class\":_vm.rowClass,\"details-td-class\":\"!gl-pt-2\",\"stacked\":\"lg\",\"fixed\":\"\"},scopedSlots:_vm._u([{key:\"head(actions)\",fn:function(){return [_vm._t(\"table-header-actions\",function(){return [_c('span',{staticClass:\"gl-block gl-text-right\"},[_vm._v(_vm._s(_vm.s__('Pipeline|Actions')))])]})]},proxy:true},{key:\"table-colgroup\",fn:function({ fields }){return _vm._l((fields),function(field){return _c('col',{key:field.key,class:field.columnClass})})}},{key:\"cell(status)\",fn:function({ item }){return [(item.isLoading)?_c('div',{ref:\"status\"},[_c('gl-skeleton-loader',{attrs:{\"height\":_vm.$options.cellHeight,\"width\":_vm.cellWidth('status')}},[_c('rect',{attrs:{\"height\":\"30\",\"rx\":\"4\",\"ry\":\"4\",\"width\":_vm.cellWidth('status')}})])],1):_c('pipeline-status-badge',{attrs:{\"pipeline\":item}})]}},{key:\"cell(pipeline)\",fn:function({ item }){return [(item.isLoading)?_c('div',{ref:\"pipeline\"},[_c('gl-skeleton-loader',{attrs:{\"height\":_vm.$options.cellHeight,\"width\":_vm.cellWidth('pipeline')}},[_c('rect',{attrs:{\"height\":\"14\",\"rx\":\"4\",\"ry\":\"4\",\"width\":_vm.cellWidth('pipeline')}}),_vm._v(\" \"),_c('rect',{attrs:{\"height\":\"10\",\"rx\":\"4\",\"ry\":\"4\",\"width\":_vm.cellWidth('pipeline') / 2,\"x\":_vm.setLoaderPosition('pipeline'),\"y\":\"20\"}})])],1):_c('pipeline-url',{attrs:{\"pipeline\":item,\"pipeline-id-type\":_vm.pipelineIdType,\"ref-color\":\"gl-text-default\"}})]}},{key:\"cell(triggerer)\",fn:function({ item }){return [(item.isLoading)?_c('div',{ref:\"triggerer\",staticClass:\"gl-ml-3\"},[_c('gl-skeleton-loader',{attrs:{\"height\":_vm.$options.cellHeight,\"width\":_vm.cellWidth('triggerer')}},[_c('rect',{attrs:{\"height\":34,\"rx\":\"50\",\"ry\":\"50\",\"width\":34}})])],1):_c('pipeline-triggerer',{attrs:{\"pipeline\":item}})]}},{key:\"cell(stages)\",fn:function({ item }){return [(item.isLoading)?_c('div',{ref:\"stages\"},[_c('gl-skeleton-loader',{attrs:{\"height\":_vm.$options.cellHeight,\"width\":_vm.cellWidth('stages')}},[_c('rect',{attrs:{\"height\":\"20\",\"rx\":\"10\",\"ry\":\"10\",\"width\":_vm.cellWidth('stages')}})])],1):_c('pipeline-mini-graph',{attrs:{\"downstream-pipelines\":_vm.getDownstreamPipelines(item),\"pipeline-path\":item.path,\"pipeline-stages\":_vm.getStages(item),\"upstream-pipeline\":item.triggered_by},on:{\"miniGraphStageClick\":_vm.trackPipelineMiniGraph}})]}},{key:\"cell(actions)\",fn:function({ item }){return [(item.isLoading)?_c('div',{ref:\"actions\"},[_c('gl-skeleton-loader',{attrs:{\"height\":_vm.$options.cellHeight,\"width\":_vm.cellWidth('actions')}},[_c('rect',{attrs:{\"height\":\"20\",\"rx\":\"4\",\"ry\":\"4\",\"width\":_vm.cellWidth('actions')}})])],1):_c('pipeline-operations',{attrs:{\"pipeline\":item},on:{\"cancel-pipeline\":_vm.onCancelPipeline,\"refresh-pipelines-table\":_vm.onRefreshPipelinesTable,\"retry-pipeline\":_vm.onRetryPipeline}})]}},{key:\"row-details\",fn:function({ item }){return [(_vm.displayFailedJobsWidget(item))?_c('pipeline-failed-jobs-widget',{staticClass:\"-gl-my-3 -gl-ml-4\",attrs:{\"pipeline-iid\":item.iid,\"pipeline-path\":item.path,\"project-path\":_vm.getProjectPath(item)}}):_vm._e()]}}],null,true)})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container-fluid gl-my-1 gl-grid-rows-auto\"},[_c('div',{staticClass:\"row gl-my-3 gl-flex gl-flex-wrap gl-items-center gl-gap-y-4\",attrs:{\"data-testid\":\"widget-row\"}},[_c('div',{staticClass:\"align-items-center col-4 gl-flex gl-text-default\"},[_c('ci-icon',{attrs:{\"status\":_vm.job.detailedStatus}}),_vm._v(\" \"),_c('gl-link',{staticClass:\"gl-ml-2 !gl-text-default !gl-no-underline\",attrs:{\"href\":_vm.detailsPath,\"data-testid\":\"job-name-link\"}},[_vm._v(_vm._s(_vm.job.name))])],1),_vm._v(\" \"),_c('div',{staticClass:\"col-2 gl-flex gl-items-center\",attrs:{\"data-testid\":\"job-stage-name\"}},[_vm._v(\"\\n \"+_vm._s(_vm.job.stage.name)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"col-2 gl-flex gl-items-center\"},[_c('gl-link',{attrs:{\"href\":_vm.detailsPath,\"data-testid\":\"job-id-link\"}},[_vm._v(\"#\"+_vm._s(_vm.parsedJobId))])],1),_vm._v(\" \"),(!_vm.canRetryJob)?_c('gl-tooltip',{attrs:{\"target\":() => _vm.$refs.retryBtn,\"placement\":\"top\"}},[_vm._v(\"\\n \"+_vm._s(_vm.tooltipErrorText)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"col-4 gl-flex gl-max-w-full gl-flex-grow gl-justify-end gl-gap-3\"},[_c('root-cause-analysis-button',{attrs:{\"job-gid\":_vm.job.id,\"job-status-group\":_vm.statusGroup,\"can-troubleshoot-job\":_vm.canTroubleshootJob,\"is-build\":_vm.isBuildJob}}),_vm._v(\" \"),_c('span',{ref:\"retryBtn\"},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"disabled\":!_vm.canRetryJob,\"icon\":\"retry\",\"category\":\"secondary\",\"loading\":_vm.isLoadingAction,\"title\":_vm.$options.i18n.retry,\"aria-label\":_vm.$options.i18n.retry,\"data-testid\":\"retry-button\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.retryJob.apply(null, arguments)}}})],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!./failed_job_details.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./failed_job_details.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlLink, GlTooltip, GlTooltipDirective } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { __, s__, sprintf } from '~/locale';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { BRIDGE_KIND, BUILD_KIND } from '~/ci/pipeline_details/graph/constants';\nimport RetryMrFailedJobMutation from '~/ci/merge_requests/graphql/mutations/retry_mr_failed_job.mutation.graphql';\nimport RootCauseAnalysisButton from 'ee_else_ce/ci/job_details/components/root_cause_analysis_button.vue';\n\nexport default {\n components: {\n CiIcon,\n GlButton,\n GlLink,\n GlTooltip,\n RootCauseAnalysisButton,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n SafeHtml,\n },\n props: {\n job: {\n type: Object,\n required: true,\n },\n canTroubleshootJob: {\n type: Boolean,\n required: true,\n },\n },\n data() {\n return {\n isLoadingAction: false,\n };\n },\n computed: {\n canRetryJob() {\n return this.job.retryable && this.job.userPermissions.updateBuild && !this.isBridgeJob;\n },\n detailedStatus() {\n return this.job?.detailedStatus;\n },\n detailsPath() {\n return this.detailedStatus?.detailsPath;\n },\n statusGroup() {\n return this.detailedStatus?.group;\n },\n isBridgeJob() {\n return this.job.kind === BRIDGE_KIND;\n },\n parsedJobId() {\n return getIdFromGraphQLId(this.job.id);\n },\n tooltipErrorText() {\n return this.isBridgeJob\n ? this.$options.i18n.cannotRetryTrigger\n : this.$options.i18n.cannotRetry;\n },\n tooltipText() {\n return sprintf(this.$options.i18n.jobActionTooltipText, { jobName: this.job.name });\n },\n isBuildJob() {\n return this.job.kind === BUILD_KIND;\n },\n },\n methods: {\n async retryJob() {\n try {\n this.isLoadingAction = true;\n\n const {\n data: {\n jobRetry: { errors },\n },\n } = await this.$apollo.mutate({\n mutation: RetryMrFailedJobMutation,\n variables: { id: this.job.id },\n });\n\n if (errors.length > 0) {\n throw new Error(errors[0]);\n }\n\n this.$emit('job-retried', this.job.name);\n } catch (error) {\n createAlert({ message: error?.message || this.$options.i18n.retryError });\n } finally {\n this.isLoadingAction = false;\n }\n },\n },\n i18n: {\n cannotReadBuild: s__(\"Job|You do not have permission to read this job's log.\"),\n cannotRetry: s__('Job|You do not have permission to run this job again.'),\n cannotRetryTrigger: s__('Job|You cannot rerun trigger jobs from this list.'),\n jobActionTooltipText: s__('Pipelines|Retry %{jobName} Job'),\n retry: __('Run again'),\n retryError: __('There was an error while running this job again'),\n },\n};\n</script>\n<template>\n <div class=\"container-fluid gl-my-1 gl-grid-rows-auto\">\n <div\n class=\"row gl-my-3 gl-flex gl-flex-wrap gl-items-center gl-gap-y-4\"\n data-testid=\"widget-row\"\n >\n <div class=\"align-items-center col-4 gl-flex gl-text-default\">\n <ci-icon :status=\"job.detailedStatus\" />\n <gl-link\n class=\"gl-ml-2 !gl-text-default !gl-no-underline\"\n :href=\"detailsPath\"\n data-testid=\"job-name-link\"\n >{{ job.name }}</gl-link\n >\n </div>\n <div class=\"col-2 gl-flex gl-items-center\" data-testid=\"job-stage-name\">\n {{ job.stage.name }}\n </div>\n <div class=\"col-2 gl-flex gl-items-center\">\n <gl-link :href=\"detailsPath\" data-testid=\"job-id-link\">#{{ parsedJobId }}</gl-link>\n </div>\n <gl-tooltip v-if=\"!canRetryJob\" :target=\"() => $refs.retryBtn\" placement=\"top\">\n {{ tooltipErrorText }}\n </gl-tooltip>\n <div class=\"col-4 gl-flex gl-max-w-full gl-flex-grow gl-justify-end gl-gap-3\">\n <root-cause-analysis-button\n :job-gid=\"job.id\"\n :job-status-group=\"statusGroup\"\n :can-troubleshoot-job=\"canTroubleshootJob\"\n :is-build=\"isBuildJob\"\n />\n\n <span ref=\"retryBtn\">\n <gl-button\n v-gl-tooltip\n :disabled=\"!canRetryJob\"\n icon=\"retry\"\n category=\"secondary\"\n :loading=\"isLoadingAction\"\n :title=\"$options.i18n.retry\"\n :aria-label=\"$options.i18n.retry\"\n data-testid=\"retry-button\"\n @click.stop=\"retryJob\"\n />\n </span>\n </div>\n </div>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./failed_job_details.vue?vue&type=template&id=46f26962\"\nimport script from \"./failed_job_details.vue?vue&type=script&lang=js\"\nexport * from \"./failed_job_details.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export const POLL_INTERVAL = 10000;\n","<script>\nimport { GlAlert, GlLink, GlLoadingIcon, GlSprintf } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { __, s__, sprintf } from '~/locale';\nimport { getQueryHeaders } from '~/ci/pipeline_details/graph/utils';\nimport { graphqlEtagPipelinePath } from '~/ci/pipeline_details/utils';\nimport { toggleQueryPollingByVisibility } from '~/graphql_shared/utils';\nimport getPipelineFailedJobs from '~/ci/pipelines_page/graphql/queries/get_pipeline_failed_jobs.query.graphql';\nimport { sortJobsByStatus } from './utils';\nimport FailedJobDetails from './failed_job_details.vue';\nimport { POLL_INTERVAL } from './constants';\n\nconst JOB_ID_HEADER = __('ID');\nconst JOB_NAME_HEADER = __('Name');\nconst STAGE_HEADER = __('Stage');\n\nexport default {\n components: {\n GlAlert,\n GlLink,\n GlLoadingIcon,\n GlSprintf,\n FailedJobDetails,\n },\n inject: ['graphqlPath'],\n props: {\n isMaximumJobLimitReached: {\n required: true,\n type: Boolean,\n },\n pipelineIid: {\n type: Number,\n required: true,\n },\n pipelinePath: {\n required: true,\n type: String,\n },\n projectPath: {\n type: String,\n required: true,\n },\n },\n data() {\n return {\n failedJobs: [],\n isLoadingMore: false,\n canTroubleshootJob: false,\n };\n },\n apollo: {\n failedJobs: {\n context() {\n return getQueryHeaders(this.graphqlResourceEtag);\n },\n query: getPipelineFailedJobs,\n pollInterval: POLL_INTERVAL,\n variables() {\n return {\n fullPath: this.projectPath,\n pipelineIid: this.pipelineIid,\n };\n },\n update(data) {\n const jobs = data?.project?.pipeline?.jobs?.nodes || [];\n return sortJobsByStatus(jobs);\n },\n result({ data }) {\n const pipeline = data?.project?.pipeline;\n this.canTroubleshootJob = pipeline?.troubleshootJobWithAi || false;\n },\n error(e) {\n createAlert({ message: e?.message || this.$options.i18n.fetchError, variant: 'danger' });\n },\n },\n },\n computed: {\n graphqlResourceEtag() {\n return graphqlEtagPipelinePath(this.graphqlPath, this.pipelineIid);\n },\n isInitialLoading() {\n return this.isLoading && !this.isLoadingMore;\n },\n isLoading() {\n return this.$apollo.queries.failedJobs.loading;\n },\n },\n mounted() {\n toggleQueryPollingByVisibility(this.$apollo.queries.failedJobs, POLL_INTERVAL);\n },\n methods: {\n async retryJob(jobName) {\n await this.refetchJobs();\n\n this.$emit('job-retried');\n\n this.$toast.show(sprintf(this.$options.i18n.retriedJobsSuccess, { jobName }));\n },\n async refetchJobs() {\n this.isLoadingMore = true;\n\n try {\n await this.$apollo.queries.failedJobs.refetch();\n } catch {\n createAlert({ message: this.$options.i18n.fetchError });\n } finally {\n this.isLoadingMore = false;\n }\n },\n },\n columns: [\n { text: JOB_NAME_HEADER, class: 'col-4' },\n { text: STAGE_HEADER, class: 'col-2' },\n { text: JOB_ID_HEADER, class: 'col-2' },\n ],\n i18n: {\n maximumJobLimitAlert: {\n title: s__('Pipelines|Maximum list size reached'),\n message: s__(\n `Pipelines| The list can only display 100 jobs. To view all jobs, %{linkStart}go to this pipeline's details page.%{linkEnd}`,\n ),\n },\n fetchError: __('There was a problem fetching failed jobs'),\n retriedJobsSuccess: __('%{jobName} job is being retried'),\n },\n};\n</script>\n\n<template>\n <div class=\"gl-mb-4\">\n <gl-loading-icon v-if=\"isInitialLoading\" class=\"gl-p-4\" />\n <div v-else class=\"container-fluid gl-grid-rows-auto\">\n <gl-alert\n v-if=\"isMaximumJobLimitReached\"\n :title=\"$options.i18n.maximumJobLimitAlert.title\"\n variant=\"warning\"\n class=\"gl-mt-4\"\n >\n <gl-sprintf :message=\"$options.i18n.maximumJobLimitAlert.message\">\n <template #link=\"{ content }\">\n <gl-link class=\"!gl-no-underline\" :href=\"pipelinePath\" target=\"_blank\">\n {{ content }}\n </gl-link>\n </template>\n </gl-sprintf>\n </gl-alert>\n <div class=\"row gl-my-4 gl-text-default\">\n <div\n v-for=\"col in $options.columns\"\n :key=\"col.text\"\n class=\"gl-flex gl-font-bold\"\n :class=\"col.class\"\n data-testid=\"header\"\n >\n {{ col.text }}\n </div>\n </div>\n </div>\n <failed-job-details\n v-for=\"job in failedJobs\"\n :key=\"job.id\"\n :job=\"job\"\n :can-troubleshoot-job=\"canTroubleshootJob\"\n @job-retried=\"retryJob\"\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!./failed_jobs_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!./failed_jobs_list.vue?vue&type=script&lang=js\"","export const isFailedJob = (job = {}) => {\n return job?.detailedStatus?.group === 'failed' || false;\n};\n\nexport const sortJobsByStatus = (jobs = []) => {\n const newJobs = [...jobs];\n\n return newJobs.sort((a) => {\n if (isFailedJob(a)) {\n return -1;\n }\n\n return 1;\n });\n};\n","import { render, staticRenderFns } from \"./failed_jobs_list.vue?vue&type=template&id=2b892e9f\"\nimport script from \"./failed_jobs_list.vue?vue&type=script&lang=js\"\nexport * from \"./failed_jobs_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-mb-4\"},[(_vm.isInitialLoading)?_c('gl-loading-icon',{staticClass:\"gl-p-4\"}):_c('div',{staticClass:\"container-fluid gl-grid-rows-auto\"},[(_vm.isMaximumJobLimitReached)?_c('gl-alert',{staticClass:\"gl-mt-4\",attrs:{\"title\":_vm.$options.i18n.maximumJobLimitAlert.title,\"variant\":\"warning\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.maximumJobLimitAlert.message},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{staticClass:\"!gl-no-underline\",attrs:{\"href\":_vm.pipelinePath,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(content)+\"\\n \")])]}}],null,false,616764878)})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"row gl-my-4 gl-text-default\"},_vm._l((_vm.$options.columns),function(col){return _c('div',{key:col.text,staticClass:\"gl-flex gl-font-bold\",class:col.class,attrs:{\"data-testid\":\"header\"}},[_vm._v(\"\\n \"+_vm._s(col.text)+\"\\n \")])}),0)],1),_vm._v(\" \"),_vm._l((_vm.failedJobs),function(job){return _c('failed-job-details',{key:job.id,attrs:{\"job\":job,\"can-troubleshoot-job\":_vm.canTroubleshootJob},on:{\"job-retried\":_vm.retryJob}})})],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!./pipeline_failed_jobs_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!./pipeline_failed_jobs_widget.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlButton, GlIcon } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport CrudComponent from '~/vue_shared/components/crud_component.vue';\nimport { __ } from '~/locale';\nimport { getQueryHeaders } from '~/ci/pipeline_details/graph/utils';\nimport { graphqlEtagPipelinePath } from '~/ci/pipeline_details/utils';\nimport { toggleQueryPollingByVisibility } from '~/graphql_shared/utils';\nimport getPipelineFailedJobsCount from '../../graphql/queries/get_pipeline_failed_jobs_count.query.graphql';\nimport FailedJobsList from './failed_jobs_list.vue';\nimport { POLL_INTERVAL } from './constants';\n\nexport default {\n fetchError: __('An error occured fetching failed jobs count'),\n components: {\n GlBadge,\n GlButton,\n GlIcon,\n FailedJobsList,\n CrudComponent,\n },\n inject: ['fullPath', 'graphqlPath'],\n props: {\n pipelineIid: {\n required: true,\n type: Number,\n },\n pipelinePath: {\n required: true,\n type: String,\n },\n projectPath: {\n required: true,\n type: String,\n },\n },\n apollo: {\n failedJobsCount: {\n context() {\n return getQueryHeaders(this.graphqlResourceEtag);\n },\n query: getPipelineFailedJobsCount,\n variables() {\n return {\n fullPath: this.projectPath,\n pipelineIid: this.pipelineIid,\n };\n },\n update({ project }) {\n this.isPipelineActive = project?.pipeline?.active || false;\n\n return project?.pipeline?.jobs?.count || 0;\n },\n error() {\n createAlert({ message: this.$options.fetchError });\n },\n },\n },\n data() {\n return {\n failedJobsCount: 0,\n isExpanded: false,\n // explicity set to null so watcher can detect\n // reactivity changes for polling\n isPipelineActive: null,\n };\n },\n computed: {\n graphqlResourceEtag() {\n return graphqlEtagPipelinePath(this.graphqlPath, this.pipelineIid);\n },\n bodyClasses() {\n return this.isExpanded ? '' : 'gl-hidden';\n },\n failedJobsCountBadge() {\n return `${this.isMaximumJobLimitReached ? '100+' : this.failedJobsCount}`;\n },\n iconName() {\n return this.isExpanded ? 'chevron-down' : 'chevron-right';\n },\n isMaximumJobLimitReached() {\n return this.failedJobsCount > 100;\n },\n },\n watch: {\n isPipelineActive(active) {\n if (!active) {\n this.$apollo.queries.failedJobsCount.stopPolling();\n } else {\n this.$apollo.queries.failedJobsCount.startPolling(POLL_INTERVAL);\n // ensure we only toggle polling back on tab switch\n // if the pipeline is active\n toggleQueryPollingByVisibility(this.$apollo.queries.failedJobsCount, POLL_INTERVAL);\n }\n },\n },\n beforeDestroy() {\n this.$apollo.queries.failedJobsCount.stopPolling();\n },\n methods: {\n toggleWidget() {\n this.isExpanded = !this.isExpanded;\n },\n async refetchCount() {\n try {\n // \"pause\" polling during manual refetch of count\n // to avoid redundant calls\n this.$apollo.queries.failedJobsCount.stopPolling();\n await this.$apollo.queries.failedJobsCount.refetch();\n } catch {\n createAlert({ message: this.$options.fetchError });\n } finally {\n if (this.isPipelineActive) {\n this.$apollo.queries.failedJobsCount.startPolling(POLL_INTERVAL);\n }\n }\n },\n },\n ariaControlsId: 'pipeline-failed-jobs-widget',\n};\n</script>\n<template>\n <crud-component\n :id=\"$options.ariaControlsId\"\n class=\"expandable-card\"\n :class=\"{ 'is-collapsed gl-border-transparent hover:gl-border-default': !isExpanded }\"\n data-testid=\"failed-jobs-card\"\n @click=\"toggleWidget\"\n >\n <template #title>\n <gl-button\n variant=\"link\"\n class=\"!gl-text-subtle\"\n :aria-expanded=\"isExpanded.toString()\"\n :aria-controls=\"$options.ariaControlsId\"\n data-testid=\"toggle-button\"\n @click=\"toggleWidget\"\n >\n <gl-icon :name=\"iconName\" class=\"gl-mr-2\" />\n <span class=\"gl-font-bold gl-text-subtle\">\n {{ __('Failed jobs') }}\n </span>\n </gl-button>\n </template>\n <template #count>\n <gl-badge>\n {{ failedJobsCountBadge }}\n </gl-badge>\n </template>\n <template #actions>\n <gl-button\n v-if=\"isExpanded\"\n href=\"https://gitlab.com/gitlab-org/gitlab/-/issues/502436\"\n data-testid=\"feedback-button\"\n size=\"small\"\n >\n {{ __('Leave feedback') }}\n </gl-button>\n </template>\n <failed-jobs-list\n v-if=\"isExpanded\"\n :is-maximum-job-limit-reached=\"isMaximumJobLimitReached\"\n :pipeline-iid=\"pipelineIid\"\n :pipeline-path=\"pipelinePath\"\n :project-path=\"projectPath\"\n @job-retried=\"refetchCount\"\n />\n </crud-component>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_failed_jobs_widget.vue?vue&type=template&id=4fb45960\"\nimport script from \"./pipeline_failed_jobs_widget.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_failed_jobs_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('crud-component',{staticClass:\"expandable-card\",class:{ 'is-collapsed gl-border-transparent hover:gl-border-default': !_vm.isExpanded },attrs:{\"id\":_vm.$options.ariaControlsId,\"data-testid\":\"failed-jobs-card\"},on:{\"click\":_vm.toggleWidget},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('gl-button',{staticClass:\"!gl-text-subtle\",attrs:{\"variant\":\"link\",\"aria-expanded\":_vm.isExpanded.toString(),\"aria-controls\":_vm.$options.ariaControlsId,\"data-testid\":\"toggle-button\"},on:{\"click\":_vm.toggleWidget}},[_c('gl-icon',{staticClass:\"gl-mr-2\",attrs:{\"name\":_vm.iconName}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-font-bold gl-text-subtle\"},[_vm._v(\"\\n \"+_vm._s(_vm.__('Failed jobs'))+\"\\n \")])],1)]},proxy:true},{key:\"count\",fn:function(){return [_c('gl-badge',[_vm._v(\"\\n \"+_vm._s(_vm.failedJobsCountBadge)+\"\\n \")])]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.isExpanded)?_c('gl-button',{attrs:{\"href\":\"https://gitlab.com/gitlab-org/gitlab/-/issues/502436\",\"data-testid\":\"feedback-button\",\"size\":\"small\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Leave feedback'))+\"\\n \")]):_vm._e()]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),_vm._v(\" \"),(_vm.isExpanded)?_c('failed-jobs-list',{attrs:{\"is-maximum-job-limit-reached\":_vm.isMaximumJobLimitReached,\"pipeline-iid\":_vm.pipelineIid,\"pipeline-path\":_vm.pipelinePath,\"project-path\":_vm.projectPath},on:{\"job-retried\":_vm.refetchCount}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport {\n GlAlert,\n GlDisclosureDropdown,\n GlSearchBoxByType,\n GlLoadingIcon,\n GlTooltipDirective,\n} from '@gitlab/ui';\nimport fuzzaldrinPlus from 'fuzzaldrin-plus';\nimport axios from '~/lib/utils/axios_utils';\nimport { __, s__ } from '~/locale';\nimport Tracking from '~/tracking';\nimport { TRACKING_CATEGORIES } from '../../constants';\n\nexport const i18n = {\n searchPlaceholder: __('Search artifacts'),\n downloadArtifacts: __('Download artifacts'),\n artifactsFetchErrorMessage: s__('Pipelines|Could not load artifacts.'),\n artifactsFetchWarningMessage: s__(\n 'Pipelines|Failed to update. Please reload page to update the list of artifacts.',\n ),\n emptyArtifactsMessage: __('No artifacts found'),\n};\n\nexport default {\n i18n,\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: {\n GlAlert,\n GlDisclosureDropdown,\n GlSearchBoxByType,\n GlLoadingIcon,\n },\n mixins: [Tracking.mixin()],\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 },\n data() {\n return {\n artifacts: [],\n hasError: false,\n isLoading: false,\n searchQuery: '',\n isNewPipeline: false,\n };\n },\n computed: {\n hasArtifacts() {\n return this.artifacts.length > 0;\n },\n filteredArtifacts() {\n return this.searchQuery.length > 0\n ? fuzzaldrinPlus.filter(this.artifacts, this.searchQuery, { key: 'name' })\n : this.artifacts;\n },\n items() {\n return this.filteredArtifacts.map(({ name, path }) => ({\n text: name,\n href: path,\n extraAttrs: {\n download: '',\n rel: 'nofollow',\n 'data-testid': 'artifact-item',\n },\n }));\n },\n },\n watch: {\n pipelineId() {\n this.isNewPipeline = true;\n },\n },\n methods: {\n fetchArtifacts() {\n // refactor tracking based on action once this dropdown supports\n // actions other than artifacts\n this.track('click_artifacts_dropdown', { label: TRACKING_CATEGORIES.table });\n\n // Preserve the last good list and present it if a request fails\n const oldArtifacts = [...this.artifacts];\n this.artifacts = [];\n\n this.hasError = false;\n this.isLoading = true;\n\n // Replace the placeholder with the ID of the pipeline we are viewing\n const endpoint = this.artifactsEndpoint.replace(\n this.artifactsEndpointPlaceholder,\n this.pipelineId,\n );\n return axios\n .get(endpoint)\n .then(({ data }) => {\n this.artifacts = data.artifacts;\n this.isNewPipeline = false;\n })\n .catch(() => {\n this.hasError = true;\n if (!this.isNewPipeline) {\n this.artifacts = oldArtifacts;\n }\n })\n .finally(() => {\n this.isLoading = false;\n });\n },\n onDisclosureDropdownShown() {\n this.fetchArtifacts();\n },\n onDisclosureDropdownHidden() {\n this.searchQuery = '';\n },\n },\n};\n</script>\n<template>\n <gl-disclosure-dropdown\n v-gl-tooltip\n class=\"gl-text-left\"\n :title=\"$options.i18n.downloadArtifacts\"\n :toggle-text=\"$options.i18n.downloadArtifacts\"\n :aria-label=\"$options.i18n.downloadArtifacts\"\n :items=\"items\"\n icon=\"download\"\n placement=\"bottom-end\"\n text-sr-only\n data-testid=\"pipeline-multi-actions-dropdown\"\n @shown=\"onDisclosureDropdownShown\"\n @hidden=\"onDisclosureDropdownHidden\"\n >\n <template #header>\n <div\n aria-hidden=\"true\"\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-text-strong gl-border-b-solid\"\n >\n {{ $options.i18n.downloadArtifacts }}\n </div>\n <div v-if=\"hasArtifacts\" class=\"gl-border-b-1 gl-border-b-dropdown gl-border-b-solid\">\n <gl-search-box-by-type\n ref=\"searchInput\"\n v-model.trim=\"searchQuery\"\n :placeholder=\"$options.i18n.searchPlaceholder\"\n borderless\n autofocus\n />\n </div>\n <gl-alert\n v-if=\"hasError && !hasArtifacts\"\n variant=\"danger\"\n :dismissible=\"false\"\n data-testid=\"artifacts-fetch-error\"\n >\n {{ $options.i18n.artifactsFetchErrorMessage }}\n </gl-alert>\n </template>\n\n <gl-loading-icon v-if=\"isLoading\" class=\"gl-m-3\" size=\"sm\" />\n <p\n v-else-if=\"filteredArtifacts.length === 0\"\n class=\"gl-m-0 gl-px-4 gl-py-3 gl-text-subtle\"\n data-testid=\"artifacts-empty-message\"\n >\n {{ $options.i18n.emptyArtifactsMessage }}\n </p>\n\n <template #footer>\n <p\n v-if=\"hasError && hasArtifacts\"\n class=\"gl-border-t gl-mb-0 gl-px-5 gl-py-4 gl-text-sm gl-text-subtle\"\n data-testid=\"artifacts-fetch-warning\"\n >\n {{ $options.i18n.artifactsFetchWarningMessage }}\n </p>\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_multi_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!./pipeline_multi_actions.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./pipeline_multi_actions.vue?vue&type=template&id=2399e4b9\"\nimport script from \"./pipeline_multi_actions.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_multi_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('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-text-left\",attrs:{\"title\":_vm.$options.i18n.downloadArtifacts,\"toggle-text\":_vm.$options.i18n.downloadArtifacts,\"aria-label\":_vm.$options.i18n.downloadArtifacts,\"items\":_vm.items,\"icon\":\"download\",\"placement\":\"bottom-end\",\"text-sr-only\":\"\",\"data-testid\":\"pipeline-multi-actions-dropdown\"},on:{\"shown\":_vm.onDisclosureDropdownShown,\"hidden\":_vm.onDisclosureDropdownHidden},scopedSlots:_vm._u([{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-text-strong gl-border-b-solid\",attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.downloadArtifacts)+\"\\n \")]),_vm._v(\" \"),(_vm.hasArtifacts)?_c('div',{staticClass:\"gl-border-b-1 gl-border-b-dropdown gl-border-b-solid\"},[_c('gl-search-box-by-type',{ref:\"searchInput\",attrs:{\"placeholder\":_vm.$options.i18n.searchPlaceholder,\"borderless\":\"\",\"autofocus\":\"\"},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"searchQuery\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.hasError && !_vm.hasArtifacts)?_c('gl-alert',{attrs:{\"variant\":\"danger\",\"dismissible\":false,\"data-testid\":\"artifacts-fetch-error\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.artifactsFetchErrorMessage)+\"\\n \")]):_vm._e()]},proxy:true},{key:\"footer\",fn:function(){return [(_vm.hasError && _vm.hasArtifacts)?_c('p',{staticClass:\"gl-border-t gl-mb-0 gl-px-5 gl-py-4 gl-text-sm gl-text-subtle\",attrs:{\"data-testid\":\"artifacts-fetch-warning\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.artifactsFetchWarningMessage)+\"\\n \")]):_vm._e()]},proxy:true}])},[_vm._v(\" \"),(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-m-3\",attrs:{\"size\":\"sm\"}}):(_vm.filteredArtifacts.length === 0)?_c('p',{staticClass:\"gl-m-0 gl-px-4 gl-py-3 gl-text-subtle\",attrs:{\"data-testid\":\"artifacts-empty-message\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.emptyArtifactsMessage)+\"\\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!./pipelines_manual_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!./pipelines_manual_actions.vue?vue&type=script&lang=js\"","<script>\nimport {\n GlDisclosureDropdown,\n GlDisclosureDropdownItem,\n GlIcon,\n GlLoadingIcon,\n GlTooltipDirective,\n} from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_via_gl_modal';\nimport { s__, __, sprintf } from '~/locale';\nimport Tracking from '~/tracking';\nimport GlCountdown from '~/vue_shared/components/gl_countdown.vue';\nimport { confirmJobConfirmationMessage } from '~/ci/pipeline_details/graph/utils';\nimport { TRACKING_CATEGORIES } from '../../constants';\nimport getPipelineActionsQuery from '../graphql/queries/get_pipeline_actions.query.graphql';\nimport jobPlayMutation from '../../jobs_page/graphql/mutations/job_play.mutation.graphql';\n\nexport default {\n name: 'PipelinesManualActions',\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: {\n GlCountdown,\n GlDisclosureDropdown,\n GlDisclosureDropdownItem,\n GlIcon,\n GlLoadingIcon,\n },\n mixins: [Tracking.mixin()],\n inject: ['fullPath', 'manualActionsLimit'],\n props: {\n iid: {\n type: Number,\n required: true,\n },\n },\n apollo: {\n actions: {\n query: getPipelineActionsQuery,\n variables() {\n return {\n fullPath: this.fullPath,\n iid: this.iid,\n limit: this.manualActionsLimit,\n };\n },\n skip() {\n return !this.hasDropdownBeenShown;\n },\n update({ project }) {\n return project?.pipeline?.jobs?.nodes || [];\n },\n },\n },\n data() {\n return {\n isLoading: false,\n actions: [],\n hasDropdownBeenShown: false,\n isDropdownVisible: false,\n };\n },\n computed: {\n isActionsLoading() {\n return this.$apollo.queries.actions.loading;\n },\n isDropdownLimitReached() {\n return this.actions.length === this.manualActionsLimit;\n },\n },\n methods: {\n async onClickAction(action) {\n if (action.scheduledAt) {\n const confirmationMessage = sprintf(\n s__(\n 'DelayedJobs|Are you sure you want to run %{jobName} immediately? Otherwise this job will run automatically after its timer finishes.',\n ),\n { jobName: action.name },\n );\n\n const confirmed = await confirmAction(confirmationMessage);\n\n if (!confirmed) {\n return;\n }\n } else if (action.detailedStatus.action.confirmationMessage) {\n const confirmed = await confirmJobConfirmationMessage(\n action.name,\n action.detailedStatus.action.confirmationMessage,\n );\n\n if (!confirmed) {\n return;\n }\n }\n this.isLoading = true;\n this.$apollo\n .mutate({\n mutation: jobPlayMutation,\n variables: {\n id: action.id,\n },\n })\n .then(() => {\n this.isLoading = false;\n this.$emit('refresh-pipeline-table');\n })\n .catch(() => {\n this.isLoading = false;\n createAlert({ message: __('An error occurred while making the request.') });\n });\n },\n fetchActions() {\n this.isDropdownVisible = true;\n this.hasDropdownBeenShown = true;\n\n this.$apollo.queries.actions.refetch();\n\n this.trackClick();\n },\n hideAction() {\n this.isDropdownVisible = false;\n },\n trackClick() {\n this.track('click_manual_actions', { label: TRACKING_CATEGORIES.table });\n },\n jobItem(job) {\n return {\n text: job.name,\n extraAttrs: {\n disabled: !job.canPlayJob,\n },\n };\n },\n },\n};\n</script>\n<template>\n <gl-disclosure-dropdown\n v-gl-tooltip.left=\"isDropdownVisible ? '' : __('Run manual or delayed jobs')\"\n :loading=\"isLoading\"\n data-testid=\"pipelines-manual-actions-dropdown\"\n right\n lazy\n icon=\"play\"\n @shown=\"fetchActions\"\n @hidden=\"hideAction\"\n >\n <gl-disclosure-dropdown-item v-if=\"isActionsLoading\">\n <template #list-item>\n <div class=\"gl-flex\">\n <gl-loading-icon class=\"mr-2\" />\n <span>{{ __('Loading...') }}</span>\n </div>\n </template>\n </gl-disclosure-dropdown-item>\n\n <gl-disclosure-dropdown-item\n v-for=\"action in actions\"\n v-else\n :key=\"action.id\"\n :item=\"jobItem(action)\"\n @action=\"onClickAction(action)\"\n >\n <template #list-item>\n <div class=\"gl-flex gl-flex-wrap gl-justify-between\">\n {{ action.name }}\n <span v-if=\"action.scheduledAt\">\n <gl-icon name=\"clock\" />\n <gl-countdown :end-date-string=\"action.scheduledAt\" />\n </span>\n </div>\n </template>\n </gl-disclosure-dropdown-item>\n\n <template #footer>\n <gl-disclosure-dropdown-item v-if=\"isDropdownLimitReached\">\n <template #list-item>\n <span class=\"gl-text-sm !gl-text-gray-300\" data-testid=\"limit-reached-msg\">\n {{ __('Showing first 50 actions.') }}\n </span>\n </template>\n </gl-disclosure-dropdown-item>\n </template>\n </gl-disclosure-dropdown>\n</template>\n","import { render, staticRenderFns } from \"./pipelines_manual_actions.vue?vue&type=template&id=41962a3e\"\nimport script from \"./pipelines_manual_actions.vue?vue&type=script&lang=js\"\nexport * from \"./pipelines_manual_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('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left\",value:(_vm.isDropdownVisible ? '' : _vm.__('Run manual or delayed jobs')),expression:\"isDropdownVisible ? '' : __('Run manual or delayed jobs')\",modifiers:{\"left\":true}}],attrs:{\"loading\":_vm.isLoading,\"data-testid\":\"pipelines-manual-actions-dropdown\",\"right\":\"\",\"lazy\":\"\",\"icon\":\"play\"},on:{\"shown\":_vm.fetchActions,\"hidden\":_vm.hideAction},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [(_vm.isDropdownLimitReached)?_c('gl-disclosure-dropdown-item',{scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('span',{staticClass:\"gl-text-sm !gl-text-gray-300\",attrs:{\"data-testid\":\"limit-reached-msg\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Showing first 50 actions.'))+\"\\n \")])]},proxy:true}],null,false,340575193)}):_vm._e()]},proxy:true}])},[(_vm.isActionsLoading)?_c('gl-disclosure-dropdown-item',{scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('div',{staticClass:\"gl-flex\"},[_c('gl-loading-icon',{staticClass:\"mr-2\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.__('Loading...')))])],1)]},proxy:true}],null,false,800703371)}):_vm._l((_vm.actions),function(action){return _c('gl-disclosure-dropdown-item',{key:action.id,attrs:{\"item\":_vm.jobItem(action)},on:{\"action\":function($event){return _vm.onClickAction(action)}},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-flex-wrap gl-justify-between\"},[_vm._v(\"\\n \"+_vm._s(action.name)+\"\\n \"),(action.scheduledAt)?_c('span',[_c('gl-icon',{attrs:{\"name\":\"clock\"}}),_vm._v(\" \"),_c('gl-countdown',{attrs:{\"end-date-string\":action.scheduledAt}})],1):_vm._e()])]},proxy:true}],null,true)})})],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!./pipeline_stop_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!./pipeline_stop_modal.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink, GlModal, GlSprintf } from '@gitlab/ui';\nimport { isEmpty } from 'lodash';\nimport { __, s__, sprintf } from '~/locale';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\n\n/**\n * Pipeline Stop Modal.\n *\n * Renders the modal used to confirm cancelling a pipeline.\n */\nexport default {\n components: {\n GlModal,\n GlLink,\n GlSprintf,\n CiIcon,\n },\n props: {\n pipeline: {\n type: Object,\n required: true,\n deep: true,\n },\n showConfirmationModal: {\n type: Boolean,\n required: true,\n },\n },\n computed: {\n hasRef() {\n return !isEmpty(this.pipeline.ref);\n },\n modalTitle() {\n return sprintf(\n s__('Pipeline|Stop pipeline #%{pipelineId}?'),\n {\n pipelineId: `${this.pipeline.id}`,\n },\n false,\n );\n },\n modalText() {\n return s__(`Pipeline|You're about to stop pipeline #%{pipelineId}.`);\n },\n primaryProps() {\n return {\n text: s__('Pipeline|Stop pipeline'),\n attributes: { variant: 'danger' },\n };\n },\n showModal: {\n get() {\n return this.showConfirmationModal;\n },\n set() {\n this.$emit('close-modal');\n },\n },\n },\n methods: {\n emitSubmit(event) {\n this.$emit('submit', event);\n },\n },\n cancelProps: { text: __('Cancel') },\n};\n</script>\n<template>\n <gl-modal\n v-model=\"showModal\"\n modal-id=\"confirmation-modal\"\n :title=\"modalTitle\"\n :action-primary=\"primaryProps\"\n :action-cancel=\"$options.cancelProps\"\n data-testid=\"pipeline-stop-modal\"\n @primary=\"emitSubmit($event)\"\n >\n <p>\n <gl-sprintf :message=\"modalText\">\n <template #pipelineId>\n <strong>{{ pipeline.id }}</strong>\n </template>\n </gl-sprintf>\n </p>\n\n <p>\n <ci-icon\n v-if=\"pipeline.details\"\n :status=\"pipeline.details.status\"\n class=\"vertical-align-middle\"\n />\n\n <span class=\"font-weight-bold\">{{ __('Pipeline') }}</span>\n\n <a :href=\"pipeline.path\" class=\"js-pipeline-path link-commit\">#{{ pipeline.id }}</a>\n <template v-if=\"hasRef\">\n {{ __('from') }}\n <a :href=\"pipeline.ref.path\" class=\"link-commit ref-name\">{{ pipeline.ref.name }}</a>\n </template>\n </p>\n\n <template v-if=\"pipeline.commit\">\n <p>\n <span class=\"font-weight-bold\">{{ __('Commit') }}</span>\n\n <gl-link :href=\"pipeline.commit.commit_path\" class=\"js-commit-sha commit-sha link-commit\">\n {{ pipeline.commit.short_id }}\n </gl-link>\n </p>\n <p>{{ pipeline.commit.title }}</p>\n </template>\n </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_stop_modal.vue?vue&type=template&id=2d48a191\"\nimport script from \"./pipeline_stop_modal.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_stop_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\":\"confirmation-modal\",\"title\":_vm.modalTitle,\"action-primary\":_vm.primaryProps,\"action-cancel\":_vm.$options.cancelProps,\"data-testid\":\"pipeline-stop-modal\"},on:{\"primary\":function($event){return _vm.emitSubmit($event)}},model:{value:(_vm.showModal),callback:function ($$v) {_vm.showModal=$$v},expression:\"showModal\"}},[_c('p',[_c('gl-sprintf',{attrs:{\"message\":_vm.modalText},scopedSlots:_vm._u([{key:\"pipelineId\",fn:function(){return [_c('strong',[_vm._v(_vm._s(_vm.pipeline.id))])]},proxy:true}])})],1),_vm._v(\" \"),_c('p',[(_vm.pipeline.details)?_c('ci-icon',{staticClass:\"vertical-align-middle\",attrs:{\"status\":_vm.pipeline.details.status}}):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.__('Pipeline')))]),_vm._v(\" \"),_c('a',{staticClass:\"js-pipeline-path link-commit\",attrs:{\"href\":_vm.pipeline.path}},[_vm._v(\"#\"+_vm._s(_vm.pipeline.id))]),_vm._v(\" \"),(_vm.hasRef)?[_vm._v(\"\\n \"+_vm._s(_vm.__('from'))+\"\\n \"),_c('a',{staticClass:\"link-commit ref-name\",attrs:{\"href\":_vm.pipeline.ref.path}},[_vm._v(_vm._s(_vm.pipeline.ref.name))])]:_vm._e()],2),_vm._v(\" \"),(_vm.pipeline.commit)?[_c('p',[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.__('Commit')))]),_vm._v(\" \"),_c('gl-link',{staticClass:\"js-commit-sha commit-sha link-commit\",attrs:{\"href\":_vm.pipeline.commit.commit_path}},[_vm._v(\"\\n \"+_vm._s(_vm.pipeline.commit.short_id)+\"\\n \")])],1),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.pipeline.commit.title))])]:_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!./pipeline_operations.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_operations.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlTooltipDirective } from '@gitlab/ui';\nimport Tracking from '~/tracking';\nimport { BUTTON_TOOLTIP_RETRY, BUTTON_TOOLTIP_CANCEL, TRACKING_CATEGORIES } from '~/ci/constants';\nimport PipelineMultiActions from './pipeline_multi_actions.vue';\nimport PipelinesManualActions from './pipelines_manual_actions.vue';\nimport PipelineStopModal from './pipeline_stop_modal.vue';\n\nexport default {\n BUTTON_TOOLTIP_RETRY,\n BUTTON_TOOLTIP_CANCEL,\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: {\n GlButton,\n PipelineMultiActions,\n PipelinesManualActions,\n PipelineStopModal,\n },\n mixins: [Tracking.mixin()],\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n },\n data() {\n return {\n isCanceling: false,\n isRetrying: false,\n showConfirmationModal: false,\n pipelineToCancel: this.pipeline,\n };\n },\n computed: {\n hasActions() {\n return (\n this.pipeline?.details?.has_manual_actions || this.pipeline?.details?.has_scheduled_actions\n );\n },\n },\n watch: {\n pipeline() {\n if (this.isCanceling || this.isRetrying) {\n this.isCanceling = false;\n this.isRetrying = false;\n }\n },\n },\n methods: {\n onCloseModal() {\n this.showConfirmationModal = false;\n },\n onConfirmCancelPipeline() {\n this.isCanceling = true;\n this.showConfirmationModal = false;\n\n this.$emit('cancel-pipeline', this.pipelineToCancel);\n },\n handleCancelClick() {\n this.showConfirmationModal = true;\n this.pipelineToCancel = this.pipeline;\n\n this.trackClick('click_cancel_button');\n },\n handleRetryClick() {\n this.isRetrying = true;\n\n this.trackClick('click_retry_button');\n\n this.$emit('retry-pipeline', this.pipeline);\n },\n trackClick(action) {\n this.track(action, { label: TRACKING_CATEGORIES.table });\n },\n },\n};\n</script>\n\n<template>\n <div class=\"gl-text-right\">\n <pipeline-stop-modal\n :pipeline=\"pipelineToCancel\"\n :show-confirmation-modal=\"showConfirmationModal\"\n @submit=\"onConfirmCancelPipeline\"\n @close-modal=\"onCloseModal\"\n />\n\n <div class=\"btn-group\">\n <pipelines-manual-actions\n v-if=\"hasActions\"\n :iid=\"pipeline.iid\"\n @refresh-pipeline-table=\"$emit('refresh-pipelines-table')\"\n />\n\n <gl-button\n v-if=\"pipeline.flags.retryable\"\n v-gl-tooltip.hover\n :aria-label=\"$options.BUTTON_TOOLTIP_RETRY\"\n :title=\"$options.BUTTON_TOOLTIP_RETRY\"\n :disabled=\"isRetrying\"\n :loading=\"isRetrying\"\n class=\"js-pipelines-retry-button\"\n data-testid=\"pipelines-retry-button\"\n icon=\"retry\"\n variant=\"default\"\n category=\"secondary\"\n @click=\"handleRetryClick\"\n />\n\n <gl-button\n v-if=\"pipeline.flags.cancelable\"\n v-gl-tooltip.hover\n :aria-label=\"$options.BUTTON_TOOLTIP_CANCEL\"\n :title=\"$options.BUTTON_TOOLTIP_CANCEL\"\n :loading=\"isCanceling\"\n :disabled=\"isCanceling\"\n icon=\"cancel\"\n variant=\"danger\"\n category=\"primary\"\n class=\"js-pipelines-cancel-button gl-ml-1\"\n data-testid=\"pipelines-cancel-button\"\n @click=\"handleCancelClick\"\n />\n\n <pipeline-multi-actions :pipeline-id=\"pipeline.id\" />\n </div>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_operations.vue?vue&type=template&id=8b2494d4\"\nimport script from \"./pipeline_operations.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_operations.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-text-right\"},[_c('pipeline-stop-modal',{attrs:{\"pipeline\":_vm.pipelineToCancel,\"show-confirmation-modal\":_vm.showConfirmationModal},on:{\"submit\":_vm.onConfirmCancelPipeline,\"close-modal\":_vm.onCloseModal}}),_vm._v(\" \"),_c('div',{staticClass:\"btn-group\"},[(_vm.hasActions)?_c('pipelines-manual-actions',{attrs:{\"iid\":_vm.pipeline.iid},on:{\"refresh-pipeline-table\":function($event){return _vm.$emit('refresh-pipelines-table')}}}):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.retryable)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"js-pipelines-retry-button\",attrs:{\"aria-label\":_vm.$options.BUTTON_TOOLTIP_RETRY,\"title\":_vm.$options.BUTTON_TOOLTIP_RETRY,\"disabled\":_vm.isRetrying,\"loading\":_vm.isRetrying,\"data-testid\":\"pipelines-retry-button\",\"icon\":\"retry\",\"variant\":\"default\",\"category\":\"secondary\"},on:{\"click\":_vm.handleRetryClick}}):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.cancelable)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"js-pipelines-cancel-button gl-ml-1\",attrs:{\"aria-label\":_vm.$options.BUTTON_TOOLTIP_CANCEL,\"title\":_vm.$options.BUTTON_TOOLTIP_CANCEL,\"loading\":_vm.isCanceling,\"disabled\":_vm.isCanceling,\"icon\":\"cancel\",\"variant\":\"danger\",\"category\":\"primary\",\"data-testid\":\"pipelines-cancel-button\"},on:{\"click\":_vm.handleCancelClick}}):_vm._e(),_vm._v(\" \"),_c('pipeline-multi-actions',{attrs:{\"pipeline-id\":_vm.pipeline.id}})],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!./pipeline_triggerer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_triggerer.vue?vue&type=script&lang=js\"","<script>\nimport { GlAvatarLink, GlAvatar, GlTooltipDirective } from '@gitlab/ui';\n\nexport default {\n components: {\n GlAvatarLink,\n GlAvatar,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n },\n computed: {\n user() {\n return this.pipeline.user;\n },\n },\n};\n</script>\n<template>\n <div class=\"pipeline-triggerer\" data-testid=\"pipeline-triggerer\">\n <gl-avatar-link v-if=\"user\" v-gl-tooltip :href=\"user.path\" :title=\"user.name\" class=\"gl-ml-3\">\n <gl-avatar :size=\"32\" :src=\"user.avatar_url\" />\n </gl-avatar-link>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_triggerer.vue?vue&type=template&id=469f9310\"\nimport script from \"./pipeline_triggerer.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_triggerer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\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:\"pipeline-triggerer\",attrs:{\"data-testid\":\"pipeline-triggerer\"}},[(_vm.user)?_c('gl-avatar-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-ml-3\",attrs:{\"href\":_vm.user.path,\"title\":_vm.user.name}},[_c('gl-avatar',{attrs:{\"size\":32,\"src\":_vm.user.avatar_url}})],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!./pipeline_labels.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_labels.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink, GlPopover, GlSprintf, GlTooltipDirective, GlBadge } from '@gitlab/ui';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { SCHEDULE_ORIGIN, API_ORIGIN, TRIGGER_ORIGIN } from '../constants';\n\nexport default {\n components: {\n GlBadge,\n GlLink,\n GlPopover,\n GlSprintf,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n inject: {\n pipelineSchedulesPath: {\n default: '',\n },\n },\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n },\n computed: {\n isScheduled() {\n return this.pipeline.source === SCHEDULE_ORIGIN;\n },\n isTriggered() {\n return this.pipeline.source === TRIGGER_ORIGIN;\n },\n isForked() {\n return this.pipeline?.project?.forked;\n },\n showMergedResultsBadge() {\n // A merge train pipeline is technically also a merged results pipeline,\n // but we want the badges to be mutually exclusive.\n return (\n this.pipeline.flags.merged_result_pipeline && !this.pipeline.flags.merge_train_pipeline\n );\n },\n autoDevopsTagId() {\n return `pipeline-url-autodevops-${this.pipeline.id}`;\n },\n autoDevopsHelpPath() {\n return helpPagePath('topics/autodevops/index.md');\n },\n isApi() {\n return this.pipeline.source === API_ORIGIN;\n },\n },\n};\n</script>\n<template>\n <div class=\"label-container gl-mt-1 gl-flex gl-flex-wrap gl-gap-2\">\n <gl-badge\n v-if=\"isScheduled\"\n v-gl-tooltip\n :href=\"pipelineSchedulesPath\"\n target=\"__blank\"\n :title=\"__('This pipeline was created by a schedule.')\"\n variant=\"info\"\n data-testid=\"pipeline-url-scheduled\"\n >{{ __('scheduled') }}</gl-badge\n >\n <gl-badge\n v-if=\"isTriggered\"\n v-gl-tooltip\n :title=\"__('This pipeline was created by an API call authenticated with a trigger token')\"\n variant=\"info\"\n data-testid=\"pipeline-url-triggered\"\n >{{ __('trigger token') }}</gl-badge\n >\n <gl-badge\n v-if=\"pipeline.flags.latest\"\n v-gl-tooltip\n :title=\"__('Latest pipeline for the most recent commit on this branch')\"\n variant=\"success\"\n data-testid=\"pipeline-url-latest\"\n >{{ __('latest') }}</gl-badge\n >\n <gl-badge\n v-if=\"pipeline.flags.merge_train_pipeline\"\n v-gl-tooltip\n :title=\"\n s__(\n 'Pipeline|This pipeline ran 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 variant=\"info\"\n data-testid=\"pipeline-url-train\"\n >{{ s__('Pipeline|merge train') }}</gl-badge\n >\n <gl-badge\n v-if=\"pipeline.flags.yaml_errors\"\n v-gl-tooltip\n :title=\"pipeline.yaml_errors\"\n variant=\"danger\"\n data-testid=\"pipeline-url-yaml\"\n >{{ __('yaml invalid') }}</gl-badge\n >\n <gl-badge\n v-if=\"pipeline.flags.failure_reason\"\n v-gl-tooltip\n :title=\"pipeline.failure_reason\"\n variant=\"danger\"\n data-testid=\"pipeline-url-failure\"\n >{{ __('error') }}</gl-badge\n >\n <template v-if=\"pipeline.flags.auto_devops\">\n <gl-link\n :id=\"autoDevopsTagId\"\n tabindex=\"0\"\n data-testid=\"pipeline-url-autodevops\"\n role=\"button\"\n >\n <gl-badge variant=\"info\">\n {{ __('Auto DevOps') }}\n </gl-badge>\n </gl-link>\n <gl-popover :target=\"autoDevopsTagId\" triggers=\"focus\" placement=\"top\">\n <template #title>\n <div class=\"gl-font-normal gl-leading-normal\">\n <gl-sprintf\n :message=\"\n __(\n 'This pipeline makes use of a predefined CI/CD configuration enabled by %{strongStart}Auto DevOps.%{strongEnd}',\n )\n \"\n >\n <template #strong=\"{ content }\">\n <b>{{ content }}</b>\n </template>\n </gl-sprintf>\n </div>\n </template>\n <gl-link\n :href=\"autoDevopsHelpPath\"\n data-testid=\"pipeline-url-autodevops-link\"\n target=\"_blank\"\n >\n {{ __('Learn more about Auto DevOps') }}\n </gl-link>\n </gl-popover>\n </template>\n\n <gl-badge v-if=\"pipeline.flags.stuck\" variant=\"warning\" data-testid=\"pipeline-url-stuck\">{{\n __('stuck')\n }}</gl-badge>\n <gl-badge\n v-if=\"pipeline.flags.detached_merge_request_pipeline\"\n v-gl-tooltip\n :title=\"\n s__(\n `Pipeline|This pipeline ran on the contents of the merge request's source branch, not the target branch.`,\n )\n \"\n variant=\"info\"\n data-testid=\"pipeline-url-detached\"\n >{{ s__('Pipeline|merge request') }}</gl-badge\n >\n <gl-badge\n v-if=\"showMergedResultsBadge\"\n v-gl-tooltip\n :title=\"\n s__(\n `Pipeline|This pipeline ran on the contents of the merge request combined with the contents of the target branch.`,\n )\n \"\n variant=\"info\"\n data-testid=\"pipeline-url-merged-results\"\n >{{ s__('Pipeline|merged results') }}</gl-badge\n >\n <gl-badge\n v-if=\"isForked\"\n v-gl-tooltip\n :title=\"__('Pipeline ran in fork of project')\"\n variant=\"info\"\n data-testid=\"pipeline-url-fork\"\n >{{ __('fork') }}</gl-badge\n >\n <gl-badge\n v-if=\"isApi\"\n v-gl-tooltip\n :title=\"__('This pipeline was triggered using the api')\"\n variant=\"info\"\n data-testid=\"pipeline-api-badge\"\n >{{ s__('Pipeline|api') }}</gl-badge\n >\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_labels.vue?vue&type=template&id=20bafd32\"\nimport script from \"./pipeline_labels.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_labels.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\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:\"label-container gl-mt-1 gl-flex gl-flex-wrap gl-gap-2\"},[(_vm.isScheduled)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"href\":_vm.pipelineSchedulesPath,\"target\":\"__blank\",\"title\":_vm.__('This pipeline was created by a schedule.'),\"variant\":\"info\",\"data-testid\":\"pipeline-url-scheduled\"}},[_vm._v(_vm._s(_vm.__('scheduled')))]):_vm._e(),_vm._v(\" \"),(_vm.isTriggered)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.__('This pipeline was created by an API call authenticated with a trigger token'),\"variant\":\"info\",\"data-testid\":\"pipeline-url-triggered\"}},[_vm._v(_vm._s(_vm.__('trigger token')))]):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.latest)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.__('Latest pipeline for the most recent commit on this branch'),\"variant\":\"success\",\"data-testid\":\"pipeline-url-latest\"}},[_vm._v(_vm._s(_vm.__('latest')))]):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.merge_train_pipeline)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.s__(\n 'Pipeline|This pipeline ran on the contents of the merge request combined with the contents of all other merge requests queued for merging into the target branch.',\n ),\"variant\":\"info\",\"data-testid\":\"pipeline-url-train\"}},[_vm._v(_vm._s(_vm.s__('Pipeline|merge train')))]):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.yaml_errors)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.pipeline.yaml_errors,\"variant\":\"danger\",\"data-testid\":\"pipeline-url-yaml\"}},[_vm._v(_vm._s(_vm.__('yaml invalid')))]):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.failure_reason)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.pipeline.failure_reason,\"variant\":\"danger\",\"data-testid\":\"pipeline-url-failure\"}},[_vm._v(_vm._s(_vm.__('error')))]):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.auto_devops)?[_c('gl-link',{attrs:{\"id\":_vm.autoDevopsTagId,\"tabindex\":\"0\",\"data-testid\":\"pipeline-url-autodevops\",\"role\":\"button\"}},[_c('gl-badge',{attrs:{\"variant\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Auto DevOps'))+\"\\n \")])],1),_vm._v(\" \"),_c('gl-popover',{attrs:{\"target\":_vm.autoDevopsTagId,\"triggers\":\"focus\",\"placement\":\"top\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('div',{staticClass:\"gl-font-normal gl-leading-normal\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.__(\n 'This pipeline makes use of a predefined CI/CD configuration enabled by %{strongStart}Auto DevOps.%{strongEnd}',\n )},scopedSlots:_vm._u([{key:\"strong\",fn:function({ content }){return [_c('b',[_vm._v(_vm._s(content))])]}}],null,false,1478500124)})],1)]},proxy:true}],null,false,2946223184)},[_vm._v(\" \"),_c('gl-link',{attrs:{\"href\":_vm.autoDevopsHelpPath,\"data-testid\":\"pipeline-url-autodevops-link\",\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Learn more about Auto DevOps'))+\"\\n \")])],1)]:_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.stuck)?_c('gl-badge',{attrs:{\"variant\":\"warning\",\"data-testid\":\"pipeline-url-stuck\"}},[_vm._v(_vm._s(_vm.__('stuck')))]):_vm._e(),_vm._v(\" \"),(_vm.pipeline.flags.detached_merge_request_pipeline)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.s__(\n `Pipeline|This pipeline ran on the contents of the merge request's source branch, not the target branch.`,\n ),\"variant\":\"info\",\"data-testid\":\"pipeline-url-detached\"}},[_vm._v(_vm._s(_vm.s__('Pipeline|merge request')))]):_vm._e(),_vm._v(\" \"),(_vm.showMergedResultsBadge)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.s__(\n `Pipeline|This pipeline ran on the contents of the merge request combined with the contents of the target branch.`,\n ),\"variant\":\"info\",\"data-testid\":\"pipeline-url-merged-results\"}},[_vm._v(_vm._s(_vm.s__('Pipeline|merged results')))]):_vm._e(),_vm._v(\" \"),(_vm.isForked)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.__('Pipeline ran in fork of project'),\"variant\":\"info\",\"data-testid\":\"pipeline-url-fork\"}},[_vm._v(_vm._s(_vm.__('fork')))]):_vm._e(),_vm._v(\" \"),(_vm.isApi)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.__('This pipeline was triggered using the api'),\"variant\":\"info\",\"data-testid\":\"pipeline-api-badge\"}},[_vm._v(_vm._s(_vm.s__('Pipeline|api')))]):_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!./pipeline_url.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_url.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlLink, GlTooltipDirective } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport Tracking from '~/tracking';\nimport TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue';\nimport UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue';\nimport { ICONS, PIPELINE_ID_KEY, PIPELINE_IID_KEY, TRACKING_CATEGORIES } from '~/ci/constants';\nimport PipelineLabels from './pipeline_labels.vue';\n\nexport default {\n components: {\n GlIcon,\n GlLink,\n PipelineLabels,\n TooltipOnTruncate,\n UserAvatarLink,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n mixins: [Tracking.mixin()],\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n pipelineIdType: {\n type: String,\n required: false,\n default: PIPELINE_ID_KEY,\n validator(value) {\n return value === PIPELINE_IID_KEY || value === PIPELINE_ID_KEY;\n },\n },\n refClass: {\n type: String,\n required: false,\n default: '',\n },\n },\n computed: {\n mergeRequestRef() {\n return this.pipeline?.merge_request;\n },\n commitRef() {\n return this.pipeline?.ref;\n },\n commitTag() {\n return this.commitRef?.tag;\n },\n commitUrl() {\n return this.pipeline?.commit?.commit_path;\n },\n commitShortSha() {\n return this.pipeline?.commit?.short_id;\n },\n refUrl() {\n return this.commitRef?.ref_url || this.commitRef?.path;\n },\n tooltipTitle() {\n return this.mergeRequestRef?.title || this.commitRef?.name;\n },\n commitAuthor() {\n let commitAuthorInformation;\n const pipelineCommit = this.pipeline?.commit;\n const pipelineCommitAuthor = pipelineCommit?.author;\n\n if (!pipelineCommit) {\n return null;\n }\n\n // 1. person who is an author of a commit might be a GitLab user\n if (pipelineCommitAuthor) {\n // 2. if person who is an author of a commit is a GitLab user\n // they can have a GitLab avatar\n if (pipelineCommitAuthor?.avatar_url) {\n commitAuthorInformation = pipelineCommitAuthor;\n\n // 3. If GitLab user does not have avatar, they might have a Gravatar\n } else if (pipelineCommit?.author_gravatar_url) {\n commitAuthorInformation = {\n ...pipelineCommitAuthor,\n avatar_url: pipelineCommit.author_gravatar_url,\n };\n }\n // 4. If committer is not a GitLab User, they can have a Gravatar\n } else {\n commitAuthorInformation = {\n avatar_url: pipelineCommit?.author_gravatar_url,\n path: `mailto:${pipelineCommit?.author_email}`,\n username: pipelineCommit.author_name,\n };\n }\n\n return commitAuthorInformation;\n },\n commitIcon() {\n let name = '';\n\n if (this.commitTag) {\n name = ICONS.TAG;\n } else if (this.mergeRequestRef) {\n name = ICONS.MR;\n } else {\n name = ICONS.BRANCH;\n }\n\n return name;\n },\n commitIconTooltipTitle() {\n switch (this.commitIcon) {\n case ICONS.TAG:\n return __('Tag');\n case ICONS.MR:\n return __('Merge Request');\n default:\n return __('Branch');\n }\n },\n commitTitle() {\n return this.pipeline?.commit?.title;\n },\n pipelineIdentifier() {\n const { name, path, pipeline_schedule: pipelineSchedule } = this.pipeline || {};\n\n // pipeline name should take priority over\n // pipeline schedule description\n if (name) {\n return {\n text: name,\n link: path,\n };\n }\n\n if (pipelineSchedule) {\n return {\n text: pipelineSchedule.description,\n link: pipelineSchedule.path,\n };\n }\n\n return false;\n },\n },\n methods: {\n trackClick(action) {\n this.track(action, { label: TRACKING_CATEGORIES.table });\n },\n },\n};\n</script>\n<template>\n <div class=\"pipeline-tags\" data-testid=\"pipeline-url-table-cell\">\n <div v-if=\"pipelineIdentifier\" class=\"gl-mb-2\" data-testid=\"pipeline-identifier-container\">\n <span class=\"gl-flex\">\n <tooltip-on-truncate\n :title=\"pipelineIdentifier.text\"\n class=\"gl-grow gl-truncate gl-text-default\"\n >\n <gl-link :href=\"pipelineIdentifier.link\" data-testid=\"pipeline-identifier-link\">{{\n pipelineIdentifier.text\n }}</gl-link>\n </tooltip-on-truncate>\n </span>\n </div>\n\n <div\n v-if=\"!pipelineIdentifier\"\n class=\"commit-title gl-mb-2\"\n data-testid=\"commit-title-container\"\n >\n <span v-if=\"commitTitle\" class=\"gl-flex\">\n <tooltip-on-truncate\n :title=\"commitTitle\"\n class=\"-gl-mb-3 -gl-ml-3 -gl-mr-3 -gl-mt-3 gl-grow gl-truncate gl-p-3\"\n >\n <gl-link\n :href=\"commitUrl\"\n class=\"commit-row-message\"\n data-testid=\"commit-title\"\n @click=\"trackClick('click_commit_title')\"\n >{{ commitTitle }}</gl-link\n >\n </tooltip-on-truncate>\n </span>\n <span v-else class=\"gl-text-subtle\">{{ __(\"Can't find HEAD commit for this branch\") }}</span>\n </div>\n\n <div class=\"gl-mb-2\">\n <gl-link\n :href=\"pipeline.path\"\n class=\"gl-mr-1\"\n data-testid=\"pipeline-url-link\"\n @click=\"trackClick('click_pipeline_id')\"\n >#{{ pipeline[pipelineIdType] }}</gl-link\n >\n <!--Commit row-->\n <div class=\"gl-inline-flex gl-rounded-base gl-bg-gray-50 gl-px-2 gl-text-subtle\">\n <tooltip-on-truncate :title=\"tooltipTitle\" truncate-target=\"child\" placement=\"top\">\n <gl-icon\n v-gl-tooltip\n :name=\"commitIcon\"\n :title=\"commitIconTooltipTitle\"\n :size=\"12\"\n data-testid=\"commit-icon-type\"\n variant=\"subtle\"\n />\n <gl-link\n v-if=\"mergeRequestRef\"\n :href=\"mergeRequestRef.path\"\n class=\"gl-text-sm !gl-text-subtle gl-font-monospace\"\n :class=\"refClass\"\n data-testid=\"merge-request-ref\"\n @click=\"trackClick('click_mr_ref')\"\n >{{ mergeRequestRef.iid }}</gl-link\n >\n <gl-link\n v-else\n :href=\"refUrl\"\n class=\"gl-text-sm !gl-text-subtle gl-font-monospace\"\n :class=\"refClass\"\n data-testid=\"commit-ref-name\"\n @click=\"trackClick('click_commit_name')\"\n >{{ commitRef.name }}</gl-link\n >\n </tooltip-on-truncate>\n </div>\n\n <div class=\"gl-inline-block gl-rounded-base gl-bg-gray-50 gl-px-2 gl-text-sm gl-text-default\">\n <gl-icon\n v-gl-tooltip\n name=\"commit\"\n class=\"commit-icon gl-mr-1\"\n :title=\"__('Commit')\"\n :size=\"12\"\n data-testid=\"commit-icon\"\n />\n <gl-link\n :href=\"commitUrl\"\n class=\"gl-mr-0 gl-text-sm !gl-text-subtle gl-font-monospace\"\n data-testid=\"commit-short-sha\"\n @click=\"trackClick('click_commit_sha')\"\n >{{ commitShortSha }}</gl-link\n >\n </div>\n\n <user-avatar-link\n v-if=\"commitAuthor\"\n :link-href=\"commitAuthor.path\"\n :img-src=\"commitAuthor.avatar_url\"\n :img-size=\"16\"\n :img-alt=\"commitAuthor.name\"\n :tooltip-text=\"commitAuthor.name\"\n class=\"gl-ml-1\"\n />\n <!--End of commit row-->\n </div>\n <pipeline-labels :pipeline=\"pipeline\" />\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_url.vue?vue&type=template&id=5545556a\"\nimport script from \"./pipeline_url.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_url.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\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:\"pipeline-tags\",attrs:{\"data-testid\":\"pipeline-url-table-cell\"}},[(_vm.pipelineIdentifier)?_c('div',{staticClass:\"gl-mb-2\",attrs:{\"data-testid\":\"pipeline-identifier-container\"}},[_c('span',{staticClass:\"gl-flex\"},[_c('tooltip-on-truncate',{staticClass:\"gl-grow gl-truncate gl-text-default\",attrs:{\"title\":_vm.pipelineIdentifier.text}},[_c('gl-link',{attrs:{\"href\":_vm.pipelineIdentifier.link,\"data-testid\":\"pipeline-identifier-link\"}},[_vm._v(_vm._s(_vm.pipelineIdentifier.text))])],1)],1)]):_vm._e(),_vm._v(\" \"),(!_vm.pipelineIdentifier)?_c('div',{staticClass:\"commit-title gl-mb-2\",attrs:{\"data-testid\":\"commit-title-container\"}},[(_vm.commitTitle)?_c('span',{staticClass:\"gl-flex\"},[_c('tooltip-on-truncate',{staticClass:\"-gl-mb-3 -gl-ml-3 -gl-mr-3 -gl-mt-3 gl-grow gl-truncate gl-p-3\",attrs:{\"title\":_vm.commitTitle}},[_c('gl-link',{staticClass:\"commit-row-message\",attrs:{\"href\":_vm.commitUrl,\"data-testid\":\"commit-title\"},on:{\"click\":function($event){return _vm.trackClick('click_commit_title')}}},[_vm._v(_vm._s(_vm.commitTitle))])],1)],1):_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(_vm._s(_vm.__(\"Can't find HEAD commit for this branch\")))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"gl-mb-2\"},[_c('gl-link',{staticClass:\"gl-mr-1\",attrs:{\"href\":_vm.pipeline.path,\"data-testid\":\"pipeline-url-link\"},on:{\"click\":function($event){return _vm.trackClick('click_pipeline_id')}}},[_vm._v(\"#\"+_vm._s(_vm.pipeline[_vm.pipelineIdType]))]),_vm._v(\" \"),_c('div',{staticClass:\"gl-inline-flex gl-rounded-base gl-bg-gray-50 gl-px-2 gl-text-subtle\"},[_c('tooltip-on-truncate',{attrs:{\"title\":_vm.tooltipTitle,\"truncate-target\":\"child\",\"placement\":\"top\"}},[_c('gl-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"name\":_vm.commitIcon,\"title\":_vm.commitIconTooltipTitle,\"size\":12,\"data-testid\":\"commit-icon-type\",\"variant\":\"subtle\"}}),_vm._v(\" \"),(_vm.mergeRequestRef)?_c('gl-link',{staticClass:\"gl-text-sm !gl-text-subtle gl-font-monospace\",class:_vm.refClass,attrs:{\"href\":_vm.mergeRequestRef.path,\"data-testid\":\"merge-request-ref\"},on:{\"click\":function($event){return _vm.trackClick('click_mr_ref')}}},[_vm._v(_vm._s(_vm.mergeRequestRef.iid))]):_c('gl-link',{staticClass:\"gl-text-sm !gl-text-subtle gl-font-monospace\",class:_vm.refClass,attrs:{\"href\":_vm.refUrl,\"data-testid\":\"commit-ref-name\"},on:{\"click\":function($event){return _vm.trackClick('click_commit_name')}}},[_vm._v(_vm._s(_vm.commitRef.name))])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-inline-block gl-rounded-base gl-bg-gray-50 gl-px-2 gl-text-sm gl-text-default\"},[_c('gl-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"commit-icon gl-mr-1\",attrs:{\"name\":\"commit\",\"title\":_vm.__('Commit'),\"size\":12,\"data-testid\":\"commit-icon\"}}),_vm._v(\" \"),_c('gl-link',{staticClass:\"gl-mr-0 gl-text-sm !gl-text-subtle gl-font-monospace\",attrs:{\"href\":_vm.commitUrl,\"data-testid\":\"commit-short-sha\"},on:{\"click\":function($event){return _vm.trackClick('click_commit_sha')}}},[_vm._v(_vm._s(_vm.commitShortSha))])],1),_vm._v(\" \"),(_vm.commitAuthor)?_c('user-avatar-link',{staticClass:\"gl-ml-1\",attrs:{\"link-href\":_vm.commitAuthor.path,\"img-src\":_vm.commitAuthor.avatar_url,\"img-size\":16,\"img-alt\":_vm.commitAuthor.name,\"tooltip-text\":_vm.commitAuthor.name}}):_vm._e()],1),_vm._v(\" \"),_c('pipeline-labels',{attrs:{\"pipeline\":_vm.pipeline}})],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_ago.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { formatTime } from '~/lib/utils/datetime_utility';\nimport timeagoMixin from '~/vue_shared/mixins/timeago';\n\nexport default {\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: { GlIcon },\n mixins: [timeagoMixin],\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n fontSize: {\n type: String,\n required: false,\n default: 'gl-text-sm',\n validator: (fontSize) => ['gl-text-sm', 'gl-font-md'].includes(fontSize),\n },\n },\n computed: {\n duration() {\n return this.pipeline?.details?.duration;\n },\n durationFormatted() {\n return formatTime(this.duration * 1000);\n },\n finishedTime() {\n return this.pipeline?.details?.finished_at || this.pipeline?.finishedAt;\n },\n },\n};\n</script>\n<template>\n <div class=\"gl-flex gl-flex-col gl-items-end lg:gl-items-start\" :class=\"fontSize\">\n <p\n v-if=\"duration\"\n class=\"gl-m-0 gl-inline-flex gl-items-center gl-whitespace-nowrap gl-text-subtle\"\n data-testid=\"duration\"\n >\n <gl-icon name=\"timer\" class=\"gl-mr-2\" :size=\"12\" />\n {{ durationFormatted }}\n </p>\n\n <p\n v-if=\"finishedTime\"\n class=\"gl-m-0 gl-inline-flex gl-items-center gl-whitespace-nowrap gl-text-subtle\"\n data-testid=\"finished-at\"\n >\n <gl-icon name=\"calendar\" class=\"gl-mr-2\" :size=\"12\" data-testid=\"calendar-icon\" />\n\n <time\n v-gl-tooltip\n :title=\"tooltipTitle(finishedTime)\"\n :datetime=\"finishedTime\"\n data-placement=\"top\"\n data-container=\"body\"\n >\n {{ timeFormatted(finishedTime) }}\n </time>\n </p>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./time_ago.vue?vue&type=template&id=11c81d51\"\nimport script from \"./time_ago.vue?vue&type=script&lang=js\"\nexport * from \"./time_ago.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\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-items-end lg:gl-items-start\",class:_vm.fontSize},[(_vm.duration)?_c('p',{staticClass:\"gl-m-0 gl-inline-flex gl-items-center gl-whitespace-nowrap gl-text-subtle\",attrs:{\"data-testid\":\"duration\"}},[_c('gl-icon',{staticClass:\"gl-mr-2\",attrs:{\"name\":\"timer\",\"size\":12}}),_vm._v(\"\\n \"+_vm._s(_vm.durationFormatted)+\"\\n \")],1):_vm._e(),_vm._v(\" \"),(_vm.finishedTime)?_c('p',{staticClass:\"gl-m-0 gl-inline-flex gl-items-center gl-whitespace-nowrap gl-text-subtle\",attrs:{\"data-testid\":\"finished-at\"}},[_c('gl-icon',{staticClass:\"gl-mr-2\",attrs:{\"name\":\"calendar\",\"size\":12,\"data-testid\":\"calendar-icon\"}}),_vm._v(\" \"),_c('time',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.tooltipTitle(_vm.finishedTime),\"datetime\":_vm.finishedTime,\"data-placement\":\"top\",\"data-container\":\"body\"}},[_vm._v(\"\\n \"+_vm._s(_vm.timeFormatted(_vm.finishedTime))+\"\\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!./pipeline_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!./pipeline_status_badge.vue?vue&type=script&lang=js\"","<script>\nimport { TRACKING_CATEGORIES } from '~/ci/constants';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport Tracking from '~/tracking';\nimport PipelinesTimeago from './time_ago.vue';\n\nexport default {\n components: {\n CiIcon,\n PipelinesTimeago,\n },\n mixins: [Tracking.mixin()],\n props: {\n pipeline: {\n type: Object,\n required: true,\n },\n },\n computed: {\n pipelineStatus() {\n return this.pipeline?.details?.status ?? {};\n },\n },\n methods: {\n trackClick() {\n this.track('click_ci_status_badge', { label: TRACKING_CATEGORIES.table });\n },\n },\n};\n</script>\n\n<template>\n <div>\n <ci-icon\n class=\"gl-mb-2\"\n :status=\"pipelineStatus\"\n show-status-text\n @ciStatusBadgeClick=\"trackClick\"\n />\n <pipelines-timeago :pipeline=\"pipeline\" />\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_status_badge.vue?vue&type=template&id=31de1773\"\nimport script from \"./pipeline_status_badge.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ci-icon',{staticClass:\"gl-mb-2\",attrs:{\"status\":_vm.pipelineStatus,\"show-status-text\":\"\"},on:{\"ciStatusBadgeClick\":_vm.trackClick}}),_vm._v(\" \"),_c('pipelines-timeago',{attrs:{\"pipeline\":_vm.pipeline}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlSkeletonLoader, GlTableLite, GlTooltipDirective } from '@gitlab/ui';\nimport { GlBreakpointInstance } from '@gitlab/ui/dist/utils';\nimport { cleanLeadingSeparator } from '~/lib/utils/url_utility';\nimport { s__, __ } from '~/locale';\nimport Tracking from '~/tracking';\nimport { PIPELINE_ID_KEY, PIPELINE_IID_KEY, TRACKING_CATEGORIES } from '~/ci/constants';\nimport { keepLatestDownstreamPipelines } from '~/ci/pipeline_details/utils/parsing_utils';\nimport PipelineFailedJobsWidget from '~/ci/pipelines_page/components/failure_widget/pipeline_failed_jobs_widget.vue';\nimport PipelineMiniGraph from '~/ci/pipeline_mini_graph/pipeline_mini_graph.vue';\nimport PipelineOperations from '../pipelines_page/components/pipeline_operations.vue';\nimport PipelineTriggerer from '../pipelines_page/components/pipeline_triggerer.vue';\nimport PipelineUrl from '../pipelines_page/components/pipeline_url.vue';\nimport PipelineStatusBadge from '../pipelines_page/components/pipeline_status_badge.vue';\n\nconst HIDE_TD_ON_MOBILE = '!gl-hidden lg:!gl-table-cell';\n\n/**\n * Pipelines Table\n *\n * Presentational component of a table of pipelines. This component does not\n * fetch the list of pipelines and instead expects it as a prop.\n * GraphQL actions for pipelines, such as retrying, canceling, etc.\n * are handled within this component.\n *\n * Use this `legacy_pipelines_table_wrapper` if you need a fully functional REST component.\n *\n * IMPORTANT: When using this component, make sure to handle the following events:\n * 1- @refresh-pipeline-table\n * 2- @cancel-pipeline\n * 3- @retry-pipeline\n *\n */\n\nexport default {\n name: 'PipelinesTable',\n cellHeight: 50,\n components: {\n GlSkeletonLoader,\n GlTableLite,\n PipelineFailedJobsWidget,\n PipelineMiniGraph,\n PipelineOperations,\n PipelineStatusBadge,\n PipelineTriggerer,\n PipelineUrl,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n mixins: [Tracking.mixin()],\n inject: {\n useFailedJobsWidget: {\n default: false,\n },\n },\n props: {\n isCreatingPipeline: {\n type: Boolean,\n required: false,\n default: false,\n },\n pipelines: {\n type: Array,\n required: true,\n },\n pipelineIdType: {\n type: String,\n required: false,\n default: PIPELINE_ID_KEY,\n validator(value) {\n return value === PIPELINE_IID_KEY || value === PIPELINE_ID_KEY;\n },\n },\n },\n computed: {\n isMobile() {\n return ['md', 'sm', 'xs'].includes(GlBreakpointInstance.getBreakpointSize());\n },\n tableFields() {\n return [\n {\n key: 'status',\n label: s__('Pipeline|Status'),\n columnClass: 'gl-w-3/20',\n tdClass: this.tdClasses,\n thAttr: { 'data-testid': 'status-th' },\n },\n {\n key: 'pipeline',\n label: __('Pipeline'),\n tdClass: `${this.tdClasses}`,\n columnClass: 'gl-w-6/20',\n thAttr: { 'data-testid': 'pipeline-th' },\n },\n {\n key: 'triggerer',\n label: s__('Pipeline|Created by'),\n tdClass: `${this.tdClasses} ${HIDE_TD_ON_MOBILE}`,\n columnClass: 'gl-w-3/20',\n thAttr: { 'data-testid': 'triggerer-th' },\n },\n {\n key: 'stages',\n label: s__('Pipeline|Stages'),\n tdClass: this.tdClasses,\n columnClass: 'gl-w-5/20',\n thAttr: { 'data-testid': 'stages-th' },\n },\n {\n key: 'actions',\n tdClass: this.tdClasses,\n columnClass: 'gl-w-4/20',\n thAttr: { 'data-testid': 'actions-th' },\n },\n ];\n },\n tdClasses() {\n return '!gl-border-none';\n },\n pipelinesWithDetails() {\n let { pipelines } = this;\n\n if (this.isCreatingPipeline) {\n pipelines = [{ isLoading: true }, ...this.pipelines];\n }\n\n if (this.useFailedJobsWidget) {\n pipelines = pipelines.map((p) => {\n return p.failed_builds_count > 0 ? { ...p, _showDetails: true } : p;\n });\n }\n\n return pipelines;\n },\n },\n methods: {\n cellWidth(ref) {\n return this.$refs[ref]?.offsetWidth;\n },\n displayFailedJobsWidget(item) {\n return !item.isLoading && this.useFailedJobsWidget;\n },\n failedJobsCount(pipeline) {\n return pipeline?.failed_builds_count || 0;\n },\n getDownstreamPipelines(pipeline) {\n const downstream = pipeline.triggered;\n return keepLatestDownstreamPipelines(downstream);\n },\n getProjectPath(item) {\n return cleanLeadingSeparator(item.project.full_path);\n },\n getStages(item) {\n return item?.details?.stages || [];\n },\n onCancelPipeline(pipeline) {\n this.$emit('cancel-pipeline', pipeline);\n },\n onRefreshPipelinesTable() {\n this.$emit('refresh-pipelines-table');\n },\n onRetryPipeline(pipeline) {\n this.$emit('retry-pipeline', pipeline);\n },\n rowClass(item) {\n return this.displayFailedJobsWidget(item) && this.failedJobsCount(item) > 0\n ? ''\n : '!gl-border-b';\n },\n setLoaderPosition(ref) {\n if (this.isMobile) {\n return this.cellWidth(ref) / 2;\n }\n\n return 0;\n },\n trackPipelineMiniGraph() {\n this.track('click_minigraph', { label: TRACKING_CATEGORIES.table });\n },\n },\n TBODY_TR_ATTR: {\n 'data-testid': 'pipeline-table-row',\n },\n};\n</script>\n<template>\n <div class=\"ci-table\">\n <gl-table-lite\n :fields=\"tableFields\"\n :items=\"pipelinesWithDetails\"\n :tbody-tr-attr=\"$options.TBODY_TR_ATTR\"\n :tbody-tr-class=\"rowClass\"\n details-td-class=\"!gl-pt-2\"\n stacked=\"lg\"\n fixed\n >\n <template #head(actions)>\n <slot name=\"table-header-actions\">\n <span class=\"gl-block gl-text-right\">{{ s__('Pipeline|Actions') }}</span>\n </slot>\n </template>\n\n <template #table-colgroup=\"{ fields }\">\n <col v-for=\"field in fields\" :key=\"field.key\" :class=\"field.columnClass\" />\n </template>\n\n <template #cell(status)=\"{ item }\">\n <div v-if=\"item.isLoading\" ref=\"status\">\n <gl-skeleton-loader :height=\"$options.cellHeight\" :width=\"cellWidth('status')\">\n <rect height=\"30\" rx=\"4\" ry=\"4\" :width=\"cellWidth('status')\" />\n </gl-skeleton-loader>\n </div>\n <pipeline-status-badge v-else :pipeline=\"item\" />\n </template>\n\n <template #cell(pipeline)=\"{ item }\">\n <div v-if=\"item.isLoading\" ref=\"pipeline\">\n <gl-skeleton-loader :height=\"$options.cellHeight\" :width=\"cellWidth('pipeline')\">\n <rect height=\"14\" rx=\"4\" ry=\"4\" :width=\"cellWidth('pipeline')\" />\n <rect\n height=\"10\"\n rx=\"4\"\n ry=\"4\"\n :width=\"cellWidth('pipeline') / 2\"\n :x=\"setLoaderPosition('pipeline')\"\n y=\"20\"\n />\n </gl-skeleton-loader>\n </div>\n <pipeline-url\n v-else\n :pipeline=\"item\"\n :pipeline-id-type=\"pipelineIdType\"\n ref-color=\"gl-text-default\"\n />\n </template>\n\n <template #cell(triggerer)=\"{ item }\">\n <div v-if=\"item.isLoading\" ref=\"triggerer\" class=\"gl-ml-3\">\n <gl-skeleton-loader :height=\"$options.cellHeight\" :width=\"cellWidth('triggerer')\">\n <rect :height=\"34\" rx=\"50\" ry=\"50\" :width=\"34\" />\n </gl-skeleton-loader>\n </div>\n <pipeline-triggerer v-else :pipeline=\"item\" />\n </template>\n\n <template #cell(stages)=\"{ item }\">\n <div v-if=\"item.isLoading\" ref=\"stages\">\n <gl-skeleton-loader :height=\"$options.cellHeight\" :width=\"cellWidth('stages')\">\n <rect height=\"20\" rx=\"10\" ry=\"10\" :width=\"cellWidth('stages')\" />\n </gl-skeleton-loader>\n </div>\n <pipeline-mini-graph\n v-else\n :downstream-pipelines=\"getDownstreamPipelines(item)\"\n :pipeline-path=\"item.path\"\n :pipeline-stages=\"getStages(item)\"\n :upstream-pipeline=\"item.triggered_by\"\n @miniGraphStageClick=\"trackPipelineMiniGraph\"\n />\n </template>\n\n <template #cell(actions)=\"{ item }\">\n <div v-if=\"item.isLoading\" ref=\"actions\">\n <gl-skeleton-loader :height=\"$options.cellHeight\" :width=\"cellWidth('actions')\">\n <rect height=\"20\" rx=\"4\" ry=\"4\" :width=\"cellWidth('actions')\" />\n </gl-skeleton-loader>\n </div>\n <pipeline-operations\n v-else\n :pipeline=\"item\"\n @cancel-pipeline=\"onCancelPipeline\"\n @refresh-pipelines-table=\"onRefreshPipelinesTable\"\n @retry-pipeline=\"onRetryPipeline\"\n />\n </template>\n\n <template #row-details=\"{ item }\">\n <pipeline-failed-jobs-widget\n v-if=\"displayFailedJobsWidget(item)\"\n :pipeline-iid=\"item.iid\"\n :pipeline-path=\"item.path\"\n :project-path=\"getProjectPath(item)\"\n class=\"-gl-my-3 -gl-ml-4\"\n />\n </template>\n </gl-table-lite>\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!./pipelines_table.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_table.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./pipelines_table.vue?vue&type=template&id=5538a9f6\"\nimport script from \"./pipelines_table.vue?vue&type=script&lang=js\"\nexport * from \"./pipelines_table.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\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 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","export {default as path} from \"./path.js\";\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\":\"detailsPath\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":77}};\n doc.loc.source = {\"body\":\"fragment Job on CiJob {\\n id\\n detailedStatus {\\n id\\n detailsPath\\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","/**\n * An event hub with a Vue instance like API\n *\n * NOTE: This is a derivative work from [mitt][1] v1.2.0 which is licensed by\n * [MIT License][2] © [Jason Miller][3]\n *\n * [1]: https://github.com/developit/mitt\n * [2]: https://opensource.org/licenses/MIT\n * [3]: https://jasonformat.com/\n */\nclass EventHub {\n constructor() {\n this.$_all = new Map();\n }\n\n dispose() {\n this.$_all.clear();\n }\n\n /**\n * Register an event handler for the given type.\n *\n * @param {string|symbol} type Type of event to listen for\n * @param {Function} handler Function to call in response to given event\n */\n $on(type, handler) {\n const handlers = this.$_all.get(type);\n const added = handlers && handlers.push(handler);\n\n if (!added) {\n this.$_all.set(type, [handler]);\n }\n }\n\n /**\n * Remove an event handler or all handlers for the given type.\n *\n * @param {string|symbol} type Type of event to unregister `handler`\n * @param {Function} handler Handler function to remove\n */\n $off(type, handler) {\n const handlers = this.$_all.get(type) || [];\n\n const newHandlers = handler ? handlers.filter((x) => x !== handler) : [];\n\n if (newHandlers.length) {\n this.$_all.set(type, newHandlers);\n } else {\n this.$_all.delete(type);\n }\n }\n\n /**\n * Add an event listener to type but only trigger it once\n *\n * @param {string|symbol} type Type of event to listen for\n * @param {Function} handler Handler function to call in response to event\n */\n $once(type, handler) {\n const wrapHandler = (...args) => {\n this.$off(type, wrapHandler);\n handler(...args);\n };\n this.$on(type, wrapHandler);\n }\n\n /**\n * Invoke all handlers for the given type.\n *\n * @param {string|symbol} type The event type to invoke\n * @param {Any} [evt] Any value passed to each handler\n */\n $emit(type, ...args) {\n const handlers = this.$_all.get(type) || [];\n\n handlers.forEach((handler) => {\n handler(...args);\n });\n }\n}\n\n/**\n * Return a Vue like event hub\n *\n * - $on\n * - $off\n * - $once\n * - $emit\n *\n * We'd like to shy away from using a full fledged Vue instance from this in the future.\n */\nexport default () => {\n return new EventHub();\n};\n","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","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","(function() {\n var AcronymResult, computeScore, emptyAcronymResult, isAcronymFullWord, isMatch, isSeparator, isWordEnd, isWordStart, miss_coeff, pos_bonus, scoreAcronyms, scoreCharacter, scoreConsecutives, scoreExact, scoreExactMatch, scorePattern, scorePosition, scoreSize, tau_size, wm;\n\n wm = 150;\n\n pos_bonus = 20;\n\n tau_size = 150;\n\n miss_coeff = 0.75;\n\n exports.score = function(string, query, options) {\n var allowErrors, preparedQuery, score, string_lw;\n preparedQuery = options.preparedQuery, allowErrors = options.allowErrors;\n if (!(allowErrors || isMatch(string, preparedQuery.core_lw, preparedQuery.core_up))) {\n return 0;\n }\n string_lw = string.toLowerCase();\n score = computeScore(string, string_lw, preparedQuery);\n return Math.ceil(score);\n };\n\n exports.isMatch = isMatch = function(subject, query_lw, query_up) {\n var i, j, m, n, qj_lw, qj_up, si;\n m = subject.length;\n n = query_lw.length;\n if (!m || n > m) {\n return false;\n }\n i = -1;\n j = -1;\n while (++j < n) {\n qj_lw = query_lw.charCodeAt(j);\n qj_up = query_up.charCodeAt(j);\n while (++i < m) {\n si = subject.charCodeAt(i);\n if (si === qj_lw || si === qj_up) {\n break;\n }\n }\n if (i === m) {\n return false;\n }\n }\n return true;\n };\n\n exports.computeScore = computeScore = function(subject, subject_lw, preparedQuery) {\n var acro, acro_score, align, csc_diag, csc_row, csc_score, csc_should_rebuild, i, j, m, miss_budget, miss_left, n, pos, query, query_lw, record_miss, score, score_diag, score_row, score_up, si_lw, start, sz;\n query = preparedQuery.query;\n query_lw = preparedQuery.query_lw;\n m = subject.length;\n n = query.length;\n acro = scoreAcronyms(subject, subject_lw, query, query_lw);\n acro_score = acro.score;\n if (acro.count === n) {\n return scoreExact(n, m, acro_score, acro.pos);\n }\n pos = subject_lw.indexOf(query_lw);\n if (pos > -1) {\n return scoreExactMatch(subject, subject_lw, query, query_lw, pos, n, m);\n }\n score_row = new Array(n);\n csc_row = new Array(n);\n sz = scoreSize(n, m);\n miss_budget = Math.ceil(miss_coeff * n) + 5;\n miss_left = miss_budget;\n csc_should_rebuild = true;\n j = -1;\n while (++j < n) {\n score_row[j] = 0;\n csc_row[j] = 0;\n }\n i = -1;\n while (++i < m) {\n si_lw = subject_lw[i];\n if (!si_lw.charCodeAt(0) in preparedQuery.charCodes) {\n if (csc_should_rebuild) {\n j = -1;\n while (++j < n) {\n csc_row[j] = 0;\n }\n csc_should_rebuild = false;\n }\n continue;\n }\n score = 0;\n score_diag = 0;\n csc_diag = 0;\n record_miss = true;\n csc_should_rebuild = true;\n j = -1;\n while (++j < n) {\n score_up = score_row[j];\n if (score_up > score) {\n score = score_up;\n }\n csc_score = 0;\n if (query_lw[j] === si_lw) {\n start = isWordStart(i, subject, subject_lw);\n csc_score = csc_diag > 0 ? csc_diag : scoreConsecutives(subject, subject_lw, query, query_lw, i, j, start);\n align = score_diag + scoreCharacter(i, j, start, acro_score, csc_score);\n if (align > score) {\n score = align;\n miss_left = miss_budget;\n } else {\n if (record_miss && --miss_left <= 0) {\n return Math.max(score, score_row[n - 1]) * sz;\n }\n record_miss = false;\n }\n }\n score_diag = score_up;\n csc_diag = csc_row[j];\n csc_row[j] = csc_score;\n score_row[j] = score;\n }\n }\n score = score_row[n - 1];\n return score * sz;\n };\n\n exports.isWordStart = isWordStart = function(pos, subject, subject_lw) {\n var curr_s, prev_s;\n if (pos === 0) {\n return true;\n }\n curr_s = subject[pos];\n prev_s = subject[pos - 1];\n return isSeparator(prev_s) || (curr_s !== subject_lw[pos] && prev_s === subject_lw[pos - 1]);\n };\n\n exports.isWordEnd = isWordEnd = function(pos, subject, subject_lw, len) {\n var curr_s, next_s;\n if (pos === len - 1) {\n return true;\n }\n curr_s = subject[pos];\n next_s = subject[pos + 1];\n return isSeparator(next_s) || (curr_s === subject_lw[pos] && next_s !== subject_lw[pos + 1]);\n };\n\n isSeparator = function(c) {\n return c === ' ' || c === '.' || c === '-' || c === '_' || c === '/' || c === '\\\\';\n };\n\n scorePosition = function(pos) {\n var sc;\n if (pos < pos_bonus) {\n sc = pos_bonus - pos;\n return 100 + sc * sc;\n } else {\n return Math.max(100 + pos_bonus - pos, 0);\n }\n };\n\n exports.scoreSize = scoreSize = function(n, m) {\n return tau_size / (tau_size + Math.abs(m - n));\n };\n\n scoreExact = function(n, m, quality, pos) {\n return 2 * n * (wm * quality + scorePosition(pos)) * scoreSize(n, m);\n };\n\n exports.scorePattern = scorePattern = function(count, len, sameCase, start, end) {\n var bonus, sz;\n sz = count;\n bonus = 6;\n if (sameCase === count) {\n bonus += 2;\n }\n if (start) {\n bonus += 3;\n }\n if (end) {\n bonus += 1;\n }\n if (count === len) {\n if (start) {\n if (sameCase === len) {\n sz += 2;\n } else {\n sz += 1;\n }\n }\n if (end) {\n bonus += 1;\n }\n }\n return sameCase + sz * (sz + bonus);\n };\n\n exports.scoreCharacter = scoreCharacter = function(i, j, start, acro_score, csc_score) {\n var posBonus;\n posBonus = scorePosition(i);\n if (start) {\n return posBonus + wm * ((acro_score > csc_score ? acro_score : csc_score) + 10);\n }\n return posBonus + wm * csc_score;\n };\n\n exports.scoreConsecutives = scoreConsecutives = function(subject, subject_lw, query, query_lw, i, j, startOfWord) {\n var k, m, mi, n, nj, sameCase, sz;\n m = subject.length;\n n = query.length;\n mi = m - i;\n nj = n - j;\n k = mi < nj ? mi : nj;\n sameCase = 0;\n sz = 0;\n if (query[j] === subject[i]) {\n sameCase++;\n }\n while (++sz < k && query_lw[++j] === subject_lw[++i]) {\n if (query[j] === subject[i]) {\n sameCase++;\n }\n }\n if (sz < k) {\n i--;\n }\n if (sz === 1) {\n return 1 + 2 * sameCase;\n }\n return scorePattern(sz, n, sameCase, startOfWord, isWordEnd(i, subject, subject_lw, m));\n };\n\n exports.scoreExactMatch = scoreExactMatch = function(subject, subject_lw, query, query_lw, pos, n, m) {\n var end, i, pos2, sameCase, start;\n start = isWordStart(pos, subject, subject_lw);\n if (!start) {\n pos2 = subject_lw.indexOf(query_lw, pos + 1);\n if (pos2 > -1) {\n start = isWordStart(pos2, subject, subject_lw);\n if (start) {\n pos = pos2;\n }\n }\n }\n i = -1;\n sameCase = 0;\n while (++i < n) {\n if (query[pos + i] === subject[i]) {\n sameCase++;\n }\n }\n end = isWordEnd(pos + n - 1, subject, subject_lw, m);\n return scoreExact(n, m, scorePattern(n, n, sameCase, start, end), pos);\n };\n\n AcronymResult = (function() {\n function AcronymResult(score, pos, count) {\n this.score = score;\n this.pos = pos;\n this.count = count;\n }\n\n return AcronymResult;\n\n })();\n\n emptyAcronymResult = new AcronymResult(0, 0.1, 0);\n\n exports.scoreAcronyms = scoreAcronyms = function(subject, subject_lw, query, query_lw) {\n var count, fullWord, i, j, m, n, qj_lw, sameCase, score, sepCount, sumPos;\n m = subject.length;\n n = query.length;\n if (!(m > 1 && n > 1)) {\n return emptyAcronymResult;\n }\n count = 0;\n sepCount = 0;\n sumPos = 0;\n sameCase = 0;\n i = -1;\n j = -1;\n while (++j < n) {\n qj_lw = query_lw[j];\n if (isSeparator(qj_lw)) {\n i = subject_lw.indexOf(qj_lw, i + 1);\n if (i > -1) {\n sepCount++;\n continue;\n } else {\n break;\n }\n }\n while (++i < m) {\n if (qj_lw === subject_lw[i] && isWordStart(i, subject, subject_lw)) {\n if (query[j] === subject[i]) {\n sameCase++;\n }\n sumPos += i;\n count++;\n break;\n }\n }\n if (i === m) {\n break;\n }\n }\n if (count < 2) {\n return emptyAcronymResult;\n }\n fullWord = count === n ? isAcronymFullWord(subject, subject_lw, query, count) : false;\n score = scorePattern(count, n, sameCase, true, fullWord);\n return new AcronymResult(score, sumPos / count, count + sepCount);\n };\n\n isAcronymFullWord = function(subject, subject_lw, query, nbAcronymInQuery) {\n var count, i, m, n;\n m = subject.length;\n n = query.length;\n count = 0;\n if (m > 12 * n) {\n return false;\n }\n i = -1;\n while (++i < m) {\n if (isWordStart(i, subject, subject_lw) && ++count > nbAcronymInQuery) {\n return false;\n }\n }\n return true;\n };\n\n}).call(this);\n","import { parseIntPagination, normalizeHeaders } from '~/lib/utils/common_utils';\n\nexport default class PipelinesStore {\n constructor() {\n this.state = {};\n\n this.state.pipelines = [];\n this.state.count = {};\n this.state.pageInfo = {};\n\n // Used in MR Pipelines tab\n this.state.isRunningMergeRequestPipeline = false;\n }\n\n storePipelines(pipelines = [], isUsingAsyncPipelineCreation) {\n if (isUsingAsyncPipelineCreation && pipelines.length) {\n const firstPipelineFromTable = this.state.pipelines[0];\n const firstPipelineFromRequest = pipelines[0];\n\n if (firstPipelineFromTable?.created_at !== firstPipelineFromRequest?.created_at) {\n this.toggleIsRunningPipeline(false);\n }\n }\n\n this.state.pipelines = pipelines;\n }\n\n storeCount(count = {}) {\n this.state.count = count;\n }\n\n storePagination(pagination = {}) {\n let paginationInfo;\n\n if (Object.keys(pagination).length) {\n const normalizedHeaders = normalizeHeaders(pagination);\n paginationInfo = parseIntPagination(normalizedHeaders);\n } else {\n paginationInfo = pagination;\n }\n\n this.state.pageInfo = paginationInfo;\n }\n\n /**\n * Toggles the isRunningPipeline flag\n *\n * @param {Boolean} value\n */\n toggleIsRunningPipeline(value = false) {\n this.state.isRunningMergeRequestPipeline = value;\n }\n}\n","const DISCLOSURE_DROPDOWN_ITEM_NAME = 'GlDisclosureDropdownItem';\nconst DISCLOSURE_DROPDOWN_GROUP_NAME = 'GlDisclosureDropdownGroup';\nconst DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS = {\n top: 'top',\n bottom: 'bottom'\n};\n\nexport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME, DISCLOSURE_DROPDOWN_ITEM_NAME };\n","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","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineActions\"},\"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\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"limit\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"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\":\"pipeline\"},\"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\":\"jobs\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"limit\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"whenExecuted\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"StringValue\",\"value\":\"manual\",\"block\":false},{\"kind\":\"StringValue\",\"value\":\"delayed\",\"block\":false}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"retried\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":false}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"statuses\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"MANUAL\"},{\"kind\":\"EnumValue\",\"value\":\"SCHEDULED\"},{\"kind\":\"EnumValue\",\"value\":\"SUCCESS\"},{\"kind\":\"EnumValue\",\"value\":\"FAILED\"},{\"kind\":\"EnumValue\",\"value\":\"SKIPPED\"},{\"kind\":\"EnumValue\",\"value\":\"CANCELED\"}]}}],\"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\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canPlayJob\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"manualJob\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scheduledAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scheduled\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playPath\"},\"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\":[]}]}}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":643}};\n doc.loc.source = {\"body\":\"query getPipelineActions($fullPath: ID!, $iid: ID!, $limit: Int) {\\n project(fullPath: $fullPath) {\\n id\\n pipeline(iid: $iid) {\\n id\\n jobs(\\n first: $limit\\n whenExecuted: [\\\"manual\\\", \\\"delayed\\\"]\\n retried: false\\n statuses: [MANUAL, SCHEDULED, SUCCESS, FAILED, SKIPPED, CANCELED]\\n ) {\\n nodes {\\n id\\n name\\n canPlayJob\\n manualJob\\n scheduledAt\\n scheduled\\n playPath\\n detailedStatus {\\n id\\n action {\\n id\\n confirmationMessage\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \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[\"getPipelineActions\"] = oneQuery(doc, \"getPipelineActions\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"setSortPreference\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"UserPreferencesUpdateInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPreferencesUpdate\"},\"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\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":124}};\n doc.loc.source = {\"body\":\"mutation setSortPreference($input: UserPreferencesUpdateInput!) {\\n userPreferencesUpdate(input: $input) {\\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[\"setSortPreference\"] = oneQuery(doc, \"setSortPreference\");\n \n","import first from 'lodash/first';\nimport last from 'lodash/last';\nimport isString from 'lodash/isString';\nimport { modulo } from '../../../utils/number_utils';\n\nconst TERM_TOKEN_TYPE = 'filtered-search-term';\nconst INTENT_ACTIVATE_PREVIOUS = 'intent-activate-previous';\nconst TOKEN_CLOSE_SELECTOR = '.gl-token-close';\nfunction isEmptyTerm(token) {\n return token.type === TERM_TOKEN_TYPE && token.value.data.trim() === '';\n}\nfunction normalizeTokens(tokens) {\n const result = [];\n tokens.forEach(token => {\n if (isEmptyTerm(token)) {\n return;\n }\n if (token.type !== TERM_TOKEN_TYPE) {\n result.push({\n ...token\n });\n } else if (result.length > 0 && typeof result[result.length - 1] === 'string') {\n result[result.length - 1] += ` ${token.value.data}`;\n } else {\n result.push(token.value.data);\n }\n });\n return result;\n}\nfunction assertValidTokens(tokens) {\n if (!Array.isArray(tokens) && !typeof tokens === 'string') {\n throw new TypeError('Either string or array of tokens is expected');\n }\n}\nfunction needDenormalization(tokens) {\n if (typeof tokens === 'string') {\n return true;\n }\n assertValidTokens(tokens);\n return tokens.some(t => typeof t === 'string' || !t.id);\n}\n\n/**\n * Given an initial index, step size and array length, returns an index that is\n * within the array bounds (unless step is 0; see † below).\n *\n * The step can be any positive or negative integer, including zero.\n *\n * An out-of-bounds index is considered 'uninitialised', and is handled\n * specially. For instance, the 'next' index of 'uninitialised' is the first\n * index:\n *\n * stepIndexAndWrap(-1, 1, 5) === 0\n *\n * The 'previous' index of 'uninitialised' is the last index:\n *\n * stepIndexAndWrap(-1, -1, 5) === 4\n *\n * †: If step is 0, the index is returned as-is, which may be out-of-bounds.\n *\n * @param {number} index The initial index.\n * @param {number} step The amount to step by (positive or negative).\n * @param {number} length The length of the array.\n * @returns {number}\n */\nfunction stepIndexAndWrap(index, step, length) {\n if (step === 0) return index;\n let start;\n const indexInRange = index >= 0 && index < length;\n if (indexInRange) {\n // Step from the valid index.\n start = index;\n } else if (step > 0) {\n // Step forwards from the beginning of the array.\n start = -1;\n } else {\n // Step backwards from the end of the array.\n start = length;\n }\n return modulo(start + step, length);\n}\n\n/**\n * Transforms a given token definition to an option definition.\n *\n * @param {Object} token A token definition (see GlFilteredSearch's\n * availableTokens prop).\n * @returns {Object} A option definition (see GlFilteredSearchTokenSegment's\n * options prop).\n */\nfunction tokenToOption(_ref) {\n let {\n icon,\n title,\n type,\n optionComponent\n } = _ref;\n return {\n icon,\n title,\n value: type,\n component: optionComponent\n };\n}\nlet tokenIdCounter = 0;\nconst getTokenId = () => {\n const tokenId = `token-${tokenIdCounter}`;\n tokenIdCounter += 1;\n return tokenId;\n};\n/**\n * Ensure the given token has an `id` property, which `GlFilteredSearch` relies\n * on as a unique key for the token.\n *\n * If the given token does not have an `id`, it returns a shallow copy of the\n * token with an `id`. Otherwise, it returns the given token.\n *\n * @param {object} token The token to check.\n * @returns {object} A token with an `id`.\n */\nfunction ensureTokenId(token) {\n if (!token.id) {\n return {\n ...token,\n id: getTokenId()\n };\n }\n return token;\n}\nfunction createTerm() {\n let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return {\n id: getTokenId(),\n type: TERM_TOKEN_TYPE,\n value: {\n data\n }\n };\n}\nfunction denormalizeTokens(inputTokens) {\n let termsAsTokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n assertValidTokens(inputTokens);\n const tokens = Array.isArray(inputTokens) ? inputTokens : [inputTokens];\n return tokens.reduce((result, t) => {\n if (typeof t === 'string') {\n if (termsAsTokens) {\n const trimmedText = t.trim();\n if (trimmedText) result.push(createTerm(trimmedText));\n } else {\n const stringTokens = t.split(' ').filter(Boolean);\n stringTokens.forEach(strToken => result.push(createTerm(strToken)));\n }\n } else {\n result.push(ensureTokenId(t));\n }\n return result;\n }, []);\n}\n\n/**\n * Returns `true` if `text` contains `query` (case insensitive).\n *\n * This is used in `filter` and `find` array methods for token segment options.\n *\n * @param {string} text The string to look within.\n * @param {string} query The string to find inside the text.\n * @returns {boolean}\n */\nfunction match(text, query) {\n return text.toLowerCase().includes(query.toLowerCase());\n}\nconst termTokenDefinition = {\n type: TERM_TOKEN_TYPE,\n icon: 'title',\n title: 'Search for this text'\n};\nfunction splitOnQuotes(str) {\n if (first(str) === \"'\" && last(str) === \"'\") {\n return [str];\n }\n if (first(str) === '\"' && last(str) === '\"') {\n return [str];\n }\n const queue = str.split(' ');\n const result = [];\n let waitingForMatchingQuote = false;\n let quoteContent = '';\n while (queue.length) {\n const part = queue.shift();\n const quoteIndex = part.indexOf('\"');\n if (quoteIndex === -1) {\n if (waitingForMatchingQuote) {\n quoteContent += ` ${part}`;\n } else {\n result.push(part);\n }\n } else {\n const [firstPart, secondPart] = part.split('\"', 2);\n if (waitingForMatchingQuote) {\n waitingForMatchingQuote = false;\n quoteContent += ` ${firstPart}\"`;\n result.push(quoteContent);\n quoteContent = '';\n if (secondPart.length) {\n queue.unshift(secondPart);\n }\n } else {\n waitingForMatchingQuote = true;\n if (firstPart.length) {\n result.push(firstPart);\n }\n quoteContent = `\"${secondPart}`;\n }\n }\n }\n return result;\n}\n\n/**\n * wraps the incoming token in double quotes.\n * Eg. Foo Bar becomes \"Foo Bar\"\n *\n * 1. token must have space.\n * 2. token should not already have a quote around it.\n */\nfunction wrapTokenInQuotes(token) {\n if (!isString(token)) {\n return token;\n }\n if (!token.includes(' ')) {\n return token;\n }\n const quotes = [\"'\", '\"'];\n\n // If the token starts and ends with a quote, eg. \"Foo Bar\", then return the original token.\n if (quotes.some(quote => first(token) === quote && last(token) === quote)) {\n return token;\n }\n return `\"${token}\"`;\n}\n\nexport { INTENT_ACTIVATE_PREVIOUS, TERM_TOKEN_TYPE, TOKEN_CLOSE_SELECTOR, createTerm, denormalizeTokens, ensureTokenId, isEmptyTerm, match, needDenormalization, normalizeTokens, splitOnQuotes, stepIndexAndWrap, termTokenDefinition, tokenToOption, wrapTokenInQuotes };\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\"","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","import Api from '~/api';\nimport axios from '~/lib/utils/axios_utils';\nimport { validateParams } from '../../pipeline_details/utils';\n\nexport default class PipelinesService {\n /**\n * Commits and merge request endpoints need to be requested with `.json`.\n *\n * The url provided to request the pipelines in the new merge request\n * page already has `.json`.\n *\n * @param {String} root\n */\n constructor(root) {\n if (root.indexOf('.json') === -1) {\n this.endpoint = `${root}.json`;\n } else {\n this.endpoint = root;\n }\n }\n\n getPipelines(data = {}) {\n const { scope, page } = data;\n const { CancelToken } = axios;\n\n const queryParams = { scope, page, ...validateParams(data) };\n\n this.cancelationSource = CancelToken.source();\n\n return axios.get(this.endpoint, {\n params: queryParams,\n cancelToken: this.cancelationSource.token,\n });\n }\n\n /**\n * Post request for all pipelines actions.\n *\n * @param {String} endpoint\n * @return {Promise}\n */\n // eslint-disable-next-line class-methods-use-this\n postAction(endpoint) {\n return axios.post(`${endpoint}.json`);\n }\n\n // eslint-disable-next-line class-methods-use-this\n runMRPipeline({ projectId, mergeRequestId }) {\n return Api.postMergeRequestPipeline(projectId, { mergeRequestId });\n }\n}\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineFailedJobs\"},\"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\":\"pipelineIid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"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\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineIid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"active\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"troubleshootJobWithAi\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobs\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"statuses\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"FAILED\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"retried\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":false}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"allowFailure\"},\"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\":\"detailsPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"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\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"kind\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"retried\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"retryable\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stage\"},\"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\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"readBuild\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updateBuild\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":753}};\n doc.loc.source = {\"body\":\"query getPipelineFailedJobs($fullPath: ID!, $pipelineIid: ID!) {\\n project(fullPath: $fullPath) {\\n id\\n pipeline(iid: $pipelineIid) {\\n id\\n active\\n troubleshootJobWithAi\\n jobs(statuses: [FAILED], retried: false) {\\n count\\n nodes {\\n id\\n allowFailure\\n detailedStatus {\\n id\\n detailsPath\\n group\\n icon\\n action {\\n id\\n path\\n icon\\n }\\n }\\n kind\\n name\\n retried\\n retryable\\n stage {\\n id\\n name\\n }\\n userPermissions {\\n readBuild\\n updateBuild\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"getPipelineFailedJobs\"] = oneQuery(doc, \"getPipelineFailedJobs\");\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","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","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 GlDropdownItem from '../dropdown/dropdown_item';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlFilteredSearchSuggestion',\n components: {\n GlDropdownItem\n },\n inject: ['filteredSearchSuggestionListInstance'],\n inheritAttrs: false,\n props: {\n /**\n * Value that will be emitted if this suggestion is selected.\n */\n value: {\n required: true,\n validator: () => true\n }\n },\n computed: {\n isActive() {\n return this.filteredSearchSuggestionListInstance.activeItem === this;\n }\n },\n watch: {\n isActive(newValue) {\n if (newValue) {\n window.requestAnimationFrame(() => {\n var _this$$refs$item, _this$$refs$item$$el;\n (_this$$refs$item = this.$refs.item) === null || _this$$refs$item === void 0 ? void 0 : (_this$$refs$item$$el = _this$$refs$item.$el) === null || _this$$refs$item$$el === void 0 ? void 0 : _this$$refs$item$$el.scrollIntoView({\n block: 'nearest',\n inline: 'end'\n });\n });\n }\n }\n },\n created() {\n this.filteredSearchSuggestionListInstance.register(this);\n },\n beforeDestroy() {\n this.filteredSearchSuggestionListInstance.unregister(this);\n },\n methods: {\n emitValue() {\n // We use href argument for gl-dropdown-item to use <a> instead of <button>\n // due to https://bugs.webkit.org/show_bug.cgi?id=22261\n this.filteredSearchSuggestionListInstance.$emit('suggestion', this.value);\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('gl-dropdown-item',_vm._b({ref:\"item\",staticClass:\"gl-filtered-search-suggestion\",class:{ 'gl-filtered-search-suggestion-active': _vm.isActive },attrs:{\"data-testid\":\"filtered-search-suggestion\",\"tabindex\":\"-1\",\"href\":\"#\"},nativeOn:{\"mousedown\":function($event){$event.preventDefault();return _vm.emitValue.apply(null, arguments)}}},'gl-dropdown-item',_vm.$attrs,false),[_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 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","(function() {\n var Query, defaultPathSeparator, filter, matcher, parseOptions, pathScorer, preparedQueryCache, scorer;\n\n filter = require('./filter');\n\n matcher = require('./matcher');\n\n scorer = require('./scorer');\n\n pathScorer = require('./pathScorer');\n\n Query = require('./query');\n\n preparedQueryCache = null;\n\n defaultPathSeparator = (typeof process !== \"undefined\" && process !== null ? process.platform : void 0) === \"win32\" ? '\\\\' : '/';\n\n module.exports = {\n filter: function(candidates, query, options) {\n if (options == null) {\n options = {};\n }\n if (!((query != null ? query.length : void 0) && (candidates != null ? candidates.length : void 0))) {\n return [];\n }\n options = parseOptions(options, query);\n return filter(candidates, query, options);\n },\n score: function(string, query, options) {\n if (options == null) {\n options = {};\n }\n if (!((string != null ? string.length : void 0) && (query != null ? query.length : void 0))) {\n return 0;\n }\n options = parseOptions(options, query);\n if (options.usePathScoring) {\n return pathScorer.score(string, query, options);\n } else {\n return scorer.score(string, query, options);\n }\n },\n match: function(string, query, options) {\n var _i, _ref, _results;\n if (options == null) {\n options = {};\n }\n if (!string) {\n return [];\n }\n if (!query) {\n return [];\n }\n if (string === query) {\n return (function() {\n _results = [];\n for (var _i = 0, _ref = string.length; 0 <= _ref ? _i < _ref : _i > _ref; 0 <= _ref ? _i++ : _i--){ _results.push(_i); }\n return _results;\n }).apply(this);\n }\n options = parseOptions(options, query);\n return matcher.match(string, query, options);\n },\n wrap: function(string, query, options) {\n if (options == null) {\n options = {};\n }\n if (!string) {\n return [];\n }\n if (!query) {\n return [];\n }\n options = parseOptions(options, query);\n return matcher.wrap(string, query, options);\n },\n prepareQuery: function(query, options) {\n if (options == null) {\n options = {};\n }\n options = parseOptions(options, query);\n return options.preparedQuery;\n }\n };\n\n parseOptions = function(options, query) {\n if (options.allowErrors == null) {\n options.allowErrors = false;\n }\n if (options.usePathScoring == null) {\n options.usePathScoring = true;\n }\n if (options.useExtensionBonus == null) {\n options.useExtensionBonus = false;\n }\n if (options.pathSeparator == null) {\n options.pathSeparator = defaultPathSeparator;\n }\n if (options.optCharRegEx == null) {\n options.optCharRegEx = null;\n }\n if (options.wrap == null) {\n options.wrap = null;\n }\n if (options.preparedQuery == null) {\n options.preparedQuery = preparedQueryCache && preparedQueryCache.query === query ? preparedQueryCache : (preparedQueryCache = new Query(query, options));\n }\n return options;\n };\n\n}).call(this);\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.showPagination)?_c('gl-pagination',_vm._b({staticClass:\"gl-mt-5\",attrs:{\"align\":\"center\",\"value\":_vm.pageInfo.page,\"per-page\":_vm.pageInfo.perPage,\"total-items\":_vm.pageInfo.total,\"prev-page\":_vm.pageInfo.previousPage,\"next-page\":_vm.pageInfo.nextPage},on:{\"input\":_vm.change}},'gl-pagination',_vm.$attrs,false)):_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!./table_pagination.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./table_pagination.vue?vue&type=script&lang=js\"","<script>\nimport { GlPagination } from '@gitlab/ui';\n\nexport default {\n components: {\n GlPagination,\n },\n props: {\n /**\n This function will take the information given by the pagination component\n\n Here is an example `change` method:\n\n change(pagenum) {\n visitUrl(`?page=${pagenum}`);\n },\n */\n change: {\n type: Function,\n required: true,\n },\n\n /**\n pageInfo will come from the headers of the API call\n there should be a function that constructs the pageInfo for this component\n\n This is an example:\n\n const pageInfo = headers => ({\n perPage: +headers['X-Per-Page'],\n page: +headers['X-Page'],\n total: +headers['X-Total'],\n totalPages: +headers['X-Total-Pages'],\n nextPage: +headers['X-Next-Page'],\n previousPage: +headers['X-Prev-Page'],\n });\n */\n pageInfo: {\n type: Object,\n required: true,\n },\n },\n computed: {\n showPagination() {\n return this.pageInfo.nextPage || this.pageInfo.previousPage;\n },\n },\n};\n</script>\n<template>\n <gl-pagination\n v-if=\"showPagination\"\n class=\"gl-mt-5\"\n v-bind=\"$attrs\"\n align=\"center\"\n :value=\"pageInfo.page\"\n :per-page=\"pageInfo.perPage\"\n :total-items=\"pageInfo.total\"\n :prev-page=\"pageInfo.previousPage\"\n :next-page=\"pageInfo.nextPage\"\n @input=\"change\"\n />\n</template>\n","import { render, staticRenderFns } from \"./table_pagination.vue?vue&type=template&id=13e7ff42\"\nimport script from \"./table_pagination.vue?vue&type=script&lang=js\"\nexport * from \"./table_pagination.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\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 cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport GlToken from '../token/token';\nimport { stopEvent } from '../../../utils/utils';\nimport GlFilteredSearchTokenSegment from './filtered_search_token_segment';\nimport { tokenToOption, createTerm, TOKEN_CLOSE_SELECTOR } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst SEGMENT_TITLE = 'TYPE';\nconst SEGMENT_OPERATOR = 'OPERATOR';\nconst SEGMENT_DATA = 'DATA';\nconst DEFAULT_OPERATORS = [{\n value: '=',\n description: 'is',\n default: true\n}, {\n value: '!=',\n description: 'is not'\n}];\nvar script = {\n name: 'GlFilteredSearchToken',\n // FIXME: temporary workaround to ensure compatibility with @vue/compat\n __v_skip: true,\n components: {\n GlToken,\n GlFilteredSearchTokenSegment\n },\n inheritAttrs: false,\n props: {\n availableTokens: {\n type: Array,\n required: false,\n default: () => []\n },\n /**\n * Token configuration with available operators and options.\n */\n config: {\n type: Object,\n required: false,\n default: () => ({})\n },\n /**\n * Determines if the token is being edited or not.\n */\n active: {\n type: Boolean,\n required: false,\n default: false\n },\n multiSelectValues: {\n type: Array,\n required: false,\n default: () => []\n },\n /**\n * Current token value.\n */\n value: {\n type: Object,\n required: false,\n default: () => ({\n operator: '',\n data: ''\n })\n },\n /**\n * Display operators' descriptions instead of their values (e.g., \"is\" instead of \"=\").\n */\n showFriendlyText: {\n type: Boolean,\n required: false,\n default: false\n },\n cursorPosition: {\n type: String,\n required: false,\n default: 'end',\n validator: value => ['start', 'end'].includes(value)\n },\n viewOnly: {\n type: Boolean,\n required: false,\n default: false\n },\n dataSegmentInputAttributes: {\n type: Object,\n required: false,\n default: () => ({})\n }\n },\n data() {\n return {\n activeSegment: null,\n tokenValue: cloneDeep(this.value),\n intendedCursorPosition: this.cursorPosition\n };\n },\n computed: {\n operators() {\n return this.config.operators || DEFAULT_OPERATORS;\n },\n tokenEmpty() {\n var _this$tokenValue$data;\n return ((_this$tokenValue$data = this.tokenValue.data) === null || _this$tokenValue$data === void 0 ? void 0 : _this$tokenValue$data.length) === 0;\n },\n hasDataOrDataSegmentIsCurrentlyActive() {\n const hasData = !this.tokenEmpty;\n return hasData || this.isSegmentActive(SEGMENT_DATA);\n },\n availableTokensWithSelf() {\n return [this.config, ...this.availableTokens.filter(token => token !== this.config)].map(\n // eslint-disable-next-line unicorn/no-array-callback-reference\n tokenToOption);\n },\n operatorDescription() {\n const operator = this.operators.find(op => op.value === this.tokenValue.operator);\n return this.showFriendlyText ? operator === null || operator === void 0 ? void 0 : operator.description : operator === null || operator === void 0 ? void 0 : operator.value;\n },\n eventListeners() {\n return this.viewOnly ? {} : {\n mousedown: this.stopMousedownOnCloseButton,\n close: this.destroyByClose\n };\n }\n },\n segments: {\n SEGMENT_TITLE,\n SEGMENT_DATA,\n SEGMENT_OPERATOR\n },\n watch: {\n tokenValue: {\n deep: true,\n handler(newValue) {\n /**\n * Emitted when the token changes its value.\n *\n * @event input\n * @type {object} dataObj Object containing the update value.\n */\n this.$emit('input', newValue);\n }\n },\n value: {\n handler(newValue, oldValue) {\n if (isEqual(newValue === null || newValue === void 0 ? void 0 : newValue.data, oldValue === null || oldValue === void 0 ? void 0 : oldValue.data) && (newValue === null || newValue === void 0 ? void 0 : newValue.operator) === (oldValue === null || oldValue === void 0 ? void 0 : oldValue.operator)) {\n return;\n }\n this.tokenValue = cloneDeep(newValue);\n }\n },\n active: {\n immediate: true,\n handler(tokenIsActive) {\n if (tokenIsActive) {\n this.intendedCursorPosition = this.cursorPosition;\n if (!this.activeSegment) {\n this.activateSegment(this.tokenEmpty ? SEGMENT_OPERATOR : SEGMENT_DATA);\n }\n } else {\n this.activeSegment = null;\n\n // restore multi select values if we have them\n // otherwise destroy the token\n if (this.config.multiSelect) {\n this.$emit('input', {\n ...this.tokenValue,\n data: this.multiSelectValues || ''\n });\n }\n if (this.tokenEmpty && this.multiSelectValues.length === 0) {\n /**\n * Emitted when token is about to be destroyed.\n *\n * @event destroy\n */\n this.$emit('destroy');\n }\n }\n }\n }\n },\n created() {\n if (!('operator' in this.tokenValue)) {\n if (this.operators.length === 1) {\n const operator = this.operators[0].value;\n this.$emit('input', {\n ...this.tokenValue,\n operator\n });\n this.activeSegment = SEGMENT_DATA;\n } else {\n this.$emit('input', {\n ...this.tokenValue,\n operator: ''\n });\n }\n }\n },\n methods: {\n activateSegment(segment) {\n if (this.viewOnly) return;\n this.activeSegment = segment;\n if (!this.active) {\n /**\n * Emitted when this term token is clicked.\n *\n * @event activate\n */\n this.$emit('activate');\n }\n },\n getAdditionalSegmentClasses(segment) {\n if (this.viewOnly) {\n return 'gl-cursor-text';\n }\n return {\n 'gl-cursor-pointer': !this.isSegmentActive(segment)\n };\n },\n isSegmentActive(segment) {\n return this.active && this.activeSegment === segment;\n },\n replaceWithTermIfEmpty() {\n if (this.tokenValue.operator === '' && this.tokenEmpty) {\n /**\n * Emitted when this token is converted to another type\n * @property {object} token Replacement token configuration\n */\n this.$emit('replace', createTerm(this.config.title));\n }\n },\n replaceToken(newType) {\n const newTokenConfig = this.availableTokens.find(_ref => {\n let {\n type\n } = _ref;\n return type === newType;\n });\n if (newTokenConfig === this.config) {\n this.$nextTick(() => {\n /**\n * Emitted when this term token will lose its focus.\n *\n * @event deactivate\n */\n this.$emit('deactivate');\n });\n return;\n }\n if (newTokenConfig) {\n const isCompatible = this.config.dataType && this.config.dataType === newTokenConfig.dataType;\n this.$emit('replace', {\n type: newTokenConfig.type,\n value: isCompatible ? this.tokenValue : {\n data: ''\n }\n });\n }\n },\n handleOperatorKeydown(evt, _ref2) {\n let {\n inputValue,\n suggestedValue,\n applySuggestion\n } = _ref2;\n const {\n key\n } = evt;\n if (key === ' ' || key === 'Spacebar') {\n applySuggestion(suggestedValue);\n return;\n }\n const potentialValue = `${inputValue}${key}`;\n if (key.length === 1 && !this.operators.find(_ref3 => {\n let {\n value\n } = _ref3;\n return value.startsWith(potentialValue);\n })) {\n if (this.tokenEmpty) {\n applySuggestion(suggestedValue);\n } else {\n evt.preventDefault();\n }\n }\n },\n activateDataSegment() {\n if (this.config.multiSelect) {\n this.$emit('input', {\n ...this.tokenValue,\n data: ''\n });\n }\n this.activateSegment(this.$options.segments.SEGMENT_DATA);\n },\n activatePreviousOperatorSegment() {\n this.activateSegment(this.$options.segments.SEGMENT_OPERATOR);\n this.intendedCursorPosition = 'end';\n },\n activatePreviousTitleSegment() {\n this.activateSegment(this.$options.segments.SEGMENT_TITLE);\n this.intendedCursorPosition = 'end';\n },\n activateNextDataSegment() {\n this.activateDataSegment();\n this.intendedCursorPosition = 'start';\n },\n activateNextOperatorSegment() {\n this.activateSegment(this.$options.segments.SEGMENT_OPERATOR);\n this.intendedCursorPosition = 'start';\n },\n handleComplete(value) {\n /**\n * Emitted when the token entry has been completed.\n *\n * @event complete\n */\n this.$emit('complete', value);\n },\n stopMousedownOnCloseButton(event) {\n if (event.target.closest(TOKEN_CLOSE_SELECTOR)) {\n stopEvent(event);\n }\n },\n destroyByClose() {\n this.$emit('destroy');\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-filtered-search-token\",class:{\n 'gl-filtered-search-token-active': _vm.active,\n 'gl-filtered-search-token-hover': !_vm.viewOnly,\n 'gl-cursor-default': _vm.viewOnly,\n },attrs:{\"data-testid\":\"filtered-search-token\"}},[_c('gl-filtered-search-token-segment',{key:\"title-segment\",attrs:{\"value\":_vm.config.title,\"active\":_vm.isSegmentActive(_vm.$options.segments.SEGMENT_TITLE),\"cursor-position\":_vm.intendedCursorPosition,\"options\":_vm.availableTokensWithSelf,\"view-only\":_vm.viewOnly},on:{\"activate\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_TITLE)},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"complete\":_vm.replaceToken,\"backspace\":function($event){return _vm.$emit('destroy')},\"submit\":function($event){return _vm.$emit('submit')},\"previous\":function($event){return _vm.$emit('previous')},\"next\":_vm.activateNextOperatorSegment},scopedSlots:_vm._u([{key:\"view\",fn:function(ref){\n var inputValue = ref.inputValue;\nreturn [_c('gl-token',{staticClass:\"gl-filtered-search-token-type\",class:_vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_TITLE),attrs:{\"view-only\":\"\"}},[_vm._v(\"\\n \"+_vm._s(inputValue)+\"\\n \")])]}}])}),_vm._v(\" \"),_c('gl-filtered-search-token-segment',{key:\"operator-segment\",attrs:{\"active\":_vm.isSegmentActive(_vm.$options.segments.SEGMENT_OPERATOR),\"cursor-position\":_vm.intendedCursorPosition,\"options\":_vm.operators,\"option-text-field\":\"value\",\"custom-input-keydown-handler\":_vm.handleOperatorKeydown,\"view-only\":_vm.viewOnly},on:{\"activate\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_OPERATOR)},\"backspace\":_vm.replaceWithTermIfEmpty,\"complete\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_DATA)},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"previous\":_vm.activatePreviousTitleSegment,\"next\":_vm.activateNextDataSegment},scopedSlots:_vm._u([{key:\"view\",fn:function(){return [_c('gl-token',{staticClass:\"gl-filtered-search-token-operator\",class:_vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_OPERATOR),attrs:{\"variant\":\"search-value\",\"view-only\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.operatorDescription)+\"\\n \")])]},proxy:true},{key:\"option\",fn:function(ref){\n var option = ref.option;\nreturn [_c('div',{staticClass:\"gl-flex\"},[_vm._v(\"\\n \"+_vm._s(_vm.showFriendlyText ? option.description : option.value)+\"\\n \"),(option.description)?_c('span',{staticClass:\"gl-filtered-search-token-operator-description\"},[_vm._v(\"\\n \"+_vm._s(_vm.showFriendlyText ? option.value : option.description)+\"\\n \")]):_vm._e()])]}}]),model:{value:(_vm.tokenValue.operator),callback:function ($$v) {_vm.$set(_vm.tokenValue, \"operator\", $$v);},expression:\"tokenValue.operator\"}}),_vm._v(\" \"),(_vm.hasDataOrDataSegmentIsCurrentlyActive)?_c('gl-filtered-search-token-segment',{key:\"data-segment\",attrs:{\"active\":_vm.isSegmentActive(_vm.$options.segments.SEGMENT_DATA),\"cursor-position\":_vm.intendedCursorPosition,\"multi-select\":_vm.config.multiSelect,\"options\":_vm.config.options,\"view-only\":_vm.viewOnly,\"search-input-attributes\":_vm.dataSegmentInputAttributes},on:{\"activate\":_vm.activateDataSegment,\"backspace\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_OPERATOR)},\"complete\":_vm.handleComplete,\"select\":function($event){return _vm.$emit('select', $event)},\"submit\":function($event){return _vm.$emit('submit')},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"split\":function($event){return _vm.$emit('split', $event)},\"previous\":_vm.activatePreviousOperatorSegment,\"next\":function($event){return _vm.$emit('next')}},scopedSlots:_vm._u([{key:\"before-input\",fn:function(scope){return [_vm._t(\"before-data-segment-input\",null,null,scope)]}},{key:\"suggestions\",fn:function(){return [_vm._t(\"suggestions\")]},proxy:true},{key:\"view\",fn:function(ref){\n var inputValue = ref.inputValue;\nreturn [_vm._t(\"view-token\",function(){return [_c('gl-token',_vm._g({staticClass:\"gl-filtered-search-token-data\",class:_vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_DATA),attrs:{\"variant\":\"search-value\",\"view-only\":_vm.viewOnly}},_vm.eventListeners),[_c('span',{staticClass:\"gl-filtered-search-token-data-content\"},[_vm._t(\"view\",function(){return [_vm._v(_vm._s(inputValue))]},null,{ inputValue: inputValue })],2)])]},null,{\n inputValue: inputValue,\n listeners: _vm.eventListeners,\n cssClasses: Object.assign({}, {'gl-filtered-search-token-data': true},\n _vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_DATA)),\n })]}}],null,true),model:{value:(_vm.tokenValue.data),callback:function ($$v) {_vm.$set(_vm.tokenValue, \"data\", $$v);},expression:\"tokenValue.data\"}}):_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 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('time',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"datetime\":_vm.endDateString,\"title\":_vm.endDateString}},[_vm._v(\" \"+_vm._s(_vm.remainingTime)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gl_countdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gl_countdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective } from '@gitlab/ui';\nimport { calculateRemainingMilliseconds, formatTime } from '~/lib/utils/datetime_utility';\n\n/**\n * Counts down to a given end date.\n */\nexport default {\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n\n props: {\n endDateString: {\n type: String,\n required: true,\n validator(value) {\n return !Number.isNaN(new Date(value).getTime());\n },\n },\n },\n\n data() {\n return {\n remainingTime: formatTime(0),\n countdownUpdateIntervalId: null,\n };\n },\n\n mounted() {\n const updateRemainingTime = () => {\n const remainingMilliseconds = calculateRemainingMilliseconds(this.endDateString);\n\n if (remainingMilliseconds < 1) {\n this.$emit('timer-expired');\n }\n\n this.remainingTime = formatTime(remainingMilliseconds);\n };\n\n updateRemainingTime();\n this.countdownUpdateIntervalId = window.setInterval(updateRemainingTime, 1000);\n },\n\n beforeDestroy() {\n window.clearInterval(this.countdownUpdateIntervalId);\n },\n};\n</script>\n\n<template>\n <time v-gl-tooltip :datetime=\"endDateString\" :title=\"endDateString\"> {{ remainingTime }} </time>\n</template>\n","import { render, staticRenderFns } from \"./gl_countdown.vue?vue&type=template&id=59b0e135\"\nimport script from \"./gl_countdown.vue?vue&type=script&lang=js\"\nexport * from \"./gl_countdown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\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 DEBOUNCE_DELAY = 500;\nexport const MAX_RECENT_TOKENS_SIZE = 3;\n\nexport const FILTER_NONE = 'None';\nexport const FILTER_ANY = 'Any';\nexport const FILTER_CURRENT = 'Current';\nexport const FILTER_UPCOMING = 'Upcoming';\nexport const FILTER_STARTED = 'Started';\n\nexport const FILTERS_NONE_ANY = [FILTER_NONE, FILTER_ANY];\n\nexport const OPERATOR_IS = '=';\nexport const OPERATOR_IS_TEXT = __('is');\nexport const OPERATOR_NOT = '!=';\nexport const OPERATOR_NOT_TEXT = __('is not one of');\nexport const OPERATOR_OR = '||';\nexport const OPERATOR_OR_TEXT = __('is one of');\nexport const OPERATOR_AFTER = '≥';\nexport const OPERATOR_AFTER_TEXT = __('on or after');\nexport const OPERATOR_BEFORE = '<';\nexport const OPERATOR_BEFORE_TEXT = __('before');\n\nexport const OPERATORS_IS = [{ value: OPERATOR_IS, description: OPERATOR_IS_TEXT }];\nexport const OPERATORS_NOT = [{ value: OPERATOR_NOT, description: OPERATOR_NOT_TEXT }];\nexport const OPERATORS_OR = [{ value: OPERATOR_OR, description: OPERATOR_OR_TEXT }];\nexport const OPERATORS_AFTER = [{ value: OPERATOR_AFTER, description: OPERATOR_AFTER_TEXT }];\nexport const OPERATORS_BEFORE = [{ value: OPERATOR_BEFORE, description: OPERATOR_BEFORE_TEXT }];\nexport const OPERATORS_IS_NOT = [...OPERATORS_IS, ...OPERATORS_NOT];\nexport const OPERATORS_IS_NOT_OR = [...OPERATORS_IS, ...OPERATORS_NOT, ...OPERATORS_OR];\nexport const OPERATORS_AFTER_BEFORE = [...OPERATORS_AFTER, ...OPERATORS_BEFORE];\n\nexport const OPERATORS_TO_GROUP = [OPERATOR_OR, OPERATOR_NOT];\n\nexport const OPTION_NONE = { value: FILTER_NONE, text: __('None'), title: __('None') };\nexport const OPTION_ANY = { value: FILTER_ANY, text: __('Any'), title: __('Any') };\nexport const OPTION_CURRENT = { value: FILTER_CURRENT, text: __('Current') };\nexport const OPTION_STARTED = { value: FILTER_STARTED, text: __('Started'), title: __('Started') };\nexport const OPTION_UPCOMING = {\n value: FILTER_UPCOMING,\n text: __('Upcoming'),\n title: __('Upcoming'),\n};\n\nexport const OPTIONS_NONE_ANY = [OPTION_NONE, OPTION_ANY];\n\nexport const DEFAULT_MILESTONES = OPTIONS_NONE_ANY.concat([OPTION_UPCOMING, OPTION_STARTED]);\n\nexport const SORT_DIRECTION = {\n descending: 'descending',\n ascending: 'ascending',\n};\n\nexport const FILTERED_SEARCH_TERM = 'filtered-search-term';\n\nexport const TOKEN_EMPTY_SEARCH_TERM = {\n type: FILTERED_SEARCH_TERM,\n value: {\n data: '',\n },\n};\n\nexport const TOKEN_TITLE_APPROVED_BY = __('Approved-By');\nexport const TOKEN_TITLE_MERGE_USER = __('Merged-By');\nexport const TOKEN_TITLE_APPROVER = __('Approver');\nexport const TOKEN_TITLE_ASSIGNEE = s__('SearchToken|Assignee');\nexport const TOKEN_TITLE_AUTHOR = __('Author');\nexport const TOKEN_TITLE_CONFIDENTIAL = __('Confidential');\nexport const TOKEN_TITLE_CONTACT = s__('Crm|Contact');\nexport const TOKEN_TITLE_DRAFT = s__('MergeRequests|Draft');\nexport const TOKEN_TITLE_GROUP = __('Group');\nexport const TOKEN_TITLE_GROUP_INVITE = __('Group invite');\nexport const TOKEN_TITLE_LABEL = __('Label');\nexport const TOKEN_TITLE_PROJECT = __('Project');\nexport const TOKEN_TITLE_MILESTONE = __('Milestone');\nexport const TOKEN_TITLE_MY_REACTION = __('My-Reaction');\nexport const TOKEN_TITLE_ORGANIZATION = s__('Crm|Organization');\nexport const TOKEN_TITLE_RELEASE = __('Release');\nexport const TOKEN_TITLE_REVIEWER = s__('SearchToken|Reviewer');\nexport const TOKEN_TITLE_SOURCE_BRANCH = __('Source Branch');\nexport const TOKEN_TITLE_STATUS = __('Status');\nexport const TOKEN_TITLE_JOBS_RUNNER_TYPE = s__('Job|Runner type');\nexport const TOKEN_TITLE_TARGET_BRANCH = __('Target Branch');\nexport const TOKEN_TITLE_TYPE = __('Type');\nexport const TOKEN_TITLE_VERSION = __('Version');\nexport const TOKEN_TITLE_SEARCH_WITHIN = __('Search Within');\nexport const TOKEN_TITLE_CREATED = __('Created date');\nexport const TOKEN_TITLE_CLOSED = __('Closed date');\nexport const TOKEN_TITLE_DEPLOYED_BEFORE = __('Deployed-before');\nexport const TOKEN_TITLE_DEPLOYED_AFTER = __('Deployed-after');\nexport const TOKEN_TITLE_ASSIGNED_SEAT = __('Assigned seat');\nexport const TOKEN_TITLE_ENVIRONMENT = __('Environment');\n\nexport const TOKEN_TYPE_APPROVER = 'approver';\nexport const TOKEN_TYPE_APPROVED_BY = 'approved-by';\nexport const TOKEN_TYPE_MERGE_USER = 'merge-user';\nexport const TOKEN_TYPE_ASSIGNEE = 'assignee';\nexport const TOKEN_TYPE_AUTHOR = 'author';\nexport const TOKEN_TYPE_CONFIDENTIAL = 'confidential';\nexport const TOKEN_TYPE_CONTACT = 'contact';\nexport const TOKEN_TYPE_DRAFT = 'draft';\nexport const TOKEN_TYPE_GROUP = 'group';\nexport const TOKEN_TYPE_GROUP_INVITE = 'group-invite';\nexport const TOKEN_TYPE_EPIC = 'epic';\nexport const TOKEN_TYPE_ASSIGNED_SEAT = 'assigned-seat';\n// As health status gets reused between issue lists and boards\n// this is in the shared constants. Until we have not decoupled the EE filtered search bar\n// from the CE component, we need to keep this in the CE code.\n// https://gitlab.com/gitlab-org/gitlab/-/issues/377838\nexport const TOKEN_TYPE_PROJECT = 'project';\nexport const TOKEN_TYPE_HEALTH = 'health';\nexport const TOKEN_TYPE_ITERATION = 'iteration';\nexport const TOKEN_TYPE_LABEL = 'label';\nexport const TOKEN_TYPE_MILESTONE = 'milestone';\nexport const TOKEN_TYPE_MY_REACTION = 'my-reaction';\nexport const TOKEN_TYPE_ORGANIZATION = 'organization';\nexport const TOKEN_TYPE_RELEASE = 'release';\nexport const TOKEN_TYPE_REVIEWER = 'reviewer';\nexport const TOKEN_TYPE_SOURCE_BRANCH = 'source-branch';\nexport const TOKEN_TYPE_STATUS = 'status';\nexport const TOKEN_TYPE_JOBS_RUNNER_TYPE = 'jobs-runner-type';\nexport const TOKEN_TYPE_TARGET_BRANCH = 'target-branch';\nexport const TOKEN_TYPE_TYPE = 'type';\nexport const TOKEN_TYPE_VERSION = 'version';\nexport const TOKEN_TYPE_WEIGHT = 'weight';\nexport const TOKEN_TYPE_SEARCH_WITHIN = 'in';\nexport const TOKEN_TYPE_CREATED = 'created';\nexport const TOKEN_TYPE_CLOSED = 'closed';\nexport const TOKEN_TYPE_DEPLOYED_BEFORE = 'deployed-before';\nexport const TOKEN_TYPE_DEPLOYED_AFTER = 'deployed-after';\nexport const TOKEN_TYPE_ENVIRONMENT = 'environment';\n\n// Due to the i18n eslint rule we can't have a capitalized string even if it is a case-aware URL param\n/* eslint-disable @gitlab/require-i18n-strings */\nexport const ENTITY_TYPES = {\n USER: 'User',\n AUTHOR: 'Author',\n GROUP: 'Group',\n PROJECT: 'Project',\n};\n/* eslint-enable @gitlab/require-i18n-strings */\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 { 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","/**\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 mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_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!./dismissible_alert.vue?vue&type=script&lang=js\"","<script>\nimport { GlAlert } from '@gitlab/ui';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\n\nexport default {\n name: 'DismissibleAlert',\n components: {\n GlAlert,\n },\n directives: {\n SafeHtml,\n },\n props: {\n html: {\n type: String,\n required: false,\n default: '',\n },\n },\n data() {\n return {\n isDismissed: false,\n };\n },\n methods: {\n dismiss() {\n this.isDismissed = true;\n this.$emit('alertDismissed');\n },\n },\n};\n</script>\n\n<template>\n <gl-alert v-if=\"!isDismissed\" v-bind=\"$attrs\" @dismiss=\"dismiss\" v-on=\"$listeners\">\n <div v-safe-html=\"html\"></div>\n </gl-alert>\n</template>\n","import { render, staticRenderFns } from \"./dismissible_alert.vue?vue&type=template&id=5ace45cc\"\nimport script from \"./dismissible_alert.vue?vue&type=script&lang=js\"\nexport * from \"./dismissible_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 (!_vm.isDismissed)?_c('gl-alert',_vm._g(_vm._b({on:{\"dismiss\":_vm.dismiss}},'gl-alert',_vm.$attrs,false),_vm.$listeners),[_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.html),expression:\"html\"}]})]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport { setCookie, parseBoolean } from '~/lib/utils/common_utils';\n\nimport DismissibleAlert from '~/vue_shared/components/dismissible_alert.vue';\n\nconst getCookieExpirationPeriod = (expirationPeriod) => {\n const defaultExpirationPeriod = 30;\n const alertExpirationPeriod = Number(expirationPeriod);\n\n return !expirationPeriod || Number.isNaN(alertExpirationPeriod)\n ? defaultExpirationPeriod\n : alertExpirationPeriod;\n};\n\nconst mountVueAlert = (el) => {\n const props = {\n html: el.innerHTML,\n };\n const attrs = {\n ...el.dataset,\n dismissible: parseBoolean(el.dataset.dismissible),\n };\n const { dismissCookieName, dismissCookieExpire } = el.dataset;\n\n return new Vue({\n el,\n render(createElement) {\n return createElement(DismissibleAlert, {\n props,\n attrs,\n on: {\n alertDismissed() {\n if (!dismissCookieName) {\n return;\n }\n setCookie(dismissCookieName, true, {\n expires: getCookieExpirationPeriod(dismissCookieExpire),\n });\n },\n },\n });\n },\n });\n};\n\nexport default () => [...document.querySelectorAll('.js-vue-alert')].map(mountVueAlert);\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"retryMrFailedJob\"},\"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\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":101}};\n doc.loc.source = {\"body\":\"mutation retryMrFailedJob($id: CiProcessableID!) {\\n jobRetry(input: { id: $id }) {\\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[\"retryMrFailedJob\"] = oneQuery(doc, \"retryMrFailedJob\");\n \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-avatar-link',{staticClass:\"user-avatar-link js-user-link\",attrs:{\"href\":_vm.linkHref,\"data-user-id\":_vm.userId,\"data-username\":_vm.popoverUsername},on:{\"click\":function($event){$event.stopPropagation();}}},[_c('user-avatar-image',{class:_vm.imgCssWrapperClasses,attrs:{\"img-src\":_vm.imgSrc,\"img-alt\":_vm.imgAlt,\"css-classes\":_vm.imgCssClasses,\"size\":_vm.imgSize,\"tooltip-text\":_vm.avatarTooltipText,\"tooltip-placement\":_vm.tooltipPlacement,\"lazy\":_vm.lazy}},[_vm._t(\"default\")],2),_vm._v(\" \"),(_vm.shouldShowUsername)?_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-ml-1\",attrs:{\"title\":_vm.tooltipText,\"tooltip-placement\":_vm.tooltipPlacement,\"data-testid\":\"user-avatar-link-username\"}},[_vm._v(\"\\n \"+_vm._s(_vm.username)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_vm._t(\"avatar-badge\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user_avatar_link.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user_avatar_link.vue?vue&type=script&lang=js\"","<script>\n/* This is a re-usable vue component for rendering a user avatar wrapped in\n a clickable link (likely to the user's profile). The link, image, and\n tooltip can be configured by props passed to this component.\n\n Sample configuration:\n\n <user-avatar-link\n :link-href=\"userProfileUrl\"\n :img-src=\"userAvatarSrc\"\n :img-alt=\"tooltipText\"\n :img-size=\"32\"\n :tooltip-text=\"tooltipText\"\n :tooltip-placement=\"top\"\n :username=\"username\"\n />\n\n*/\n\nimport { GlAvatarLink, GlTooltipDirective } from '@gitlab/ui';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport UserAvatarImage from './user_avatar_image.vue';\n\nexport default {\n name: 'UserAvatarLinkNew',\n components: {\n UserAvatarImage,\n GlAvatarLink,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n lazy: {\n type: Boolean,\n required: false,\n default: false,\n },\n linkHref: {\n type: String,\n required: false,\n default: '',\n },\n imgSrc: {\n type: String,\n required: false,\n default: '',\n },\n imgAlt: {\n type: String,\n required: false,\n default: '',\n },\n imgCssClasses: {\n type: String,\n required: false,\n default: '',\n },\n imgCssWrapperClasses: {\n type: String,\n required: false,\n default: '',\n },\n imgSize: {\n type: [Number, Object],\n required: true,\n },\n tooltipText: {\n type: String,\n required: false,\n default: '',\n },\n tooltipPlacement: {\n type: String,\n required: false,\n default: 'top',\n },\n popoverUserId: {\n type: [String, Number],\n required: false,\n default: '',\n },\n popoverUsername: {\n type: String,\n required: false,\n default: '',\n },\n username: {\n type: String,\n required: false,\n default: '',\n },\n },\n computed: {\n userId() {\n return getIdFromGraphQLId(this.popoverUserId);\n },\n shouldShowUsername() {\n return this.username.length > 0;\n },\n avatarTooltipText() {\n // Prevent showing tooltip when popoverUserId is present\n if (this.popoverUserId) {\n return '';\n }\n return this.shouldShowUsername ? '' : this.tooltipText;\n },\n },\n};\n</script>\n\n<template>\n <gl-avatar-link\n :href=\"linkHref\"\n :data-user-id=\"userId\"\n :data-username=\"popoverUsername\"\n class=\"user-avatar-link js-user-link\"\n @click.stop\n >\n <user-avatar-image\n :class=\"imgCssWrapperClasses\"\n :img-src=\"imgSrc\"\n :img-alt=\"imgAlt\"\n :css-classes=\"imgCssClasses\"\n :size=\"imgSize\"\n :tooltip-text=\"avatarTooltipText\"\n :tooltip-placement=\"tooltipPlacement\"\n :lazy=\"lazy\"\n >\n <slot></slot>\n </user-avatar-image>\n\n <span\n v-if=\"shouldShowUsername\"\n v-gl-tooltip\n :title=\"tooltipText\"\n :tooltip-placement=\"tooltipPlacement\"\n class=\"gl-ml-1\"\n data-testid=\"user-avatar-link-username\"\n >\n {{ username }}\n </span>\n\n <slot name=\"avatar-badge\"></slot>\n </gl-avatar-link>\n</template>\n","import { render, staticRenderFns } from \"./user_avatar_link.vue?vue&type=template&id=0c9f1264\"\nimport script from \"./user_avatar_link.vue?vue&type=script&lang=js\"\nexport * from \"./user_avatar_link.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export const ANY_TRIGGER_AUTHOR = 'Any';\nexport const FILTER_PIPELINES_SEARCH_DELAY = 200;\nexport const SCHEDULE_ORIGIN = 'schedule';\nexport const API_ORIGIN = 'api';\nexport const TRIGGER_ORIGIN = 'trigger';\n\nexport const CATALOG_TRACKING_LABEL = 'ci_cd_catalog_prompt';\nexport const GITLAB_UNIVERSITY_TRACKING_LABEL = 'gitlab_university_prompt';\nexport const MIGRATE_FROM_JENKINS_TRACKING_LABEL = 'migrate_from_jenkins_prompt';\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","module.exports = require('./head');\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","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineFailedJobsCount\"},\"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\":\"pipelineIid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"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\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineIid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"active\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobs\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"statuses\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"FAILED\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"retried\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":false}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"jobKind\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"BUILD\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":265}};\n doc.loc.source = {\"body\":\"query getPipelineFailedJobsCount($fullPath: ID!, $pipelineIid: ID!) {\\n project(fullPath: $fullPath) {\\n id\\n pipeline(iid: $pipelineIid) {\\n id\\n active\\n jobs(statuses: [FAILED], retried: false, jobKind: BUILD) {\\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[\"getPipelineFailedJobsCount\"] = oneQuery(doc, \"getPipelineFailedJobsCount\");\n \n","(function() {\n var Query, coreChars, countDir, getCharCodes, getExtension, opt_char_re, truncatedUpperCase, _ref;\n\n _ref = require(\"./pathScorer\"), countDir = _ref.countDir, getExtension = _ref.getExtension;\n\n module.exports = Query = (function() {\n function Query(query, _arg) {\n var optCharRegEx, pathSeparator, _ref1;\n _ref1 = _arg != null ? _arg : {}, optCharRegEx = _ref1.optCharRegEx, pathSeparator = _ref1.pathSeparator;\n if (!(query && query.length)) {\n return null;\n }\n this.query = query;\n this.query_lw = query.toLowerCase();\n this.core = coreChars(query, optCharRegEx);\n this.core_lw = this.core.toLowerCase();\n this.core_up = truncatedUpperCase(this.core);\n this.depth = countDir(query, query.length, pathSeparator);\n this.ext = getExtension(this.query_lw);\n this.charCodes = getCharCodes(this.query_lw);\n }\n\n return Query;\n\n })();\n\n opt_char_re = /[ _\\-:\\/\\\\]/g;\n\n coreChars = function(query, optCharRegEx) {\n if (optCharRegEx == null) {\n optCharRegEx = opt_char_re;\n }\n return query.replace(optCharRegEx, '');\n };\n\n truncatedUpperCase = function(str) {\n var char, upper, _i, _len;\n upper = \"\";\n for (_i = 0, _len = str.length; _i < _len; _i++) {\n char = str[_i];\n upper += char.toUpperCase()[0];\n }\n return upper;\n };\n\n getCharCodes = function(str) {\n var charCodes, i, len;\n len = str.length;\n i = -1;\n charCodes = [];\n while (++i < len) {\n charCodes[str.charCodeAt(i)] = true;\n }\n return charCodes;\n };\n\n}).call(this);\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","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","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('section',{ref:\"crudComponent\",staticClass:\"crud gl-border gl-rounded-base gl-border-section gl-bg-subtle\",class:{ 'gl-mt-5': _vm.isCollapsible },attrs:{\"id\":_vm.anchorId}},[_c('header',{staticClass:\"crud-header gl-border-b gl-flex gl-flex-wrap gl-justify-between gl-gap-x-5 gl-gap-y-2 gl-rounded-t-base gl-border-section gl-bg-section gl-px-5 gl-py-4\",class:[\n _vm.headerClass,\n {\n 'gl-rounded-base gl-border-b-transparent': !_vm.isContentVisible,\n 'gl-relative gl-pr-10': _vm.isCollapsible,\n },\n ]},[_c('div',{staticClass:\"gl-flex gl-grow gl-flex-col gl-self-center\"},[_c('h2',{staticClass:\"gl-m-0 gl-inline-flex gl-items-center gl-gap-3 gl-text-base gl-font-bold gl-leading-normal\",class:_vm.titleClass,attrs:{\"data-testid\":\"crud-title\"}},[(_vm.anchorId)?_c('gl-link',{staticClass:\"anchor gl-absolute gl-no-underline\",attrs:{\"href\":`#${_vm.anchorId}`,\"aria-labelledby\":_vm.anchorId}}):_vm._e(),_vm._v(\" \"),(_vm.$scopedSlots.title)?_vm._t(\"title\"):[_vm._v(_vm._s(_vm.title))],_vm._v(\" \"),(_vm.displayedCount || _vm.$scopedSlots.count)?_c('span',{staticClass:\"crud-count gl-inline-flex gl-items-center gl-gap-2 gl-self-start gl-text-sm gl-text-subtle\",attrs:{\"data-testid\":\"crud-count\"}},[(_vm.displayedCount)?[(_vm.icon)?_c('gl-icon',{attrs:{\"name\":_vm.icon,\"variant\":\"subtle\",\"data-testid\":\"crud-icon\"}}):_vm._e(),_vm._v(\"\\n \"+_vm._s(_vm.displayedCount)+\"\\n \")]:_vm._e(),_vm._v(\" \"),(_vm.$scopedSlots.count)?_vm._t(\"count\"):_vm._e()],2):_vm._e()],2),_vm._v(\" \"),(_vm.description || _vm.$scopedSlots.description)?_c('p',{staticClass:\"gl-mb-0 gl-mt-2 gl-text-sm gl-leading-normal gl-text-subtle\",attrs:{\"data-testid\":\"crud-description\"}},[(_vm.$scopedSlots.description)?_vm._t(\"description\"):[_vm._v(_vm._s(_vm.description))]],2):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-items-baseline gl-gap-3\",attrs:{\"data-testid\":\"crud-actions\"}},[_vm._t(\"actions\"),_vm._v(\" \"),(_vm.toggleText && !_vm.isFormUsedAndVisible)?_c('gl-button',{attrs:{\"size\":\"small\",\"aria-label\":_vm.toggleAriaLabel,\"data-testid\":\"crud-form-toggle\"},on:{\"click\":_vm.showForm}},[_vm._v(_vm._s(_vm.toggleText))]):_vm._e(),_vm._v(\" \"),(_vm.isCollapsible)?_c('div',{staticClass:\"gl-border-l gl-absolute gl-right-5 gl-top-4 gl-h-6 gl-border-l-section gl-pl-3\"},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"-gl-mr-2 gl-self-start\",attrs:{\"title\":_vm.toggleLabel,\"icon\":_vm.toggleIcon,\"category\":\"tertiary\",\"size\":\"small\",\"aria-label\":_vm.toggleLabel,\"aria-expanded\":_vm.ariaExpandedAttr,\"aria-controls\":_vm.anchorId,\"data-testid\":\"crud-collapse-toggle\"},on:{\"click\":_vm.toggleCollapse}})],1):_vm._e()],2)]),_vm._v(\" \"),(_vm.isFormUsedAndVisible)?_c('div',{staticClass:\"gl-border-b gl-border-section gl-bg-section gl-p-5 gl-pt-4\",attrs:{\"data-testid\":\"crud-form\"}},[_vm._t(\"form\",null,{\"hideForm\":_vm.hideForm})],2):_vm._e(),_vm._v(\" \"),(_vm.isContentVisible)?_c('div',{staticClass:\"crud-body gl-mx-5 gl-my-4\",class:[_vm.bodyClass, { 'gl-rounded-b-base': !_vm.$scopedSlots.footer }],attrs:{\"data-testid\":\"crud-body\"}},[(_vm.isLoading)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\",\"data-testid\":\"crud-loading\"}}):(_vm.$scopedSlots.empty)?_c('span',{staticClass:\"gl-text-subtle\",attrs:{\"data-testid\":\"crud-empty\"}},[_vm._t(\"empty\")],2):_vm._t(\"default\",null,{\"showForm\":_vm.showForm}),_vm._v(\" \"),(_vm.$scopedSlots.pagination)?_c('div',{staticClass:\"crud-pagination gl-border-t gl-flex gl-justify-center gl-border-t-section gl-p-5\",attrs:{\"data-testid\":\"crud-pagination\"}},[_vm._t(\"pagination\")],2):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.$scopedSlots.footer)?_c('footer',{staticClass:\"gl-border-t gl-rounded-b-base gl-border-section gl-bg-section gl-px-5 gl-py-4\",attrs:{\"data-testid\":\"crud-footer\"}},[_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!./crud_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!./crud_component.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlIcon, GlLoadingIcon, GlLink, GlTooltipDirective } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport default {\n components: {\n GlButton,\n GlIcon,\n GlLoadingIcon,\n GlLink,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n title: {\n type: String,\n required: false,\n default: '',\n },\n description: {\n type: String,\n required: false,\n default: null,\n },\n count: {\n type: [String, Number],\n required: false,\n default: '',\n },\n icon: {\n type: String,\n required: false,\n default: null,\n },\n toggleText: {\n type: String,\n required: false,\n default: null,\n },\n toggleAriaLabel: {\n type: String,\n required: false,\n default: null,\n },\n isCollapsible: {\n type: Boolean,\n required: false,\n default: false,\n },\n collapsed: {\n type: Boolean,\n required: false,\n default: false,\n },\n isLoading: {\n type: Boolean,\n required: false,\n default: false,\n },\n anchorId: {\n type: String,\n required: false,\n default: '',\n },\n headerClass: {\n type: [String, Object],\n required: false,\n default: null,\n },\n titleClass: {\n type: [String, Object],\n required: false,\n default: null,\n },\n bodyClass: {\n type: [String, Object],\n required: false,\n default: null,\n },\n persistCollapsedState: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n data() {\n return {\n isCollapsed:\n this.collapsed ||\n (this.persistCollapsedState &&\n localStorage.getItem(this.getLocalStorageKeyName()) === 'true'),\n isFormVisible: false,\n };\n },\n computed: {\n isContentVisible() {\n const hasContent =\n this.$scopedSlots.default || this.$scopedSlots.empty || this.$scopedSlots.pagination;\n return !(hasContent && this.isCollapsible && this.isCollapsed);\n },\n toggleIcon() {\n return this.isCollapsed ? 'chevron-lg-down' : 'chevron-lg-up';\n },\n toggleLabel() {\n return this.isCollapsed ? __('Expand') : __('Collapse');\n },\n ariaExpandedAttr() {\n return this.isCollapsed ? 'false' : 'true';\n },\n displayedCount() {\n if (this.isLoading) {\n return '...';\n }\n\n return this.icon && !this.count ? '0' : this.count;\n },\n isFormUsedAndVisible() {\n return this.$scopedSlots.form && this.isFormVisible && !this.isCollapsed;\n },\n },\n watch: {\n collapsed: {\n handler(newVal) {\n this.isCollapsed = newVal > 0;\n },\n },\n },\n methods: {\n toggleCollapse() {\n this.isCollapsed = !this.isCollapsed;\n\n if (this.isCollapsed) {\n this.$emit('collapsed');\n } else {\n this.$emit('expanded');\n }\n\n if (this.persistCollapsedState) {\n localStorage.setItem(this.getLocalStorageKeyName(), this.isCollapsed);\n }\n },\n showForm() {\n this.isFormVisible = true;\n this.isCollapsed = false;\n this.$emit('showForm');\n },\n hideForm() {\n this.isFormVisible = false;\n this.$emit('hideForm');\n },\n toggleForm() {\n if (this.isFormVisible) {\n this.hideForm();\n } else {\n this.showForm();\n }\n },\n getLocalStorageKeyName() {\n return `crud-collapse-${this.anchorId}`;\n },\n },\n};\n</script>\n\n<template>\n <section\n :id=\"anchorId\"\n ref=\"crudComponent\"\n class=\"crud gl-border gl-rounded-base gl-border-section gl-bg-subtle\"\n :class=\"{ 'gl-mt-5': isCollapsible }\"\n >\n <header\n class=\"crud-header gl-border-b gl-flex gl-flex-wrap gl-justify-between gl-gap-x-5 gl-gap-y-2 gl-rounded-t-base gl-border-section gl-bg-section gl-px-5 gl-py-4\"\n :class=\"[\n headerClass,\n {\n 'gl-rounded-base gl-border-b-transparent': !isContentVisible,\n 'gl-relative gl-pr-10': isCollapsible,\n },\n ]\"\n >\n <div class=\"gl-flex gl-grow gl-flex-col gl-self-center\">\n <h2\n class=\"gl-m-0 gl-inline-flex gl-items-center gl-gap-3 gl-text-base gl-font-bold gl-leading-normal\"\n :class=\"titleClass\"\n data-testid=\"crud-title\"\n >\n <gl-link\n v-if=\"anchorId\"\n class=\"anchor gl-absolute gl-no-underline\"\n :href=\"`#${anchorId}`\"\n :aria-labelledby=\"anchorId\"\n />\n <slot v-if=\"$scopedSlots.title\" name=\"title\"></slot>\n <template v-else>{{ title }}</template>\n\n <span\n v-if=\"displayedCount || $scopedSlots.count\"\n class=\"crud-count gl-inline-flex gl-items-center gl-gap-2 gl-self-start gl-text-sm gl-text-subtle\"\n data-testid=\"crud-count\"\n >\n <template v-if=\"displayedCount\">\n <gl-icon v-if=\"icon\" :name=\"icon\" variant=\"subtle\" data-testid=\"crud-icon\" />\n {{ displayedCount }}\n </template>\n <slot v-if=\"$scopedSlots.count\" name=\"count\"></slot>\n </span>\n </h2>\n <p\n v-if=\"description || $scopedSlots.description\"\n class=\"gl-mb-0 gl-mt-2 gl-text-sm gl-leading-normal gl-text-subtle\"\n data-testid=\"crud-description\"\n >\n <slot v-if=\"$scopedSlots.description\" name=\"description\"></slot>\n <template v-else>{{ description }}</template>\n </p>\n </div>\n <div class=\"gl-flex gl-items-baseline gl-gap-3\" data-testid=\"crud-actions\">\n <slot name=\"actions\"></slot>\n <gl-button\n v-if=\"toggleText && !isFormUsedAndVisible\"\n size=\"small\"\n :aria-label=\"toggleAriaLabel\"\n data-testid=\"crud-form-toggle\"\n @click=\"showForm\"\n >{{ toggleText }}</gl-button\n >\n <div\n v-if=\"isCollapsible\"\n class=\"gl-border-l gl-absolute gl-right-5 gl-top-4 gl-h-6 gl-border-l-section gl-pl-3\"\n >\n <gl-button\n v-gl-tooltip\n :title=\"toggleLabel\"\n :icon=\"toggleIcon\"\n category=\"tertiary\"\n size=\"small\"\n :aria-label=\"toggleLabel\"\n :aria-expanded=\"ariaExpandedAttr\"\n :aria-controls=\"anchorId\"\n class=\"-gl-mr-2 gl-self-start\"\n data-testid=\"crud-collapse-toggle\"\n @click=\"toggleCollapse\"\n />\n </div>\n </div>\n </header>\n\n <div\n v-if=\"isFormUsedAndVisible\"\n class=\"gl-border-b gl-border-section gl-bg-section gl-p-5 gl-pt-4\"\n data-testid=\"crud-form\"\n >\n <slot name=\"form\" :hide-form=\"hideForm\"></slot>\n </div>\n\n <div\n v-if=\"isContentVisible\"\n class=\"crud-body gl-mx-5 gl-my-4\"\n :class=\"[bodyClass, { 'gl-rounded-b-base': !$scopedSlots.footer }]\"\n data-testid=\"crud-body\"\n >\n <gl-loading-icon v-if=\"isLoading\" size=\"sm\" data-testid=\"crud-loading\" />\n <span v-else-if=\"$scopedSlots.empty\" class=\"gl-text-subtle\" data-testid=\"crud-empty\">\n <slot name=\"empty\"></slot>\n </span>\n <slot v-else :show-form=\"showForm\"></slot>\n\n <div\n v-if=\"$scopedSlots.pagination\"\n class=\"crud-pagination gl-border-t gl-flex gl-justify-center gl-border-t-section gl-p-5\"\n data-testid=\"crud-pagination\"\n >\n <slot name=\"pagination\"></slot>\n </div>\n </div>\n\n <footer\n v-if=\"$scopedSlots.footer\"\n class=\"gl-border-t gl-rounded-b-base gl-border-section gl-bg-section gl-px-5 gl-py-4\"\n data-testid=\"crud-footer\"\n >\n <slot name=\"footer\"></slot>\n </footer>\n </section>\n</template>\n","import { render, staticRenderFns } from \"./crud_component.vue?vue&type=template&id=3c3ad8dc\"\nimport script from \"./crud_component.vue?vue&type=script&lang=js\"\nexport * from \"./crud_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","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","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","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 arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","(function() {\n var computeScore, countDir, file_coeff, getExtension, getExtensionScore, isMatch, scorePath, scoreSize, tau_depth, _ref;\n\n _ref = require('./scorer'), isMatch = _ref.isMatch, computeScore = _ref.computeScore, scoreSize = _ref.scoreSize;\n\n tau_depth = 20;\n\n file_coeff = 2.5;\n\n exports.score = function(string, query, options) {\n var allowErrors, preparedQuery, score, string_lw;\n preparedQuery = options.preparedQuery, allowErrors = options.allowErrors;\n if (!(allowErrors || isMatch(string, preparedQuery.core_lw, preparedQuery.core_up))) {\n return 0;\n }\n string_lw = string.toLowerCase();\n score = computeScore(string, string_lw, preparedQuery);\n score = scorePath(string, string_lw, score, options);\n return Math.ceil(score);\n };\n\n scorePath = function(subject, subject_lw, fullPathScore, options) {\n var alpha, basePathScore, basePos, depth, end, extAdjust, fileLength, pathSeparator, preparedQuery, useExtensionBonus;\n if (fullPathScore === 0) {\n return 0;\n }\n preparedQuery = options.preparedQuery, useExtensionBonus = options.useExtensionBonus, pathSeparator = options.pathSeparator;\n end = subject.length - 1;\n while (subject[end] === pathSeparator) {\n end--;\n }\n basePos = subject.lastIndexOf(pathSeparator, end);\n fileLength = end - basePos;\n extAdjust = 1.0;\n if (useExtensionBonus) {\n extAdjust += getExtensionScore(subject_lw, preparedQuery.ext, basePos, end, 2);\n fullPathScore *= extAdjust;\n }\n if (basePos === -1) {\n return fullPathScore;\n }\n depth = preparedQuery.depth;\n while (basePos > -1 && depth-- > 0) {\n basePos = subject.lastIndexOf(pathSeparator, basePos - 1);\n }\n basePathScore = basePos === -1 ? fullPathScore : extAdjust * computeScore(subject.slice(basePos + 1, end + 1), subject_lw.slice(basePos + 1, end + 1), preparedQuery);\n alpha = 0.5 * tau_depth / (tau_depth + countDir(subject, end + 1, pathSeparator));\n return alpha * basePathScore + (1 - alpha) * fullPathScore * scoreSize(0, file_coeff * fileLength);\n };\n\n exports.countDir = countDir = function(path, end, pathSeparator) {\n var count, i;\n if (end < 1) {\n return 0;\n }\n count = 0;\n i = -1;\n while (++i < end && path[i] === pathSeparator) {\n continue;\n }\n while (++i < end) {\n if (path[i] === pathSeparator) {\n count++;\n while (++i < end && path[i] === pathSeparator) {\n continue;\n }\n }\n }\n return count;\n };\n\n exports.getExtension = getExtension = function(str) {\n var pos;\n pos = str.lastIndexOf(\".\");\n if (pos < 0) {\n return \"\";\n } else {\n return str.substr(pos + 1);\n }\n };\n\n getExtensionScore = function(candidate, ext, startPos, endPos, maxDepth) {\n var m, matched, n, pos;\n if (!ext.length) {\n return 0;\n }\n pos = candidate.lastIndexOf(\".\", endPos);\n if (!(pos > startPos)) {\n return 0;\n }\n n = ext.length;\n m = endPos - pos;\n if (m < n) {\n n = m;\n m = ext.length;\n }\n pos++;\n matched = -1;\n while (++matched < n) {\n if (candidate[pos + matched] !== ext[matched]) {\n break;\n }\n }\n if (matched === 0 && maxDepth > 0) {\n return 0.9 * getExtensionScore(candidate, ext, startPos, pos - 2, maxDepth - 1);\n }\n return matched / m;\n };\n\n}).call(this);\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","'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","export const DOWNSTREAM = 'downstream';\nexport const MAIN = 'main';\nexport const UPSTREAM = 'upstream';\n\n/*\n this value is based on the gl-pipeline-job-width class\n plus some extra for the margins\n*/\nexport const ONE_COL_WIDTH = 180;\n\nexport const STAGE_VIEW = 'stage';\nexport const LAYER_VIEW = 'layer';\n\nexport const SKIP_RETRY_MODAL_KEY = 'skip_retry_modal';\nexport const VIEW_TYPE_KEY = 'pipeline_graph_view_type';\n\nexport const SINGLE_JOB = 'single_job';\nexport const JOB_DROPDOWN = 'job_dropdown';\n\nexport const BUILD_KIND = 'BUILD';\nexport const BRIDGE_KIND = 'BRIDGE';\n\nexport const ACTION_FAILURE = 'action_failure';\nexport const IID_FAILURE = 'missing_iid';\n\nexport const RETRY_ACTION_TITLE = 'Retry';\nexport const MANUAL_ACTION_TITLE = 'Run';\n\n/*\n this poll interval is shared between the graph,\n pipeline header, jobs tab and failed jobs tab to\n keep all the data relatively in sync\n*/\nexport const POLL_INTERVAL = 10000;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","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","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.shouldDisplayButton)?_c('gl-button',{attrs:{\"icon\":\"duo-chat\",\"variant\":\"confirm\",\"data-testid\":\"rca-duo-button\"},on:{\"click\":_vm.callDuo}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Jobs|Troubleshoot'))+\"\\n\")]):_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!./root_cause_analysis_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!./root_cause_analysis_button.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\nimport { sendDuoChatCommand } from 'ee/ai/utils';\nimport { InternalEvents } from '~/tracking';\nimport { TYPENAME_CI_BUILD } from '~/graphql_shared/constants';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\n\nexport default {\n components: {\n GlButton,\n },\n mixins: [InternalEvents.mixin()],\n props: {\n canTroubleshootJob: {\n type: Boolean,\n required: true,\n },\n jobStatusGroup: {\n type: String,\n required: true,\n },\n jobId: {\n type: Number,\n required: false,\n default: null,\n },\n jobGid: {\n type: String,\n required: false,\n default: '',\n },\n isBuild: {\n type: Boolean,\n required: false,\n default: true,\n },\n },\n computed: {\n resourceId() {\n return this.jobGid || convertToGraphQLId(TYPENAME_CI_BUILD, this.jobId);\n },\n jobFailed() {\n const failedGroups = ['failed', 'failed-with-warnings'];\n\n return failedGroups.includes(this.jobStatusGroup);\n },\n shouldDisplayButton() {\n return this.jobFailed && this.canTroubleshootJob && this.isBuild;\n },\n },\n mounted() {\n this.trackEvent('render_root_cause_analysis');\n },\n methods: {\n callDuo() {\n this.trackEvent('click_root_cause_analysis');\n\n sendDuoChatCommand({\n question: '/troubleshoot',\n resourceId: this.resourceId,\n });\n },\n },\n};\n</script>\n<template>\n <gl-button\n v-if=\"shouldDisplayButton\"\n icon=\"duo-chat\"\n variant=\"confirm\"\n data-testid=\"rca-duo-button\"\n @click=\"callDuo\"\n >\n {{ s__('Jobs|Troubleshoot') }}\n </gl-button>\n</template>\n","import { render, staticRenderFns } from \"./root_cause_analysis_button.vue?vue&type=template&id=9a360570\"\nimport script from \"./root_cause_analysis_button.vue?vue&type=script&lang=js\"\nexport * from \"./root_cause_analysis_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","\n /*! \n * portal-vue © Thorsten Lünborg, 2019 \n * \n * Version: 2.1.7\n * \n * LICENCE: MIT \n * \n * https://github.com/linusborg/portal-vue\n * \n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Vue = _interopDefault(require('vue'));\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar inBrowser = typeof window !== 'undefined';\nfunction freeze(item) {\n if (Array.isArray(item) || _typeof(item) === 'object') {\n return Object.freeze(item);\n }\n\n return item;\n}\nfunction combinePassengers(transports) {\n var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return transports.reduce(function (passengers, transport) {\n var temp = transport.passengers[0];\n var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n return passengers.concat(newPassengers);\n }, []);\n}\nfunction stableSort(array, compareFn) {\n return array.map(function (v, idx) {\n return [idx, v];\n }).sort(function (a, b) {\n return compareFn(a[1], b[1]) || a[0] - b[0];\n }).map(function (c) {\n return c[1];\n });\n}\nfunction pick(obj, keys) {\n return keys.reduce(function (acc, key) {\n if (obj.hasOwnProperty(key)) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nvar transports = {};\nvar targets = {};\nvar sources = {};\nvar Wormhole = Vue.extend({\n data: function data() {\n return {\n transports: transports,\n targets: targets,\n sources: sources,\n trackInstances: inBrowser\n };\n },\n methods: {\n open: function open(transport) {\n if (!inBrowser) return;\n var to = transport.to,\n from = transport.from,\n passengers = transport.passengers,\n _transport$order = transport.order,\n order = _transport$order === void 0 ? Infinity : _transport$order;\n if (!to || !from || !passengers) return;\n var newTransport = {\n to: to,\n from: from,\n passengers: freeze(passengers),\n order: order\n };\n var keys = Object.keys(this.transports);\n\n if (keys.indexOf(to) === -1) {\n Vue.set(this.transports, to, []);\n }\n\n var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n\n var newTransports = this.transports[to].slice(0);\n\n if (currentIndex === -1) {\n newTransports.push(newTransport);\n } else {\n newTransports[currentIndex] = newTransport;\n }\n\n this.transports[to] = stableSort(newTransports, function (a, b) {\n return a.order - b.order;\n });\n },\n close: function close(transport) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var to = transport.to,\n from = transport.from;\n if (!to || !from && force === false) return;\n\n if (!this.transports[to]) {\n return;\n }\n\n if (force) {\n this.transports[to] = [];\n } else {\n var index = this.$_getTransportIndex(transport);\n\n if (index >= 0) {\n // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n var newTransports = this.transports[to].slice(0);\n newTransports.splice(index, 1);\n this.transports[to] = newTransports;\n }\n }\n },\n registerTarget: function registerTarget(target, vm, force) {\n if (!inBrowser) return;\n\n if (this.trackInstances && !force && this.targets[target]) {\n console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n }\n\n this.$set(this.targets, target, Object.freeze([vm]));\n },\n unregisterTarget: function unregisterTarget(target) {\n this.$delete(this.targets, target);\n },\n registerSource: function registerSource(source, vm, force) {\n if (!inBrowser) return;\n\n if (this.trackInstances && !force && this.sources[source]) {\n console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n }\n\n this.$set(this.sources, source, Object.freeze([vm]));\n },\n unregisterSource: function unregisterSource(source) {\n this.$delete(this.sources, source);\n },\n hasTarget: function hasTarget(to) {\n return !!(this.targets[to] && this.targets[to][0]);\n },\n hasSource: function hasSource(to) {\n return !!(this.sources[to] && this.sources[to][0]);\n },\n hasContentFor: function hasContentFor(to) {\n return !!this.transports[to] && !!this.transports[to].length;\n },\n // Internal\n $_getTransportIndex: function $_getTransportIndex(_ref) {\n var to = _ref.to,\n from = _ref.from;\n\n for (var i in this.transports[to]) {\n if (this.transports[to][i].from === from) {\n return +i;\n }\n }\n\n return -1;\n }\n }\n});\nvar wormhole = new Wormhole(transports);\n\nvar _id = 1;\nvar Portal = Vue.extend({\n name: 'portal',\n props: {\n disabled: {\n type: Boolean\n },\n name: {\n type: String,\n default: function _default() {\n return String(_id++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n }\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerSource(_this.name, _this);\n });\n },\n mounted: function mounted() {\n if (!this.disabled) {\n this.sendUpdate();\n }\n },\n updated: function updated() {\n if (this.disabled) {\n this.clear();\n } else {\n this.sendUpdate();\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterSource(this.name);\n this.clear();\n },\n watch: {\n to: function to(newValue, oldValue) {\n oldValue && oldValue !== newValue && this.clear(oldValue);\n this.sendUpdate();\n }\n },\n methods: {\n clear: function clear(target) {\n var closer = {\n from: this.name,\n to: target || this.to\n };\n wormhole.close(closer);\n },\n normalizeSlots: function normalizeSlots() {\n return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n },\n normalizeOwnChildren: function normalizeOwnChildren(children) {\n return typeof children === 'function' ? children(this.slotProps) : children;\n },\n sendUpdate: function sendUpdate() {\n var slotContent = this.normalizeSlots();\n\n if (slotContent) {\n var transport = {\n from: this.name,\n to: this.to,\n passengers: _toConsumableArray(slotContent),\n order: this.order\n };\n wormhole.open(transport);\n } else {\n this.clear();\n }\n }\n },\n render: function render(h) {\n var children = this.$slots.default || this.$scopedSlots.default || [];\n var Tag = this.tag;\n\n if (children && this.disabled) {\n return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n } else {\n return this.slim ? h() : h(Tag, {\n class: {\n 'v-portal': true\n },\n style: {\n display: 'none'\n },\n key: 'v-portal-placeholder'\n });\n }\n }\n});\n\nvar PortalTarget = Vue.extend({\n name: 'portalTarget',\n props: {\n multiple: {\n type: Boolean,\n default: false\n },\n name: {\n type: String,\n required: true\n },\n slim: {\n type: Boolean,\n default: false\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n data: function data() {\n return {\n transports: wormhole.transports,\n firstRender: true\n };\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerTarget(_this.name, _this);\n });\n },\n watch: {\n ownTransports: function ownTransports() {\n this.$emit('change', this.children().length > 0);\n },\n name: function name(newVal, oldVal) {\n /**\r\n * TODO\r\n * This should warn as well ...\r\n */\n wormhole.unregisterTarget(oldVal);\n wormhole.registerTarget(newVal, this);\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.transition) {\n this.$nextTick(function () {\n // only when we have a transition, because it causes a re-render\n _this2.firstRender = false;\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterTarget(this.name);\n },\n computed: {\n ownTransports: function ownTransports() {\n var transports = this.transports[this.name] || [];\n\n if (this.multiple) {\n return transports;\n }\n\n return transports.length === 0 ? [] : [transports[transports.length - 1]];\n },\n passengers: function passengers() {\n return combinePassengers(this.ownTransports, this.slotProps);\n }\n },\n methods: {\n // can't be a computed prop because it has to \"react\" to $slot changes.\n children: function children() {\n return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n },\n // can't be a computed prop because it has to \"react\" to this.children().\n noWrapper: function noWrapper() {\n var noWrapper = this.slim && !this.transition;\n\n if (noWrapper && this.children().length > 1) {\n console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n }\n\n return noWrapper;\n }\n },\n render: function render(h) {\n var noWrapper = this.noWrapper();\n var children = this.children();\n var Tag = this.transition || this.tag;\n return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n props: {\n // if we have a transition component, pass the tag if it exists\n tag: this.transition && this.tag ? this.tag : undefined\n },\n class: {\n 'vue-portal-target': true\n }\n }, children);\n }\n});\n\nvar _id$1 = 0;\nvar portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\nvar targetProps = ['multiple', 'transition'];\nvar MountingPortal = Vue.extend({\n name: 'MountingPortal',\n inheritAttrs: false,\n props: {\n append: {\n type: [Boolean, String]\n },\n bail: {\n type: Boolean\n },\n mountTo: {\n type: String,\n required: true\n },\n // Portal\n disabled: {\n type: Boolean\n },\n // name for the portal\n name: {\n type: String,\n default: function _default() {\n return 'mounted_' + String(_id$1++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n // name for the target\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n },\n // Target\n multiple: {\n type: Boolean,\n default: false\n },\n targetSlim: {\n type: Boolean\n },\n targetSlotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n targetTag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n created: function created() {\n if (typeof document === 'undefined') return;\n var el = document.querySelector(this.mountTo);\n\n if (!el) {\n console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n return;\n }\n\n var props = this.$props; // Target already exists\n\n if (wormhole.targets[props.name]) {\n if (props.bail) {\n console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n Aborting because 'bail: true' is set\"));\n } else {\n this.portalTarget = wormhole.targets[props.name];\n }\n\n return;\n }\n\n var append = props.append;\n\n if (append) {\n var type = typeof append === 'string' ? append : 'DIV';\n var mountEl = document.createElement(type);\n el.appendChild(mountEl);\n el = mountEl;\n } // get props for target from $props\n // we have to rename a few of them\n\n\n var _props = pick(this.$props, targetProps);\n\n _props.slim = this.targetSlim;\n _props.tag = this.targetTag;\n _props.slotProps = this.targetSlotProps;\n _props.name = this.to;\n this.portalTarget = new PortalTarget({\n el: el,\n parent: this.$parent || this,\n propsData: _props\n });\n },\n beforeDestroy: function beforeDestroy() {\n var target = this.portalTarget;\n\n if (this.append) {\n var el = target.$el;\n el.parentNode.removeChild(el);\n }\n\n target.$destroy();\n },\n render: function render(h) {\n if (!this.portalTarget) {\n console.warn(\"[portal-vue] Target wasn't mounted\");\n return h();\n } // if there's no \"manual\" scoped slot, so we create a <Portal> ourselves\n\n\n if (!this.$scopedSlots.manual) {\n var props = pick(this.$props, portalProps);\n return h(Portal, {\n props: props,\n attrs: this.$attrs,\n on: this.$listeners,\n scopedSlots: this.$scopedSlots\n }, this.$slots.default);\n } // else, we render the scoped slot\n\n\n var content = this.$scopedSlots.manual({\n to: this.to\n }); // if user used <template> for the scoped slot\n // content will be an array\n\n if (Array.isArray(content)) {\n content = content[0];\n }\n\n if (!content) return h();\n return content;\n }\n});\n\nfunction install(Vue$$1) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Vue$$1.component(options.portalName || 'Portal', Portal);\n Vue$$1.component(options.portalTargetName || 'PortalTarget', PortalTarget);\n Vue$$1.component(options.MountingPortalName || 'MountingPortal', MountingPortal);\n}\n\nvar index = {\n install: install\n};\n\nexports.default = index;\nexports.Portal = Portal;\nexports.PortalTarget = PortalTarget;\nexports.MountingPortal = MountingPortal;\nexports.Wormhole = wormhole;\n//# sourceMappingURL=portal-vue.common.js.map\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","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","import Visibility from 'visibilityjs';\nimport { createAlert } from '~/alert';\nimport eventHub from '~/ci/event_hub';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { historyPushState, buildUrlWithCurrentLocation } from '~/lib/utils/common_utils';\nimport { reportToSentry } from '~/ci/utils';\nimport { HTTP_STATUS_UNAUTHORIZED } from '~/lib/utils/http_status';\nimport Poll from '~/lib/utils/poll';\nimport { __ } from '~/locale';\nimport { validateParams } from '~/ci/pipeline_details/utils';\nimport { CANCEL_REQUEST, TOAST_MESSAGE } from '../constants';\n\nexport default {\n data() {\n return {\n isLoading: false,\n hasError: false,\n isMakingRequest: false,\n updateGraphDropdown: false,\n hasMadeRequest: false,\n };\n },\n computed: {\n shouldRenderPagination() {\n return !this.isLoading;\n },\n },\n beforeMount() {\n this.poll = new Poll({\n resource: this.service,\n method: 'getPipelines',\n data: this.requestData ? this.requestData : undefined,\n successCallback: this.successCallback,\n errorCallback: this.errorCallback,\n notificationCallback: this.setIsMakingRequest,\n });\n\n if (!Visibility.hidden()) {\n this.isLoading = true;\n this.poll.makeRequest();\n } else {\n // If tab is not visible we need to make the first request so we don't show the empty\n // state without knowing if there are any pipelines\n this.fetchPipelines();\n }\n\n Visibility.change(() => {\n if (!Visibility.hidden()) {\n this.poll.restart();\n } else {\n this.poll.stop();\n }\n });\n\n eventHub.$on('postAction', this.postAction);\n eventHub.$on('updateTable', this.updateTable);\n eventHub.$on('runMergeRequestPipeline', this.runMergeRequestPipeline);\n },\n beforeDestroy() {\n eventHub.$off('postAction', this.postAction);\n eventHub.$off('updateTable', this.updateTable);\n eventHub.$off('runMergeRequestPipeline', this.runMergeRequestPipeline);\n },\n destroyed() {\n this.poll.stop();\n },\n methods: {\n onCancelPipeline(pipeline) {\n this.postAction(pipeline.cancel_path);\n },\n onRefreshPipelinesTable() {\n this.updateTable();\n },\n onRetryPipeline(pipeline) {\n this.postAction(pipeline.retry_path);\n },\n updateInternalState(parameters) {\n this.poll.stop();\n\n const queryString = Object.keys(parameters)\n .map((parameter) => {\n const value = parameters[parameter];\n // update internal state for UI\n this[parameter] = value;\n return `${parameter}=${encodeURIComponent(value)}`;\n })\n .join('&');\n\n // update polling parameters\n this.requestData = parameters;\n\n historyPushState(buildUrlWithCurrentLocation(`?${queryString}`));\n\n this.isLoading = true;\n },\n /**\n * Handles URL and query parameter changes.\n * When the user uses the pagination or the tabs,\n * - update URL\n * - Make API request to the server with new parameters\n * - Update the polling function\n * - Update the internal state\n */\n updateContent(parameters) {\n this.updateInternalState(parameters);\n\n // fetch new data\n return this.service\n .getPipelines(this.requestData)\n .then((response) => {\n this.isLoading = false;\n this.successCallback(response);\n\n this.poll.enable({ data: this.requestData, response });\n })\n .catch((error) => {\n this.isLoading = false;\n this.errorCallback(error);\n\n // restart polling\n this.poll.restart({ data: this.requestData });\n });\n },\n updateTable() {\n // Cancel ongoing request\n if (this.isMakingRequest) {\n this.service.cancelationSource.cancel(CANCEL_REQUEST);\n }\n // Stop polling\n this.poll.stop();\n // Restarting the poll also makes an initial request\n return this.poll.restart();\n },\n fetchPipelines() {\n if (!this.isMakingRequest) {\n this.isLoading = true;\n\n this.getPipelines();\n }\n },\n getPipelines() {\n return this.service\n .getPipelines(this.requestData)\n .then((response) => this.successCallback(response))\n .catch((error) => this.errorCallback(error));\n },\n setCommonData(pipelines, isUsingAsyncPipelineCreation = false) {\n this.store.storePipelines(pipelines, isUsingAsyncPipelineCreation);\n this.isLoading = false;\n this.updateGraphDropdown = true;\n this.hasMadeRequest = true;\n\n // In case the previous polling request returned an error, we need to reset it\n if (this.hasError) {\n this.hasError = false;\n }\n },\n errorCallback(error) {\n this.hasMadeRequest = true;\n this.isLoading = false;\n\n if (error && error.message && error.message !== CANCEL_REQUEST) {\n this.hasError = true;\n this.updateGraphDropdown = false;\n }\n reportToSentry('pipelines_list', error);\n },\n setIsMakingRequest(isMakingRequest) {\n this.isMakingRequest = isMakingRequest;\n\n if (isMakingRequest) {\n this.updateGraphDropdown = false;\n }\n },\n postAction(endpoint) {\n this.service\n .postAction(endpoint)\n .then(() => this.updateTable())\n .catch(() =>\n createAlert({\n message: __('An error occurred while making the request.'),\n }),\n );\n },\n\n /**\n * When the user clicks on the run pipeline button\n * we toggle the state of the button to be disabled\n *\n * Once the post request has finished, we fetch the\n * pipelines again to show the most recent data\n *\n * Once the pipeline has been updated, we toggle back the\n * loading state and re-enable the run pipeline button\n */\n runMergeRequestPipeline(options) {\n this.store.toggleIsRunningPipeline(true);\n\n this.service\n .runMRPipeline(options)\n .then(() => {\n if (!options.isAsync) {\n this.$toast.show(TOAST_MESSAGE);\n }\n\n this.updateTable();\n })\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 reportToSentry('run_mr_pipeline', e);\n })\n .finally(() => {\n if (!options.isAsync) {\n this.store.toggleIsRunningPipeline(false);\n }\n });\n },\n onChangePage(page) {\n /* URLS parameters are strings, we need to parse to match types */\n let params = {\n page: Number(page).toString(),\n };\n\n if (this.scope) {\n params.scope = this.scope;\n }\n\n params = this.onChangeWithFilter(params);\n\n this.updateContent(params);\n },\n\n onChangeWithFilter(params) {\n return { ...params, ...validateParams(this.requestData) };\n },\n },\n};\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","(function() {\n var basenameMatch, computeMatch, isMatch, isWordStart, match, mergeMatches, scoreAcronyms, scoreCharacter, scoreConsecutives, _ref;\n\n _ref = require('./scorer'), isMatch = _ref.isMatch, isWordStart = _ref.isWordStart, scoreConsecutives = _ref.scoreConsecutives, scoreCharacter = _ref.scoreCharacter, scoreAcronyms = _ref.scoreAcronyms;\n\n exports.match = match = function(string, query, options) {\n var allowErrors, baseMatches, matches, pathSeparator, preparedQuery, string_lw;\n allowErrors = options.allowErrors, preparedQuery = options.preparedQuery, pathSeparator = options.pathSeparator;\n if (!(allowErrors || isMatch(string, preparedQuery.core_lw, preparedQuery.core_up))) {\n return [];\n }\n string_lw = string.toLowerCase();\n matches = computeMatch(string, string_lw, preparedQuery);\n if (matches.length === 0) {\n return matches;\n }\n if (string.indexOf(pathSeparator) > -1) {\n baseMatches = basenameMatch(string, string_lw, preparedQuery, pathSeparator);\n matches = mergeMatches(matches, baseMatches);\n }\n return matches;\n };\n\n exports.wrap = function(string, query, options) {\n var matchIndex, matchPos, matchPositions, output, strPos, tagClass, tagClose, tagOpen, _ref1;\n if ((options.wrap != null)) {\n _ref1 = options.wrap, tagClass = _ref1.tagClass, tagOpen = _ref1.tagOpen, tagClose = _ref1.tagClose;\n }\n if (tagClass == null) {\n tagClass = 'highlight';\n }\n if (tagOpen == null) {\n tagOpen = '<strong class=\"' + tagClass + '\">';\n }\n if (tagClose == null) {\n tagClose = '</strong>';\n }\n if (string === query) {\n return tagOpen + string + tagClose;\n }\n matchPositions = match(string, query, options);\n if (matchPositions.length === 0) {\n return string;\n }\n output = '';\n matchIndex = -1;\n strPos = 0;\n while (++matchIndex < matchPositions.length) {\n matchPos = matchPositions[matchIndex];\n if (matchPos > strPos) {\n output += string.substring(strPos, matchPos);\n strPos = matchPos;\n }\n while (++matchIndex < matchPositions.length) {\n if (matchPositions[matchIndex] === matchPos + 1) {\n matchPos++;\n } else {\n matchIndex--;\n break;\n }\n }\n matchPos++;\n if (matchPos > strPos) {\n output += tagOpen;\n output += string.substring(strPos, matchPos);\n output += tagClose;\n strPos = matchPos;\n }\n }\n if (strPos <= string.length - 1) {\n output += string.substring(strPos);\n }\n return output;\n };\n\n basenameMatch = function(subject, subject_lw, preparedQuery, pathSeparator) {\n var basePos, depth, end;\n end = subject.length - 1;\n while (subject[end] === pathSeparator) {\n end--;\n }\n basePos = subject.lastIndexOf(pathSeparator, end);\n if (basePos === -1) {\n return [];\n }\n depth = preparedQuery.depth;\n while (depth-- > 0) {\n basePos = subject.lastIndexOf(pathSeparator, basePos - 1);\n if (basePos === -1) {\n return [];\n }\n }\n basePos++;\n end++;\n return computeMatch(subject.slice(basePos, end), subject_lw.slice(basePos, end), preparedQuery, basePos);\n };\n\n mergeMatches = function(a, b) {\n var ai, bj, i, j, m, n, out;\n m = a.length;\n n = b.length;\n if (n === 0) {\n return a.slice();\n }\n if (m === 0) {\n return b.slice();\n }\n i = -1;\n j = 0;\n bj = b[j];\n out = [];\n while (++i < m) {\n ai = a[i];\n while (bj <= ai && ++j < n) {\n if (bj < ai) {\n out.push(bj);\n }\n bj = b[j];\n }\n out.push(ai);\n }\n while (j < n) {\n out.push(b[j++]);\n }\n return out;\n };\n\n computeMatch = function(subject, subject_lw, preparedQuery, offset) {\n var DIAGONAL, LEFT, STOP, UP, acro_score, align, backtrack, csc_diag, csc_row, csc_score, i, j, m, matches, move, n, pos, query, query_lw, score, score_diag, score_row, score_up, si_lw, start, trace;\n if (offset == null) {\n offset = 0;\n }\n query = preparedQuery.query;\n query_lw = preparedQuery.query_lw;\n m = subject.length;\n n = query.length;\n acro_score = scoreAcronyms(subject, subject_lw, query, query_lw).score;\n score_row = new Array(n);\n csc_row = new Array(n);\n STOP = 0;\n UP = 1;\n LEFT = 2;\n DIAGONAL = 3;\n trace = new Array(m * n);\n pos = -1;\n j = -1;\n while (++j < n) {\n score_row[j] = 0;\n csc_row[j] = 0;\n }\n i = -1;\n while (++i < m) {\n score = 0;\n score_up = 0;\n csc_diag = 0;\n si_lw = subject_lw[i];\n j = -1;\n while (++j < n) {\n csc_score = 0;\n align = 0;\n score_diag = score_up;\n if (query_lw[j] === si_lw) {\n start = isWordStart(i, subject, subject_lw);\n csc_score = csc_diag > 0 ? csc_diag : scoreConsecutives(subject, subject_lw, query, query_lw, i, j, start);\n align = score_diag + scoreCharacter(i, j, start, acro_score, csc_score);\n }\n score_up = score_row[j];\n csc_diag = csc_row[j];\n if (score > score_up) {\n move = LEFT;\n } else {\n score = score_up;\n move = UP;\n }\n if (align > score) {\n score = align;\n move = DIAGONAL;\n } else {\n csc_score = 0;\n }\n score_row[j] = score;\n csc_row[j] = csc_score;\n trace[++pos] = score > 0 ? move : STOP;\n }\n }\n i = m - 1;\n j = n - 1;\n pos = i * n + j;\n backtrack = true;\n matches = [];\n while (backtrack && i >= 0 && j >= 0) {\n switch (trace[pos]) {\n case UP:\n i--;\n pos -= n;\n break;\n case LEFT:\n j--;\n pos--;\n break;\n case DIAGONAL:\n matches.push(i + offset);\n j--;\n i--;\n pos -= n + 1;\n break;\n default:\n backtrack = false;\n }\n }\n matches.reverse();\n return matches;\n };\n\n}).call(this);\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","import { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlClearIconButton from '../../shared_components/clear_icon_button/clear_icon_button';\nimport GlButton from '../button/button';\nimport GlDisclosureDropdown from '../new_dropdowns/disclosure/disclosure_dropdown';\nimport GlDisclosureDropdownItem from '../new_dropdowns/disclosure/disclosure_dropdown_item';\nimport GlFormInput from '../form/form_input/form_input';\nimport GlFormInputGroup from '../form/form_input_group/form_input_group';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlSearchboxByClick',\n components: {\n GlClearIconButton,\n GlButton,\n GlFormInput,\n GlDisclosureDropdown,\n GlDisclosureDropdownItem,\n GlFormInputGroup\n },\n directives: {\n GlTooltip: GlTooltipDirective\n },\n props: {\n /**\n * If provided, used as value of search input\n */\n value: {\n required: false,\n default: '',\n // SearchBoxByClick could serve as a container for complex fields (see GlFilteredSearch)\n // so we should not force any specific type for value here\n validator: () => true\n },\n /**\n * If provided, used as history items for this component\n */\n historyItems: {\n type: Array,\n required: false,\n default: null\n },\n /**\n * If provided, used as a placeholder for this component\n */\n placeholder: {\n type: String,\n required: false,\n default: 'Search'\n },\n clearable: {\n type: Boolean,\n required: false,\n default: true\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 * i18n for recent searches title within history dropdown\n */\n recentSearchesHeader: {\n type: String,\n required: false,\n default: 'Recent searches'\n },\n /**\n * i18n for clear button title\n */\n clearButtonTitle: {\n type: String,\n required: false,\n default: 'Clear'\n },\n /**\n * i18n for close button title within history dropdown\n */\n closeButtonTitle: {\n type: String,\n required: false,\n default: 'Close'\n },\n /**\n * i18n for recent searches clear text\n */\n clearRecentSearchesText: {\n type: String,\n required: false,\n default: 'Clear recent searches'\n },\n noRecentSearchesText: {\n type: String,\n required: false,\n default: \"You don't have any recent searches\"\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 * HTML attributes to add to the search button\n */\n searchButtonAttributes: {\n type: Object,\n required: false,\n default: () => ({})\n },\n /**\n * Display search button to perform a search.\n *\n * Note: it is required to ensure accessibility for WCAG 2.1 3.2.2: On Input.\n * If the search button is hidden, a separate button should be provided for the same context.\n */\n showSearchButton: {\n type: Boolean,\n required: false,\n default: true\n }\n },\n data() {\n return {\n currentValue: null,\n isFocused: false\n };\n },\n computed: {\n inputAttributes() {\n const attributes = {\n type: 'search',\n placeholder: this.placeholder,\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.currentValue);\n }\n },\n watch: {\n value: {\n handler(newValue) {\n this.currentValue = newValue;\n },\n immediate: true\n },\n currentValue(newValue) {\n if (newValue === this.value) return;\n this.$emit('input', newValue);\n }\n },\n methods: {\n search(value) {\n /**\n * Emitted when search is submitted\n * @property {*} value Search value\n */\n this.$emit('submit', value);\n },\n selectHistoryItem(item) {\n this.currentValue = item;\n\n /**\n * Emitted when item from history is selected\n * @property {*} item History item\n */\n this.$emit('history-item-selected', item);\n setTimeout(() => {\n document.activeElement.blur();\n });\n },\n clearInput() {\n this.currentValue = '';\n /**\n * Emitted when search is cleared\n */\n this.$emit('clear');\n if (this.$refs.input) {\n this.$refs.input.$el.focus();\n }\n },\n emitClearHistory() {\n /**\n * Emitted when clear history button is clicked\n */\n this.$emit('clear-history');\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('gl-form-input-group',{staticClass:\"gl-search-box-by-click\",class:{ 'gl-search-box-by-click-with-search-button': _vm.showSearchButton },scopedSlots:_vm._u([(_vm.historyItems)?{key:\"prepend\",fn:function(){return [_c('gl-disclosure-dropdown',{ref:\"historyDropdown\",staticClass:\"gl-search-box-by-click-history\",attrs:{\"icon\":\"history\",\"category\":\"tertiary\",\"toggle-text\":\"Toggle history\",\"text-sr-only\":\"\",\"fluid-width\":\"\",\"disabled\":_vm.disabled},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('div',{staticClass:\"gl-search-box-by-click-history-header gl-flex gl-min-h-8 gl-grow gl-items-center gl-border-b-1 gl-border-b-dropdown !gl-p-4 gl-text-sm gl-font-bold gl-border-b-solid\"},[_vm._v(\"\\n \"+_vm._s(_vm.recentSearchesHeader)+\"\\n \")])]},proxy:true},(_vm.historyItems.length)?{key:\"footer\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-flex-col gl-border-t-1 gl-border-t-dropdown gl-p-2 gl-border-t-solid\"},[_c('gl-button',{ref:\"clearHistory\",staticClass:\"!gl-justify-start\",attrs:{\"category\":\"tertiary\"},on:{\"click\":_vm.emitClearHistory}},[_vm._v(\"\\n \"+_vm._s(_vm.clearRecentSearchesText)+\"\\n \")])],1)]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.historyItems.length)?_vm._l((_vm.historyItems),function(item,idx){return _c('gl-disclosure-dropdown-item',{key:idx,staticClass:\"gl-search-box-by-click-history-item\",on:{\"action\":function($event){return _vm.selectHistoryItem(item)}},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"history-item\",function(){return [_vm._v(_vm._s(item))]},{\"historyItem\":item})]},proxy:true}],null,true)})}):_c('div',{staticClass:\"gl-px-4 gl-py-2 gl-text-sm gl-text-subtle\"},[_vm._v(\"\\n \"+_vm._s(_vm.noRecentSearchesText)+\"\\n \")])],2)]},proxy:true}:null,(_vm.showSearchButton)?{key:\"append\",fn:function(){return [_c('gl-button',_vm._b({ref:\"searchButton\",staticClass:\"gl-search-box-by-click-search-button\",attrs:{\"category\":\"tertiary\",\"icon\":\"search\",\"disabled\":_vm.disabled,\"aria-label\":\"Search\",\"data-testid\":\"search-button\"},on:{\"click\":function($event){return _vm.search(_vm.currentValue)}}},'gl-button',_vm.searchButtonAttributes,false))]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._t(\"input\",function(){return [_c('gl-form-input',_vm._b({ref:\"input\",staticClass:\"gl-search-box-by-click-input\",class:{ '!gl-rounded-base': !_vm.showSearchButton },attrs:{\"disabled\":_vm.disabled},on:{\"focus\":function($event){_vm.isFocused = true;},\"blur\":function($event){_vm.isFocused = false;}},nativeOn:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.search(_vm.currentValue)}},model:{value:(_vm.currentValue),callback:function ($$v) {_vm.currentValue=$$v;},expression:\"currentValue\"}},'gl-form-input',_vm.inputAttributes,false))]}),_vm._v(\" \"),(_vm.clearable && _vm.hasValue && !_vm.disabled)?_c('gl-clear-icon-button',{staticClass:\"gl-search-box-by-click-icon-button gl-search-box-by-click-clear-button gl-clear-icon-button\",attrs:{\"title\":_vm.clearButtonTitle,\"tooltip-container\":_vm.tooltipContainer,\"data-testid\":\"filtered-search-clear-button\"},on:{\"click\":_vm.clearInput}}):_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","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","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"playJob\"},\"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\":165}};\n doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation playJob($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[\"playJob\"] = oneQuery(doc, \"playJob\");\n \n","import createEventHub from '~/helpers/event_hub_factory';\n\nexport default createEventHub();\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","export default __webpack_public_path__ + \"empty-job-failed-md.b4806d6a.svg\";","<script>\nimport { GlButton, GlCard } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport Tracking from '~/tracking';\nimport { mergeUrlParams } from '~/lib/utils/url_utility';\nimport {\n CATALOG_TRACKING_LABEL,\n GITLAB_UNIVERSITY_TRACKING_LABEL,\n MIGRATE_FROM_JENKINS_TRACKING_LABEL,\n} from '~/ci/pipelines_page/constants';\nimport { STARTER_TEMPLATE_NAME } from '~/ci/pipeline_editor/constants';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\nconst cards = {\n jenkins_migration_card: {\n id: 'jenkins_migration',\n buttonLink: helpPagePath('ci/migration/plan_a_migration'),\n buttonText: s__('Pipelines|Start with a migration plan'),\n description: s__(\n 'Pipelines|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 emoji: 'rocket',\n isVisible: false,\n styles: 'gl-bg-blue-50',\n title: s__('Pipelines|Migrate to GitLab CI/CD from Jenkins'),\n trackingLabel: MIGRATE_FROM_JENKINS_TRACKING_LABEL,\n },\n getting_started_card: {\n id: 'getting_started',\n buttonLink: '',\n buttonText: s__('Pipelines|Try test template'),\n description: s__(\n 'Pipelines|Get familiar with GitLab CI syntax by setting up a simple pipeline running a \"Hello world\" script to see how it runs, explore how CI/CD works.',\n ),\n emoji: 'wave',\n isVisible: true,\n title: s__('Pipelines|\"Hello world\" with GitLab CI'),\n trackingLabel: STARTER_TEMPLATE_NAME,\n },\n gitlab_university_card: {\n id: 'gitlab_university',\n buttonLink: 'https://university.gitlab.com/pages/ci-cd-content',\n buttonText: s__('Pipelines|Access GitLab University'),\n description: s__(\n 'Pipelines|Learn how to set up and use GitLab CI/CD with guided tutorials, videos, and best practices.',\n ),\n emoji: 'mortar_board',\n isVisible: true,\n title: s__('Pipelines|Learn CI/CD with GitLab University'),\n trackingLabel: GITLAB_UNIVERSITY_TRACKING_LABEL,\n },\n ci_cd_catalog_card: {\n id: 'ci_cd_catalog',\n buttonLink: '/explore/catalog',\n buttonText: s__('Pipelines|Explore CI/CD Catalog'),\n description: s__(\n 'Pipelines|Explore CI components in the CI/CD Catalog to see if they suit your requirements.',\n ),\n emoji: 'bulb',\n isVisible: true,\n title: s__('Pipelines|Easy configuration with CI/CD Catalog'),\n trackingLabel: CATALOG_TRACKING_LABEL,\n },\n};\n\nexport default {\n name: 'CiCards',\n components: {\n GlButton,\n GlCard,\n },\n mixins: [Tracking.mixin()],\n inject: ['pipelineEditorPath', 'showJenkinsCiPrompt'],\n computed: {\n cards() {\n return [\n {\n ...cards.jenkins_migration_card,\n isVisible: this.showJenkinsCiPrompt,\n },\n {\n ...cards.getting_started_card,\n buttonLink: this.gettingStartedTemplateUrl,\n },\n cards.gitlab_university_card,\n cards.ci_cd_catalog_card,\n ];\n },\n gettingStartedTemplateUrl() {\n return mergeUrlParams({ template: STARTER_TEMPLATE_NAME }, this.pipelineEditorPath);\n },\n },\n mounted() {\n if (this.showJenkinsCiPrompt) {\n this.trackEvent('render', MIGRATE_FROM_JENKINS_TRACKING_LABEL);\n }\n },\n methods: {\n trackEvent(label) {\n this.track('template_clicked', { label });\n },\n },\n};\n</script>\n<template>\n <div class=\"gl-grid gl-gap-5 md:gl-grid-cols-2 lg:gl-grid-cols-4\">\n <template v-for=\"card in cards\">\n <gl-card\n v-if=\"card.isVisible\"\n :key=\"card.id\"\n :body-class=\"['gl-h-full']\"\n :class=\"card.styles\"\n >\n <div class=\"gl-flex !gl-h-full gl-flex-col gl-justify-between gl-gap-4\">\n <div>\n <gl-emoji\n class=\"gl-pb-5 gl-text-size-h2-xl\"\n :data-name=\"card.emoji\"\n data-testid=\"ci-card-emoji\"\n />\n <p class=\"gl-mb-3\">\n <strong class=\"gl-mb-2 gl-text-default\" data-testid=\"ci-card-title\">{{\n card.title\n }}</strong>\n </p>\n <p class=\"gl-flex-grow gl-text-sm\" data-testid=\"ci-card-description\">\n {{ card.description }}\n </p>\n </div>\n\n <gl-button\n category=\"primary\"\n variant=\"confirm\"\n :href=\"card.buttonLink\"\n target=\"_blank\"\n @click=\"trackEvent(card.trackingLabel)\"\n >\n {{ card.buttonText }}\n </gl-button>\n </div>\n </gl-card>\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!./ci_cards.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ci_cards.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ci_cards.vue?vue&type=template&id=fd89a434\"\nimport script from \"./ci_cards.vue?vue&type=script&lang=js\"\nexport * from \"./ci_cards.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\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-grid gl-gap-5 md:gl-grid-cols-2 lg:gl-grid-cols-4\"},[_vm._l((_vm.cards),function(card){return [(card.isVisible)?_c('gl-card',{key:card.id,class:card.styles,attrs:{\"body-class\":['gl-h-full']}},[_c('div',{staticClass:\"gl-flex !gl-h-full gl-flex-col gl-justify-between gl-gap-4\"},[_c('div',[_c('gl-emoji',{staticClass:\"gl-pb-5 gl-text-size-h2-xl\",attrs:{\"data-name\":card.emoji,\"data-testid\":\"ci-card-emoji\"}}),_vm._v(\" \"),_c('p',{staticClass:\"gl-mb-3\"},[_c('strong',{staticClass:\"gl-mb-2 gl-text-default\",attrs:{\"data-testid\":\"ci-card-title\"}},[_vm._v(_vm._s(card.title))])]),_vm._v(\" \"),_c('p',{staticClass:\"gl-flex-grow gl-text-sm\",attrs:{\"data-testid\":\"ci-card-description\"}},[_vm._v(\"\\n \"+_vm._s(card.description)+\"\\n \")])],1),_vm._v(\" \"),_c('gl-button',{attrs:{\"category\":\"primary\",\"variant\":\"confirm\",\"href\":card.buttonLink,\"target\":\"_blank\"},on:{\"click\":function($event){return _vm.trackEvent(card.trackingLabel)}}},[_vm._v(\"\\n \"+_vm._s(card.buttonText)+\"\\n \")])],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!./ci_templates.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ci_templates.vue?vue&type=script&lang=js\"","<script>\nimport { GlAvatar, GlButton } from '@gitlab/ui';\nimport { s__, sprintf } from '~/locale';\nimport { mergeUrlParams } from '~/lib/utils/url_utility';\nimport { AVATAR_SHAPE_OPTION_RECT } from '~/vue_shared/constants';\nimport Tracking from '~/tracking';\n\nexport default {\n components: {\n GlAvatar,\n GlButton,\n },\n mixins: [Tracking.mixin()],\n inject: ['pipelineEditorPath', 'suggestedCiTemplates'],\n props: {\n disabled: {\n type: Boolean,\n required: false,\n default: false,\n },\n filterTemplates: {\n type: Array,\n required: false,\n default: () => [],\n },\n },\n data() {\n const templates = this.suggestedCiTemplates\n .filter(\n (template) => !this.filterTemplates.length || this.filterTemplates.includes(template.name),\n )\n .map(({ name, logo, title }) => {\n return {\n name: title || name,\n description: sprintf(this.$options.i18n.description, { name: title || name }),\n isPng: logo.endsWith('png'),\n logo,\n link: mergeUrlParams({ template: name }, this.pipelineEditorPath),\n };\n });\n\n return {\n templates,\n };\n },\n methods: {\n trackEvent(template) {\n this.track('template_clicked', {\n label: template,\n });\n },\n logoStyle(template) {\n return template.isPng ? { objectFit: 'contain' } : '';\n },\n },\n i18n: {\n description: s__(\n 'Pipelines|Continuous integration and deployment template to test and deploy your %{name} project.',\n ),\n cta: s__('Pipelines|Use template'),\n },\n AVATAR_SHAPE_OPTION_RECT,\n};\n</script>\n<template>\n <ul class=\"gl-list-none gl-pl-0\">\n <li v-for=\"template in templates\" :key=\"template.name\">\n <div\n class=\"gl-flex gl-items-center gl-justify-between gl-border-b-1 gl-border-b-default gl-pb-3 gl-pt-3 gl-border-b-solid\"\n >\n <div class=\"gl-flex gl-flex-row gl-items-center\">\n <gl-avatar\n :alt=\"template.name\"\n class=\"dark-mode-override gl-mr-5 gl-bg-white\"\n :class=\"{ 'gl-p-2': template.isPng }\"\n :style=\"logoStyle(template)\"\n :shape=\"$options.AVATAR_SHAPE_OPTION_RECT\"\n :size=\"48\"\n :src=\"template.logo\"\n data-testid=\"template-logo\"\n />\n <div class=\"gl-flex-row\">\n <div class=\"gl-mb-3\">\n <strong class=\"gl-text-default\" data-testid=\"template-name\">\n {{ template.name }}\n </strong>\n </div>\n <p class=\"gl-mb-0 gl-text-sm\" data-testid=\"template-description\">\n {{ template.description }}\n </p>\n </div>\n </div>\n <gl-button\n :disabled=\"disabled\"\n category=\"primary\"\n variant=\"default\"\n :href=\"template.link\"\n data-testid=\"template-link\"\n @click=\"trackEvent(template.name)\"\n >\n {{ $options.i18n.cta }}\n </gl-button>\n </div>\n </li>\n </ul>\n</template>\n","import { render, staticRenderFns } from \"./ci_templates.vue?vue&type=template&id=2f336ada\"\nimport script from \"./ci_templates.vue?vue&type=script&lang=js\"\nexport * from \"./ci_templates.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{staticClass:\"gl-list-none gl-pl-0\"},_vm._l((_vm.templates),function(template){return _c('li',{key:template.name},[_c('div',{staticClass:\"gl-flex gl-items-center gl-justify-between gl-border-b-1 gl-border-b-default gl-pb-3 gl-pt-3 gl-border-b-solid\"},[_c('div',{staticClass:\"gl-flex gl-flex-row gl-items-center\"},[_c('gl-avatar',{staticClass:\"dark-mode-override gl-mr-5 gl-bg-white\",class:{ 'gl-p-2': template.isPng },style:(_vm.logoStyle(template)),attrs:{\"alt\":template.name,\"shape\":_vm.$options.AVATAR_SHAPE_OPTION_RECT,\"size\":48,\"src\":template.logo,\"data-testid\":\"template-logo\"}}),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex-row\"},[_c('div',{staticClass:\"gl-mb-3\"},[_c('strong',{staticClass:\"gl-text-default\",attrs:{\"data-testid\":\"template-name\"}},[_vm._v(\"\\n \"+_vm._s(template.name)+\"\\n \")])]),_vm._v(\" \"),_c('p',{staticClass:\"gl-mb-0 gl-text-sm\",attrs:{\"data-testid\":\"template-description\"}},[_vm._v(\"\\n \"+_vm._s(template.description)+\"\\n \")])])],1),_vm._v(\" \"),_c('gl-button',{attrs:{\"disabled\":_vm.disabled,\"category\":\"primary\",\"variant\":\"default\",\"href\":template.link,\"data-testid\":\"template-link\"},on:{\"click\":function($event){return _vm.trackEvent(template.name)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.cta)+\"\\n \")])],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!./pipelines_ci_templates.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.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_ci_templates.vue?vue&type=script&lang=js\"","<script>\nimport { s__ } from '~/locale';\n\nimport CiCards from './ci_cards.vue';\nimport CiTemplates from './ci_templates.vue';\n\nexport default {\n name: 'PipelinesCiTemplates',\n i18n: {\n title: s__('Pipelines|Get started with GitLab CI/CD'),\n learnBasics: {\n title: s__('Pipelines|Learn the basics of pipelines and .yml files'),\n subtitle: s__(\n 'Pipelines|Use CI/CD pipelines to automatically build, test, and deploy your code.',\n ),\n },\n templates: {\n title: s__('Pipelines|Ready to set up CI/CD for your project?'),\n subtitle: s__(\n \"Pipelines|Use a template based on your project's language or framework to get started with GitLab CI/CD.\",\n ),\n },\n },\n components: {\n CiCards,\n CiTemplates,\n },\n};\n</script>\n\n<template>\n <div>\n <h2 class=\"gl-text-size-h2\">{{ $options.i18n.title }}</h2>\n\n <div class=\"gl-mb-8\">\n <h3 class=\"gl-text-lg\">{{ $options.i18n.learnBasics.title }}</h3>\n <p class=\"gl-mb-6 gl-text-default\">{{ $options.i18n.learnBasics.subtitle }}</p>\n <ci-cards />\n </div>\n\n <div>\n <h3 class=\"gl-text-lg\">{{ $options.i18n.templates.title }}</h3>\n <p class=\"gl-mb-6 gl-text-default\">{{ $options.i18n.templates.subtitle }}</p>\n <ci-templates />\n </div>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipelines_ci_templates.vue?vue&type=template&id=5daa7b75\"\nimport script from \"./pipelines_ci_templates.vue?vue&type=script&lang=js\"\nexport * from \"./pipelines_ci_templates.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\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('h2',{staticClass:\"gl-text-size-h2\"},[_vm._v(_vm._s(_vm.$options.i18n.title))]),_vm._v(\" \"),_c('div',{staticClass:\"gl-mb-8\"},[_c('h3',{staticClass:\"gl-text-lg\"},[_vm._v(_vm._s(_vm.$options.i18n.learnBasics.title))]),_vm._v(\" \"),_c('p',{staticClass:\"gl-mb-6 gl-text-default\"},[_vm._v(_vm._s(_vm.$options.i18n.learnBasics.subtitle))]),_vm._v(\" \"),_c('ci-cards')],1),_vm._v(\" \"),_c('div',[_c('h3',{staticClass:\"gl-text-lg\"},[_vm._v(_vm._s(_vm.$options.i18n.templates.title))]),_vm._v(\" \"),_c('p',{staticClass:\"gl-mb-6 gl-text-default\"},[_vm._v(_vm._s(_vm.$options.i18n.templates.subtitle))]),_vm._v(\" \"),_c('ci-templates')],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./no_ci_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!./no_ci_empty_state.vue?vue&type=script&lang=js\"","<script>\nimport { GlEmptyState } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport PipelinesCiTemplates from './pipelines_ci_templates.vue';\n\nexport default {\n i18n: {\n noCiDescription: s__('Pipelines|This project is not currently set up to run pipelines.'),\n },\n name: 'PipelinesEmptyState',\n components: {\n GlEmptyState,\n PipelinesCiTemplates,\n },\n inject: ['canCreatePipeline'],\n props: {\n emptyStateSvgPath: {\n type: String,\n required: true,\n },\n },\n};\n</script>\n<template>\n <pipelines-ci-templates v-if=\"canCreatePipeline\" />\n <gl-empty-state\n v-else\n :svg-path=\"emptyStateSvgPath\"\n :svg-height=\"null\"\n :description=\"$options.i18n.noCiDescription\"\n />\n</template>\n","import { render, staticRenderFns } from \"./no_ci_empty_state.vue?vue&type=template&id=73230b35\"\nimport script from \"./no_ci_empty_state.vue?vue&type=script&lang=js\"\nexport * from \"./no_ci_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 (_vm.canCreatePipeline)?_c('pipelines-ci-templates'):_c('gl-empty-state',{attrs:{\"svg-path\":_vm.emptyStateSvgPath,\"svg-height\":null,\"description\":_vm.$options.i18n.noCiDescription}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./nav_controls.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./nav_controls.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlLink } from '@gitlab/ui';\n\nexport default {\n name: 'PipelineNavControls',\n components: {\n GlButton,\n GlLink,\n },\n inject: ['pipelinesAnalyticsPath'],\n props: {\n isResetCacheButtonLoading: {\n type: Boolean,\n required: false,\n default: false,\n },\n newPipelinePath: {\n type: String,\n required: false,\n default: null,\n },\n resetCachePath: {\n type: String,\n required: false,\n default: null,\n },\n },\n methods: {\n onClickResetCache() {\n this.$emit('resetRunnersCache', this.resetCachePath);\n },\n },\n};\n</script>\n<template>\n <div class=\"nav-controls\">\n <gl-link\n v-if=\"pipelinesAnalyticsPath\"\n class=\"gl-mb-3 gl-block gl-whitespace-nowrap gl-text-center md:gl-mb-0 md:gl-mr-3\"\n :href=\"pipelinesAnalyticsPath\"\n data-testid=\"view-analytics-link\"\n >\n {{ s__('Pipelines|View analytics') }}\n </gl-link>\n\n <gl-button\n v-if=\"resetCachePath\"\n :loading=\"isResetCacheButtonLoading\"\n class=\"js-clear-cache\"\n data-testid=\"clear-cache-button\"\n @click=\"onClickResetCache\"\n >\n {{ s__('Pipelines|Clear runner caches') }}\n </gl-button>\n\n <gl-button\n v-if=\"newPipelinePath\"\n :href=\"newPipelinePath\"\n variant=\"confirm\"\n category=\"primary\"\n class=\"js-run-pipeline\"\n data-testid=\"run-pipeline-button\"\n >\n {{ s__('Pipeline|New pipeline') }}\n </gl-button>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./nav_controls.vue?vue&type=template&id=18ae4b94\"\nimport script from \"./nav_controls.vue?vue&type=script&lang=js\"\nexport * from \"./nav_controls.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"nav-controls\"},[(_vm.pipelinesAnalyticsPath)?_c('gl-link',{staticClass:\"gl-mb-3 gl-block gl-whitespace-nowrap gl-text-center md:gl-mb-0 md:gl-mr-3\",attrs:{\"href\":_vm.pipelinesAnalyticsPath,\"data-testid\":\"view-analytics-link\"}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipelines|View analytics'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.resetCachePath)?_c('gl-button',{staticClass:\"js-clear-cache\",attrs:{\"loading\":_vm.isResetCacheButtonLoading,\"data-testid\":\"clear-cache-button\"},on:{\"click\":_vm.onClickResetCache}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipelines|Clear runner caches'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.newPipelinePath)?_c('gl-button',{staticClass:\"js-run-pipeline\",attrs:{\"href\":_vm.newPipelinePath,\"variant\":\"confirm\",\"category\":\"primary\",\"data-testid\":\"run-pipeline-button\"}},[_vm._v(\"\\n \"+_vm._s(_vm.s__('Pipeline|New pipeline'))+\"\\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!./pipeline_branch_name_token.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_branch_name_token.vue?vue&type=script&lang=js\"","<script>\nimport { GlFilteredSearchToken, GlFilteredSearchSuggestion, GlLoadingIcon } from '@gitlab/ui';\nimport { debounce } from 'lodash';\nimport Api from '~/api';\nimport { createAlert } from '~/alert';\nimport { __ } from '~/locale';\nimport { FILTER_PIPELINES_SEARCH_DELAY } from '../constants';\n\nexport default {\n components: {\n GlFilteredSearchToken,\n GlFilteredSearchSuggestion,\n GlLoadingIcon,\n },\n props: {\n config: {\n type: Object,\n required: true,\n },\n value: {\n type: Object,\n required: true,\n },\n },\n data() {\n return {\n branches: null,\n loading: true,\n };\n },\n created() {\n this.fetchBranches();\n },\n methods: {\n fetchBranches(searchterm) {\n Api.branches(this.config.projectId, searchterm)\n .then(({ data }) => {\n this.branches = data.map((branch) => branch.name);\n if (!searchterm && this.config.defaultBranchName) {\n // Shift the default branch to the top of the list\n this.branches = this.branches.filter(\n (branch) => branch !== this.config.defaultBranchName,\n );\n this.branches.unshift(this.config.defaultBranchName);\n }\n this.loading = false;\n })\n .catch((err) => {\n createAlert({\n message: __('There was a problem fetching project branches.'),\n });\n this.loading = false;\n throw err;\n });\n },\n searchBranches: debounce(function debounceSearch({ data }) {\n this.fetchBranches(data);\n }, FILTER_PIPELINES_SEARCH_DELAY),\n },\n};\n</script>\n\n<template>\n <gl-filtered-search-token\n :config=\"config\"\n v-bind=\"{ ...$props, ...$attrs }\"\n v-on=\"$listeners\"\n @input=\"searchBranches\"\n >\n <template #suggestions>\n <gl-loading-icon v-if=\"loading\" size=\"sm\" />\n <template v-else>\n <gl-filtered-search-suggestion\n v-for=\"(branch, index) in branches\"\n :key=\"index\"\n :value=\"branch\"\n >\n {{ branch }}\n </gl-filtered-search-suggestion>\n </template>\n </template>\n </gl-filtered-search-token>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_branch_name_token.vue?vue&type=template&id=0c5ac0b0\"\nimport script from \"./pipeline_branch_name_token.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_branch_name_token.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\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-filtered-search-token',_vm._g(_vm._b({attrs:{\"config\":_vm.config},on:{\"input\":_vm.searchBranches},scopedSlots:_vm._u([{key:\"suggestions\",fn:function(){return [(_vm.loading)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\"}}):_vm._l((_vm.branches),function(branch,index){return _c('gl-filtered-search-suggestion',{key:index,attrs:{\"value\":branch}},[_vm._v(\"\\n \"+_vm._s(branch)+\"\\n \")])})]},proxy:true}])},'gl-filtered-search-token',{ ..._vm.$props, ..._vm.$attrs },false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { s__ } from '~/locale';\n\nexport const PIPELINE_SOURCES = [\n {\n text: s__('PipelineSource|Push'),\n value: 'push',\n },\n {\n text: s__('PipelineSource|Web'),\n value: 'web',\n },\n {\n text: s__('PipelineSource|Trigger'),\n value: 'trigger',\n },\n {\n text: s__('PipelineSource|Schedule'),\n value: 'schedule',\n },\n {\n text: s__('PipelineSource|API'),\n value: 'api',\n },\n {\n text: s__('PipelineSource|External'),\n value: 'external',\n },\n {\n text: s__('PipelineSource|Pipeline'),\n value: 'pipeline',\n },\n {\n text: s__('PipelineSource|Chat'),\n value: 'chat',\n },\n {\n text: s__('PipelineSource|Web IDE'),\n value: 'webide',\n },\n {\n text: s__('PipelineSource|Merge Request'),\n value: 'merge_request_event',\n },\n {\n text: s__('PipelineSource|External Pull Request'),\n value: 'external_pull_request_event',\n },\n {\n text: s__('PipelineSource|Parent Pipeline'),\n value: 'parent_pipeline',\n },\n];\n","import { s__ } from '~/locale';\nimport { PIPELINE_SOURCES as CE_PIPELINE_SOURCES } from '~/ci/pipelines_page/tokens/constants';\n\nconst EE_PIPELINE_SOURCES = [\n {\n text: s__('PipelineSource|On-Demand DAST Scan'),\n value: 'ondemand_dast_scan',\n },\n {\n text: s__('PipelineSource|On-Demand DAST Validation'),\n value: 'ondemand_dast_validation',\n },\n {\n text: s__('Pipeline|Source|Security Policy'),\n value: 'security_orchestration_policy',\n },\n];\n\nexport const PIPELINE_SOURCES = [...CE_PIPELINE_SOURCES, ...EE_PIPELINE_SOURCES];\n","<script>\nimport { GlFilteredSearchToken, GlFilteredSearchSuggestion } from '@gitlab/ui';\nimport { PIPELINE_SOURCES } from 'ee_else_ce/ci/pipelines_page/tokens/constants';\n\nexport default {\n PIPELINE_SOURCES,\n components: {\n GlFilteredSearchToken,\n GlFilteredSearchSuggestion,\n },\n props: {\n config: {\n type: Object,\n required: true,\n },\n value: {\n type: Object,\n required: true,\n },\n },\n computed: {\n activeSource() {\n return PIPELINE_SOURCES.find((source) => source.value === this.value.data);\n },\n },\n};\n</script>\n\n<template>\n <gl-filtered-search-token v-bind=\"{ ...$props, ...$attrs }\" v-on=\"$listeners\">\n <template #view>\n <div class=\"gl-flex gl-items-center\">\n <span>{{ activeSource.text }}</span>\n </div>\n </template>\n\n <template #suggestions>\n <gl-filtered-search-suggestion\n v-for=\"source in $options.PIPELINE_SOURCES\"\n :key=\"source.value\"\n :value=\"source.value\"\n >\n {{ source.text }}\n </gl-filtered-search-suggestion>\n </template>\n </gl-filtered-search-token>\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_source_token.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_source_token.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./pipeline_source_token.vue?vue&type=template&id=37f35f06\"\nimport script from \"./pipeline_source_token.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_source_token.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\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-filtered-search-token',_vm._g(_vm._b({scopedSlots:_vm._u([{key:\"view\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-items-center\"},[_c('span',[_vm._v(_vm._s(_vm.activeSource.text))])])]},proxy:true},{key:\"suggestions\",fn:function(){return _vm._l((_vm.$options.PIPELINE_SOURCES),function(source){return _c('gl-filtered-search-suggestion',{key:source.value,attrs:{\"value\":source.value}},[_vm._v(\"\\n \"+_vm._s(source.text)+\"\\n \")])})},proxy:true}])},'gl-filtered-search-token',{ ..._vm.$props, ..._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!./pipeline_status_token.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_status_token.vue?vue&type=script&lang=js\"","<script>\nimport { GlFilteredSearchToken, GlFilteredSearchSuggestion, GlIcon } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nexport default {\n components: {\n GlFilteredSearchToken,\n GlFilteredSearchSuggestion,\n GlIcon,\n },\n props: {\n config: {\n type: Object,\n required: true,\n },\n value: {\n type: Object,\n required: true,\n },\n },\n computed: {\n statuses() {\n return [\n {\n class: 'ci-status-icon-canceled',\n icon: 'status_canceled',\n text: s__('Pipeline|Canceled'),\n value: 'canceled',\n },\n {\n class: 'ci-status-icon-created',\n icon: 'status_created',\n text: s__('Pipeline|Created'),\n value: 'created',\n },\n {\n class: 'ci-status-icon-failed',\n icon: 'status_failed',\n text: s__('Pipeline|Failed'),\n value: 'failed',\n },\n {\n class: 'ci-status-icon-manual',\n icon: 'status_manual',\n text: s__('Pipeline|Manual'),\n value: 'manual',\n },\n {\n class: 'ci-status-icon-success',\n icon: 'status_success',\n text: s__('Pipeline|Passed'),\n value: 'success',\n },\n {\n class: 'ci-status-icon-pending',\n icon: 'status_pending',\n text: s__('Pipeline|Pending'),\n value: 'pending',\n },\n {\n class: 'ci-status-icon-running',\n icon: 'status_running',\n text: s__('Pipeline|Running'),\n value: 'running',\n },\n {\n class: 'ci-status-icon-skipped',\n icon: 'status_skipped',\n text: s__('Pipeline|Skipped'),\n value: 'skipped',\n },\n ];\n },\n findActiveStatus() {\n return this.statuses.find((status) => status.value === this.value.data);\n },\n },\n};\n</script>\n\n<template>\n <gl-filtered-search-token v-bind=\"{ ...$props, ...$attrs }\" v-on=\"$listeners\">\n <template #view>\n <div class=\"gl-flex gl-items-center\">\n <div :class=\"findActiveStatus.class\">\n <gl-icon :name=\"findActiveStatus.icon\" class=\"gl-mr-2 gl-block\" />\n </div>\n <span>{{ findActiveStatus.text }}</span>\n </div>\n </template>\n <template #suggestions>\n <gl-filtered-search-suggestion\n v-for=\"(status, index) in statuses\"\n :key=\"index\"\n :value=\"status.value\"\n >\n <div class=\"gl-flex\" :class=\"status.class\">\n <gl-icon :name=\"status.icon\" class=\"gl-mr-3\" />\n <span>{{ status.text }}</span>\n </div>\n </gl-filtered-search-suggestion>\n </template>\n </gl-filtered-search-token>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_status_token.vue?vue&type=template&id=257ad626\"\nimport script from \"./pipeline_status_token.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_status_token.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\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-filtered-search-token',_vm._g(_vm._b({scopedSlots:_vm._u([{key:\"view\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-items-center\"},[_c('div',{class:_vm.findActiveStatus.class},[_c('gl-icon',{staticClass:\"gl-mr-2 gl-block\",attrs:{\"name\":_vm.findActiveStatus.icon}})],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.findActiveStatus.text))])])]},proxy:true},{key:\"suggestions\",fn:function(){return _vm._l((_vm.statuses),function(status,index){return _c('gl-filtered-search-suggestion',{key:index,attrs:{\"value\":status.value}},[_c('div',{staticClass:\"gl-flex\",class:status.class},[_c('gl-icon',{staticClass:\"gl-mr-3\",attrs:{\"name\":status.icon}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(status.text))])],1)])})},proxy:true}])},'gl-filtered-search-token',{ ..._vm.$props, ..._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!./pipeline_tag_name_token.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_tag_name_token.vue?vue&type=script&lang=js\"","<script>\nimport { GlFilteredSearchToken, GlFilteredSearchSuggestion, GlLoadingIcon } from '@gitlab/ui';\nimport { debounce } from 'lodash';\nimport Api from '~/api';\nimport { createAlert } from '~/alert';\nimport { __ } from '~/locale';\nimport { FILTER_PIPELINES_SEARCH_DELAY } from '../constants';\n\nexport default {\n components: {\n GlFilteredSearchToken,\n GlFilteredSearchSuggestion,\n GlLoadingIcon,\n },\n props: {\n config: {\n type: Object,\n required: true,\n },\n value: {\n type: Object,\n required: true,\n },\n },\n data() {\n return {\n tags: null,\n loading: true,\n };\n },\n created() {\n this.fetchTags();\n },\n methods: {\n fetchTags(searchTerm) {\n Api.tags(this.config.projectId, searchTerm)\n .then(({ data }) => {\n this.tags = data.map((tag) => tag.name);\n this.loading = false;\n })\n .catch((err) => {\n createAlert({\n message: __('There was a problem fetching project tags.'),\n });\n this.loading = false;\n throw err;\n });\n },\n searchTags: debounce(function debounceSearch({ data }) {\n this.fetchTags(data);\n }, FILTER_PIPELINES_SEARCH_DELAY),\n },\n};\n</script>\n\n<template>\n <gl-filtered-search-token v-bind=\"{ ...$props, ...$attrs }\" v-on=\"$listeners\" @input=\"searchTags\">\n <template #suggestions>\n <gl-loading-icon v-if=\"loading\" size=\"sm\" />\n <template v-else>\n <gl-filtered-search-suggestion v-for=\"(tag, index) in tags\" :key=\"index\" :value=\"tag\">\n {{ tag }}\n </gl-filtered-search-suggestion>\n </template>\n </template>\n </gl-filtered-search-token>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_tag_name_token.vue?vue&type=template&id=44925634\"\nimport script from \"./pipeline_tag_name_token.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_tag_name_token.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\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-filtered-search-token',_vm._g(_vm._b({on:{\"input\":_vm.searchTags},scopedSlots:_vm._u([{key:\"suggestions\",fn:function(){return [(_vm.loading)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\"}}):_vm._l((_vm.tags),function(tag,index){return _c('gl-filtered-search-suggestion',{key:index,attrs:{\"value\":tag}},[_vm._v(\"\\n \"+_vm._s(tag)+\"\\n \")])})]},proxy:true}])},'gl-filtered-search-token',{ ..._vm.$props, ..._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!./pipeline_trigger_author_token.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_trigger_author_token.vue?vue&type=script&lang=js\"","<script>\nimport {\n GlFilteredSearchToken,\n GlAvatar,\n GlFilteredSearchSuggestion,\n GlDropdownDivider,\n GlLoadingIcon,\n} from '@gitlab/ui';\nimport { debounce } from 'lodash';\nimport Api from '~/api';\nimport { createAlert } from '~/alert';\nimport { __ } from '~/locale';\nimport { ANY_TRIGGER_AUTHOR, FILTER_PIPELINES_SEARCH_DELAY } from '../constants';\n\nexport default {\n anyTriggerAuthor: ANY_TRIGGER_AUTHOR,\n components: {\n GlFilteredSearchToken,\n GlAvatar,\n GlFilteredSearchSuggestion,\n GlDropdownDivider,\n GlLoadingIcon,\n },\n props: {\n config: {\n type: Object,\n required: true,\n },\n value: {\n type: Object,\n required: true,\n },\n },\n data() {\n return {\n users: [],\n loading: true,\n };\n },\n computed: {\n currentValue() {\n return this.value.data.toLowerCase();\n },\n activeUser() {\n return this.users.find((user) => {\n return user.username.toLowerCase() === this.currentValue;\n });\n },\n },\n created() {\n this.fetchProjectUsers();\n },\n methods: {\n fetchProjectUsers(searchTerm) {\n Api.projectUsers(this.config.projectId, searchTerm)\n .then((users) => {\n this.users = users;\n this.loading = false;\n })\n .catch((err) => {\n createAlert({\n message: __('There was a problem fetching project users.'),\n });\n this.loading = false;\n throw err;\n });\n },\n searchAuthors: debounce(function debounceSearch({ data }) {\n this.fetchProjectUsers(data);\n }, FILTER_PIPELINES_SEARCH_DELAY),\n },\n};\n</script>\n\n<template>\n <gl-filtered-search-token\n :config=\"config\"\n v-bind=\"{ ...$props, ...$attrs }\"\n v-on=\"$listeners\"\n @input=\"searchAuthors\"\n >\n <template #view=\"{ inputValue }\">\n <gl-avatar v-if=\"activeUser\" :size=\"16\" :src=\"activeUser.avatar_url\" class=\"gl-mr-2\" />\n <span>{{ activeUser ? activeUser.name : inputValue }}</span>\n </template>\n <template #suggestions>\n <gl-filtered-search-suggestion :value=\"$options.anyTriggerAuthor\">{{\n $options.anyTriggerAuthor\n }}</gl-filtered-search-suggestion>\n <gl-dropdown-divider />\n\n <gl-loading-icon v-if=\"loading\" size=\"sm\" />\n <template v-else>\n <gl-filtered-search-suggestion\n v-for=\"user in users\"\n :key=\"user.username\"\n :value=\"user.username\"\n >\n <div class=\"gl-flex\">\n <gl-avatar :size=\"32\" :src=\"user.avatar_url\" />\n <div>\n <div>{{ user.name }}</div>\n <div>@{{ user.username }}</div>\n </div>\n </div>\n </gl-filtered-search-suggestion>\n </template>\n </template>\n </gl-filtered-search-token>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_trigger_author_token.vue?vue&type=template&id=66513cdc\"\nimport script from \"./pipeline_trigger_author_token.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_trigger_author_token.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\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-filtered-search-token',_vm._g(_vm._b({attrs:{\"config\":_vm.config},on:{\"input\":_vm.searchAuthors},scopedSlots:_vm._u([{key:\"view\",fn:function({ inputValue }){return [(_vm.activeUser)?_c('gl-avatar',{staticClass:\"gl-mr-2\",attrs:{\"size\":16,\"src\":_vm.activeUser.avatar_url}}):_vm._e(),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.activeUser ? _vm.activeUser.name : inputValue))])]}},{key:\"suggestions\",fn:function(){return [_c('gl-filtered-search-suggestion',{attrs:{\"value\":_vm.$options.anyTriggerAuthor}},[_vm._v(_vm._s(_vm.$options.anyTriggerAuthor))]),_vm._v(\" \"),_c('gl-dropdown-divider'),_vm._v(\" \"),(_vm.loading)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\"}}):_vm._l((_vm.users),function(user){return _c('gl-filtered-search-suggestion',{key:user.username,attrs:{\"value\":user.username}},[_c('div',{staticClass:\"gl-flex\"},[_c('gl-avatar',{attrs:{\"size\":32,\"src\":user.avatar_url}}),_vm._v(\" \"),_c('div',[_c('div',[_vm._v(_vm._s(user.name))]),_vm._v(\" \"),_c('div',[_vm._v(\"@\"+_vm._s(user.username))])])],1)])})]},proxy:true}])},'gl-filtered-search-token',{ ..._vm.$props, ..._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!./pipelines_filtered_search.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_filtered_search.vue?vue&type=script&lang=js\"","<script>\nimport { GlFilteredSearch } from '@gitlab/ui';\nimport { map } from 'lodash';\nimport { s__ } from '~/locale';\nimport Tracking from '~/tracking';\nimport { OPERATORS_IS } from '~/vue_shared/components/filtered_search_bar/constants';\nimport { TRACKING_CATEGORIES } from '../../constants';\nimport PipelineBranchNameToken from '../tokens/pipeline_branch_name_token.vue';\nimport PipelineSourceToken from '../tokens/pipeline_source_token.vue';\nimport PipelineStatusToken from '../tokens/pipeline_status_token.vue';\nimport PipelineTagNameToken from '../tokens/pipeline_tag_name_token.vue';\nimport PipelineTriggerAuthorToken from '../tokens/pipeline_trigger_author_token.vue';\n\nexport default {\n userType: 'username',\n branchType: 'ref',\n tagType: 'tag',\n statusType: 'status',\n sourceType: 'source',\n defaultTokensLength: 1,\n components: {\n GlFilteredSearch,\n },\n mixins: [Tracking.mixin()],\n inject: ['defaultBranchName', 'projectId'],\n props: {\n params: {\n type: Object,\n required: true,\n },\n },\n data() {\n return {\n internalValue: [],\n };\n },\n computed: {\n selectedTypes() {\n return this.value.map((i) => i.type);\n },\n tokens() {\n return [\n {\n type: this.$options.userType,\n icon: 'user',\n title: s__('Pipeline|Trigger author'),\n unique: true,\n token: PipelineTriggerAuthorToken,\n operators: OPERATORS_IS,\n projectId: this.projectId,\n },\n {\n type: this.$options.branchType,\n icon: 'branch',\n title: s__('Pipeline|Branch name'),\n unique: true,\n token: PipelineBranchNameToken,\n operators: OPERATORS_IS,\n projectId: this.projectId,\n defaultBranchName: this.defaultBranchName,\n disabled: this.selectedTypes.includes(this.$options.tagType),\n },\n {\n type: this.$options.tagType,\n icon: 'tag',\n title: s__('Pipeline|Tag name'),\n unique: true,\n token: PipelineTagNameToken,\n operators: OPERATORS_IS,\n projectId: this.projectId,\n disabled: this.selectedTypes.includes(this.$options.branchType),\n },\n {\n type: this.$options.statusType,\n icon: 'status',\n title: s__('Pipeline|Status'),\n unique: true,\n token: PipelineStatusToken,\n operators: OPERATORS_IS,\n },\n {\n type: this.$options.sourceType,\n icon: 'trigger-source',\n title: s__('Pipeline|Source'),\n unique: true,\n token: PipelineSourceToken,\n operators: OPERATORS_IS,\n },\n ];\n },\n parsedParams() {\n return map(this.params, (val, key) => ({\n type: key,\n value: { data: val, operator: '=' },\n }));\n },\n value: {\n get() {\n return this.internalValue.length > 0 ? this.internalValue : this.parsedParams;\n },\n set(value) {\n this.internalValue = value;\n },\n },\n },\n methods: {\n onSubmit(filters) {\n this.track('click_filtered_search', { label: TRACKING_CATEGORIES.search });\n this.$emit('filterPipelines', filters);\n },\n },\n};\n</script>\n\n<template>\n <gl-filtered-search\n v-model=\"value\"\n :placeholder=\"__('Filter pipelines')\"\n :available-tokens=\"tokens\"\n @submit=\"onSubmit\"\n />\n</template>\n","import { render, staticRenderFns } from \"./pipelines_filtered_search.vue?vue&type=template&id=d6250eb6\"\nimport script from \"./pipelines_filtered_search.vue?vue&type=script&lang=js\"\nexport * from \"./pipelines_filtered_search.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\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-filtered-search',{attrs:{\"placeholder\":_vm.__('Filter pipelines'),\"available-tokens\":_vm.tokens},on:{\"submit\":_vm.onSubmit},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.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.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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.vue?vue&type=script&lang=js\"","<!-- eslint-disable vue/multi-word-component-names -->\n<script>\nimport NO_PIPELINES_SVG from '@gitlab/svgs/dist/illustrations/empty-state/empty-pipeline-md.svg?url';\nimport ERROR_STATE_SVG from '@gitlab/svgs/dist/illustrations/empty-state/empty-job-failed-md.svg?url';\nimport { GlCollapsibleListbox, GlEmptyState, GlIcon, GlLoadingIcon } from '@gitlab/ui';\nimport { isEqual } from 'lodash';\nimport * as Sentry from '~/sentry/sentry_browser_wrapper';\nimport { createAlert, VARIANT_INFO, VARIANT_WARNING } from '~/alert';\nimport { getParameterByName } from '~/lib/utils/url_utility';\nimport { __, s__ } from '~/locale';\nimport Tracking from '~/tracking';\nimport {\n FILTER_TAG_IDENTIFIER,\n PIPELINE_ID_KEY,\n PIPELINE_IID_KEY,\n RAW_TEXT_WARNING,\n TRACKING_CATEGORIES,\n} from '~/ci/constants';\nimport PipelinesTable from '~/ci/common/pipelines_table.vue';\nimport PipelinesMixin from '~/ci/pipeline_details/mixins/pipelines_mixin';\nimport { validateParams } from '~/ci/pipeline_details/utils';\nimport NavigationTabs from '~/vue_shared/components/navigation_tabs.vue';\nimport TablePagination from '~/vue_shared/components/pagination/table_pagination.vue';\nimport { isLoggedIn } from '~/lib/utils/common_utils';\nimport setSortPreferenceMutation from '~/issues/list/queries/set_sort_preference.mutation.graphql';\nimport PipelinesService from './services/pipelines_service';\nimport { ANY_TRIGGER_AUTHOR } from './constants';\nimport NoCiEmptyState from './components/empty_state/no_ci_empty_state.vue';\nimport NavigationControls from './components/nav_controls.vue';\nimport PipelinesFilteredSearch from './components/pipelines_filtered_search.vue';\n\nexport default {\n components: {\n NoCiEmptyState,\n GlCollapsibleListbox,\n GlEmptyState,\n GlIcon,\n GlLoadingIcon,\n NavigationTabs,\n NavigationControls,\n PipelinesFilteredSearch,\n PipelinesTable,\n TablePagination,\n PipelineAccountVerificationAlert: () =>\n import('ee_component/vue_shared/components/pipeline_account_verification_alert.vue'),\n },\n mixins: [PipelinesMixin, Tracking.mixin()],\n props: {\n store: {\n type: Object,\n required: true,\n },\n endpoint: {\n type: String,\n required: true,\n },\n hasGitlabCi: {\n type: Boolean,\n required: true,\n },\n resetCachePath: {\n type: String,\n required: false,\n default: null,\n },\n newPipelinePath: {\n type: String,\n required: false,\n default: null,\n },\n params: {\n type: Object,\n required: true,\n },\n defaultVisibilityPipelineIdType: {\n type: String,\n required: false,\n default: null,\n },\n },\n data() {\n return {\n // Start with loading state to avoid a glitch when the empty state will be rendered\n isLoading: true,\n state: this.store.state,\n scope: getParameterByName('scope') || 'all',\n page: getParameterByName('page') || '1',\n requestData: {},\n isResetCacheButtonLoading: false,\n visibilityPipelineIdType: this.defaultVisibilityPipelineIdType,\n };\n },\n stateMap: {\n // with tabs\n loading: 'loading',\n tableList: 'tableList',\n error: 'error',\n emptyTab: 'emptyTab',\n\n // without tabs\n emptyState: 'emptyState',\n },\n scopes: {\n all: 'all',\n finished: 'finished',\n branches: 'branches',\n tags: 'tags',\n },\n computed: {\n /**\n * `hasGitlabCi` handles both internal and external CI.\n * The order on which the checks are made in this method is\n * important to guarantee we handle all the corner cases.\n */\n stateToRender() {\n const { stateMap } = this.$options;\n\n if (this.isLoading) {\n return stateMap.loading;\n }\n\n if (this.hasError) {\n return stateMap.error;\n }\n\n if (this.state.pipelines.length) {\n return stateMap.tableList;\n }\n\n if ((this.scope !== 'all' && this.scope !== null) || this.hasGitlabCi) {\n return stateMap.emptyTab;\n }\n\n return stateMap.emptyState;\n },\n /**\n * Tabs are rendered in all states except empty state.\n * They are not rendered before the first request to avoid a flicker on first load.\n */\n shouldRenderTabs() {\n const { stateMap } = this.$options;\n return (\n this.hasMadeRequest &&\n [stateMap.loading, stateMap.tableList, stateMap.error, stateMap.emptyTab].includes(\n this.stateToRender,\n )\n );\n },\n\n shouldRenderButtons() {\n return (this.newPipelinePath || this.resetCachePath) && this.shouldRenderTabs;\n },\n\n shouldRenderPagination() {\n return !this.isLoading && !this.hasError;\n },\n\n emptyTabMessage() {\n if (this.scope === this.$options.scopes.finished) {\n return s__('Pipelines|There are currently no finished pipelines.');\n }\n\n return s__('Pipelines|There are currently no pipelines.');\n },\n\n tabs() {\n const { count } = this.state;\n const { scopes } = this.$options;\n\n return [\n {\n name: __('All'),\n scope: scopes.all,\n count: count.all,\n isActive: this.scope === 'all',\n },\n {\n name: __('Finished'),\n scope: scopes.finished,\n isActive: this.scope === 'finished',\n },\n {\n name: __('Branches'),\n scope: scopes.branches,\n isActive: this.scope === 'branches',\n },\n {\n name: __('Tags'),\n scope: scopes.tags,\n isActive: this.scope === 'tags',\n },\n ];\n },\n validatedParams() {\n return validateParams(this.params);\n },\n selectedPipelineKeyOption() {\n return (\n this.$options.pipelineKeyOptions.find(\n (option) => this.visibilityPipelineIdType === option.value,\n ) || this.$options.pipelineKeyOptions[0]\n );\n },\n },\n created() {\n this.service = new PipelinesService(this.endpoint);\n this.requestData = { page: this.page, scope: this.scope, ...this.validatedParams };\n },\n methods: {\n onChangeTab(scope) {\n if (this.scope === scope) {\n return;\n }\n\n let params = {\n scope,\n page: '1',\n };\n\n params = this.onChangeWithFilter(params);\n\n this.updateContent(params);\n\n this.track('click_filter_tabs', { label: TRACKING_CATEGORIES.tabs, property: scope });\n },\n successCallback(resp) {\n // Because we are polling & the user is interacting verify if the response received\n // matches the last request made\n if (isEqual(resp.config.params, this.requestData)) {\n this.store.storeCount(resp.data.count);\n this.store.storePagination(resp.headers);\n this.setCommonData(resp.data.pipelines);\n }\n },\n handleResetRunnersCache(endpoint) {\n this.isResetCacheButtonLoading = true;\n\n this.service\n .postAction(endpoint)\n .then(() => {\n this.isResetCacheButtonLoading = false;\n createAlert({\n message: s__('Pipelines|Project cache successfully reset.'),\n variant: VARIANT_INFO,\n });\n })\n .catch(() => {\n this.isResetCacheButtonLoading = false;\n createAlert({\n message: s__('Pipelines|Something went wrong while cleaning runners cache.'),\n });\n });\n },\n resetRequestData() {\n this.requestData = { page: this.page, scope: this.scope };\n },\n filterPipelines(filters) {\n this.resetRequestData();\n\n filters.forEach((filter) => {\n // do not add Any for username query param, so we\n // can fetch all trigger authors\n if (\n filter.type &&\n filter.value.data !== ANY_TRIGGER_AUTHOR &&\n filter.type !== FILTER_TAG_IDENTIFIER\n ) {\n this.requestData[filter.type] = filter.value.data;\n }\n\n if (filter.type === FILTER_TAG_IDENTIFIER) {\n this.requestData.ref = filter.value.data;\n }\n\n if (!filter.type) {\n createAlert({\n message: RAW_TEXT_WARNING,\n variant: VARIANT_WARNING,\n });\n }\n });\n\n if (filters.length === 0) {\n this.resetRequestData();\n }\n\n this.updateContent({ ...this.requestData, page: '1' });\n },\n changeVisibilityPipelineIDType(idType) {\n this.visibilityPipelineIdType = idType;\n if (idType === PIPELINE_IID_KEY) {\n this.track('pipelines_display_options', {\n label: TRACKING_CATEGORIES.listbox,\n property: idType,\n });\n }\n\n if (isLoggedIn()) {\n this.saveVisibilityPipelineIDType(idType);\n }\n },\n saveVisibilityPipelineIDType(idType) {\n this.$apollo\n .mutate({\n mutation: setSortPreferenceMutation,\n variables: { input: { visibilityPipelineIdType: idType.toUpperCase() } },\n })\n .then(({ data }) => {\n if (data.userPreferencesUpdate.errors.length) {\n throw new Error(data.userPreferencesUpdate.errors);\n }\n })\n .catch((error) => {\n Sentry.captureException(error);\n });\n },\n },\n errorStateSvgPath: ERROR_STATE_SVG,\n noPipelinesSvgPath: NO_PIPELINES_SVG,\n pipelineKeyOptions: [\n {\n text: __('Show Pipeline ID'),\n label: __('Pipeline ID'),\n value: PIPELINE_ID_KEY,\n },\n {\n text: __('Show Pipeline IID'),\n label: __('Pipeline IID'),\n value: PIPELINE_IID_KEY,\n },\n ],\n};\n</script>\n<template>\n <div class=\"pipelines-container gl-mt-2\">\n <pipeline-account-verification-alert class=\"gl-mt-5\" />\n <div\n v-if=\"shouldRenderTabs || shouldRenderButtons\"\n class=\"top-area scrolling-tabs-container inner-page-scroll-tabs gl-border-none\"\n >\n <div class=\"fade-left\">\n <gl-icon name=\"chevron-lg-left\" :size=\"12\" />\n </div>\n <div class=\"fade-right\">\n <gl-icon name=\"chevron-lg-right\" :size=\"12\" />\n </div>\n\n <navigation-tabs\n v-if=\"shouldRenderTabs\"\n :tabs=\"tabs\"\n scope=\"pipelines\"\n @onChangeTab=\"onChangeTab\"\n />\n\n <navigation-controls\n v-if=\"shouldRenderButtons\"\n :new-pipeline-path=\"newPipelinePath\"\n :reset-cache-path=\"resetCachePath\"\n :is-reset-cache-button-loading=\"isResetCacheButtonLoading\"\n @resetRunnersCache=\"handleResetRunnersCache\"\n />\n </div>\n\n <div v-if=\"stateToRender !== $options.stateMap.emptyState\" class=\"gl-flex\">\n <div\n class=\"row-content-block gl-flex gl-max-w-full gl-flex-grow gl-flex-wrap gl-gap-4 gl-border-b-0 sm:gl-flex-nowrap\"\n >\n <pipelines-filtered-search\n class=\"gl-flex gl-max-w-full gl-flex-grow\"\n :params=\"validatedParams\"\n @filterPipelines=\"filterPipelines\"\n />\n <gl-collapsible-listbox\n v-model=\"visibilityPipelineIdType\"\n class=\"gl-grow sm:gl-grow-0\"\n toggle-class=\"gl-grow\"\n :toggle-text=\"selectedPipelineKeyOption.text\"\n :items=\"$options.pipelineKeyOptions\"\n @select=\"changeVisibilityPipelineIDType\"\n />\n </div>\n </div>\n\n <div class=\"content-list pipelines\">\n <gl-loading-icon\n v-if=\"stateToRender === $options.stateMap.loading\"\n :label=\"s__('Pipelines|Loading Pipelines')\"\n size=\"lg\"\n class=\"prepend-top-20\"\n />\n\n <no-ci-empty-state\n v-else-if=\"stateToRender === $options.stateMap.emptyState\"\n :empty-state-svg-path=\"$options.noPipelinesSvgPath\"\n />\n\n <gl-empty-state\n v-else-if=\"stateToRender === $options.stateMap.error\"\n :svg-path=\"$options.errorStateSvgPath\"\n :title=\"s__('Pipelines|There was an error fetching the pipelines.')\"\n :description=\"s__('Pipelines|Try again in a few moments or contact your support team.')\"\n />\n\n <gl-empty-state\n v-else-if=\"stateToRender === $options.stateMap.emptyTab\"\n :svg-path=\"$options.noPipelinesSvgPath\"\n :title=\"emptyTabMessage\"\n />\n\n <div v-else-if=\"stateToRender === $options.stateMap.tableList\">\n <pipelines-table\n :pipelines=\"state.pipelines\"\n :pipeline-id-type=\"selectedPipelineKeyOption.value\"\n @cancel-pipeline=\"onCancelPipeline\"\n @refresh-pipelines-table=\"onRefreshPipelinesTable\"\n @retry-pipeline=\"onRetryPipeline\"\n />\n </div>\n\n <table-pagination\n v-if=\"shouldRenderPagination\"\n :change=\"onChangePage\"\n :page-info=\"state.pageInfo\"\n />\n </div>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./pipelines.vue?vue&type=template&id=51f05bdc\"\nimport script from \"./pipelines.vue?vue&type=script&lang=js\"\nexport * from \"./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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"pipelines-container gl-mt-2\"},[_c('pipeline-account-verification-alert',{staticClass:\"gl-mt-5\"}),_vm._v(\" \"),(_vm.shouldRenderTabs || _vm.shouldRenderButtons)?_c('div',{staticClass:\"top-area scrolling-tabs-container inner-page-scroll-tabs gl-border-none\"},[_c('div',{staticClass:\"fade-left\"},[_c('gl-icon',{attrs:{\"name\":\"chevron-lg-left\",\"size\":12}})],1),_vm._v(\" \"),_c('div',{staticClass:\"fade-right\"},[_c('gl-icon',{attrs:{\"name\":\"chevron-lg-right\",\"size\":12}})],1),_vm._v(\" \"),(_vm.shouldRenderTabs)?_c('navigation-tabs',{attrs:{\"tabs\":_vm.tabs,\"scope\":\"pipelines\"},on:{\"onChangeTab\":_vm.onChangeTab}}):_vm._e(),_vm._v(\" \"),(_vm.shouldRenderButtons)?_c('navigation-controls',{attrs:{\"new-pipeline-path\":_vm.newPipelinePath,\"reset-cache-path\":_vm.resetCachePath,\"is-reset-cache-button-loading\":_vm.isResetCacheButtonLoading},on:{\"resetRunnersCache\":_vm.handleResetRunnersCache}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.stateToRender !== _vm.$options.stateMap.emptyState)?_c('div',{staticClass:\"gl-flex\"},[_c('div',{staticClass:\"row-content-block gl-flex gl-max-w-full gl-flex-grow gl-flex-wrap gl-gap-4 gl-border-b-0 sm:gl-flex-nowrap\"},[_c('pipelines-filtered-search',{staticClass:\"gl-flex gl-max-w-full gl-flex-grow\",attrs:{\"params\":_vm.validatedParams},on:{\"filterPipelines\":_vm.filterPipelines}}),_vm._v(\" \"),_c('gl-collapsible-listbox',{staticClass:\"gl-grow sm:gl-grow-0\",attrs:{\"toggle-class\":\"gl-grow\",\"toggle-text\":_vm.selectedPipelineKeyOption.text,\"items\":_vm.$options.pipelineKeyOptions},on:{\"select\":_vm.changeVisibilityPipelineIDType},model:{value:(_vm.visibilityPipelineIdType),callback:function ($$v) {_vm.visibilityPipelineIdType=$$v},expression:\"visibilityPipelineIdType\"}})],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"content-list pipelines\"},[(_vm.stateToRender === _vm.$options.stateMap.loading)?_c('gl-loading-icon',{staticClass:\"prepend-top-20\",attrs:{\"label\":_vm.s__('Pipelines|Loading Pipelines'),\"size\":\"lg\"}}):(_vm.stateToRender === _vm.$options.stateMap.emptyState)?_c('no-ci-empty-state',{attrs:{\"empty-state-svg-path\":_vm.$options.noPipelinesSvgPath}}):(_vm.stateToRender === _vm.$options.stateMap.error)?_c('gl-empty-state',{attrs:{\"svg-path\":_vm.$options.errorStateSvgPath,\"title\":_vm.s__('Pipelines|There was an error fetching the pipelines.'),\"description\":_vm.s__('Pipelines|Try again in a few moments or contact your support team.')}}):(_vm.stateToRender === _vm.$options.stateMap.emptyTab)?_c('gl-empty-state',{attrs:{\"svg-path\":_vm.$options.noPipelinesSvgPath,\"title\":_vm.emptyTabMessage}}):(_vm.stateToRender === _vm.$options.stateMap.tableList)?_c('div',[_c('pipelines-table',{attrs:{\"pipelines\":_vm.state.pipelines,\"pipeline-id-type\":_vm.selectedPipelineKeyOption.value},on:{\"cancel-pipeline\":_vm.onCancelPipeline,\"refresh-pipelines-table\":_vm.onRefreshPipelinesTable,\"retry-pipeline\":_vm.onRetryPipeline}})],1):_vm._e(),_vm._v(\" \"),(_vm.shouldRenderPagination)?_c('table-pagination',{attrs:{\"change\":_vm.onChangePage,\"page-info\":_vm.state.pageInfo}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { GlToast } from '@gitlab/ui';\nimport Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport createDefaultClient from '~/lib/graphql';\nimport {\n buildUrlWithCurrentLocation,\n historyReplaceState,\n parseBoolean,\n} from '~/lib/utils/common_utils';\nimport { doesHashExistInUrl } from '~/lib/utils/url_utility';\nimport { __ } from '~/locale';\nimport Translate from '~/vue_shared/translate';\nimport Pipelines from '~/ci/pipelines_page/pipelines.vue';\nimport PipelinesStore from './stores/pipelines_store';\n\nVue.use(Translate);\nVue.use(GlToast);\nVue.use(VueApollo);\n\nconst apolloProvider = new VueApollo({\n defaultClient: createDefaultClient(),\n});\n\nexport const initPipelinesIndex = (selector = '#pipelines-list-vue') => {\n const el = document.querySelector(selector);\n if (!el) {\n return null;\n }\n\n const {\n endpoint,\n artifactsEndpoint,\n artifactsEndpointPlaceholder,\n pipelineSchedulesPath,\n newPipelinePath,\n pipelineEditorPath,\n suggestedCiTemplates,\n canCreatePipeline,\n hasGitlabCi,\n resetCachePath,\n projectId,\n defaultBranchName,\n params,\n fullPath,\n visibilityPipelineIdType,\n showJenkinsCiPrompt,\n identityVerificationPath,\n identityVerificationRequired,\n pipelinesAnalyticsPath,\n } = el.dataset;\n\n return new Vue({\n el,\n apolloProvider,\n provide: {\n artifactsEndpoint,\n artifactsEndpointPlaceholder,\n canCreatePipeline: parseBoolean(canCreatePipeline),\n defaultBranchName,\n fullPath,\n manualActionsLimit: 50,\n pipelineEditorPath,\n pipelineSchedulesPath,\n pipelinesAnalyticsPath,\n projectId,\n identityVerificationPath,\n identityVerificationRequired: parseBoolean(identityVerificationRequired),\n suggestedCiTemplates: JSON.parse(suggestedCiTemplates),\n showJenkinsCiPrompt: parseBoolean(showJenkinsCiPrompt),\n },\n data() {\n return {\n store: new PipelinesStore(),\n };\n },\n created() {\n if (doesHashExistInUrl('delete_success')) {\n this.$toast.show(__('The pipeline has been deleted'));\n historyReplaceState(buildUrlWithCurrentLocation());\n }\n },\n render(createElement) {\n return createElement(Pipelines, {\n props: {\n defaultVisibilityPipelineIdType: visibilityPipelineIdType,\n endpoint,\n hasGitlabCi: parseBoolean(hasGitlabCi),\n newPipelinePath,\n params: JSON.parse(params),\n resetCachePath,\n store: this.store,\n },\n });\n },\n });\n};\n","import { initPipelinesIndex } from '~/ci/pipeline_details/pipelines_index';\n\ninitPipelinesIndex();\n","import '~/pages/projects/pipelines/index/index';\nimport initVueAlerts from '~/vue_alerts';\n\ninitVueAlerts();\n","import { Wormhole, PortalTarget } from 'portal-vue';\nimport { extend } from '../../vue';\nimport { NAME_TOASTER } from '../../constants/components';\nimport { EVENT_NAME_DESTROYED } from '../../constants/events';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { requestAF, removeClass } from '../../utils/dom';\nimport { getRootEventName } from '../../utils/events';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { warn } from '../../utils/warn';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Helper components ---\n\n// @vue/component\nconst DefaultTransition = /*#__PURE__*/extend({\n mixins: [normalizeSlotMixin],\n data() {\n return {\n // Transition classes base name\n name: 'b-toaster'\n };\n },\n methods: {\n onAfterEnter(el) {\n // Work around a Vue.js bug where `*-enter-to` class is not removed\n // See: https://github.com/vuejs/vue/pull/7901\n // The `*-move` class is also stuck on elements that moved,\n // but there are no JavaScript hooks to handle after move\n // See: https://github.com/vuejs/vue/pull/7906\n requestAF(() => {\n removeClass(el, `${this.name}-enter-to`);\n });\n }\n },\n render(h) {\n return h('transition-group', {\n props: {\n tag: 'div',\n name: this.name\n },\n on: {\n afterEnter: this.onAfterEnter\n }\n }, this.normalizeSlot());\n }\n});\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n // Allowed: 'true' or 'false' or `null`\n ariaAtomic: makeProp(PROP_TYPE_STRING),\n ariaLive: makeProp(PROP_TYPE_STRING),\n name: makeProp(PROP_TYPE_STRING, undefined, true),\n // Required\n // Aria role\n role: makeProp(PROP_TYPE_STRING)\n}, NAME_TOASTER);\n\n// --- Main component ---\n\n// @vue/component\nconst BToaster = /*#__PURE__*/extend({\n name: NAME_TOASTER,\n mixins: [listenOnRootMixin],\n props,\n data() {\n return {\n // We don't render on SSR or if a an existing target found\n doRender: false,\n dead: false,\n // Toaster names cannot change once created\n staticName: this.name\n };\n },\n beforeMount() {\n const {\n name\n } = this;\n this.staticName = name;\n\n /* istanbul ignore if */\n if (Wormhole.hasTarget(name)) {\n warn(`A \"<portal-target>\" with name \"${name}\" already exists in the document.`, NAME_TOASTER);\n this.dead = true;\n } else {\n this.doRender = true;\n }\n },\n beforeDestroy() {\n // Let toasts made with `this.$bvToast.toast()` know that this toaster\n // is being destroyed and should should also destroy/hide themselves\n if (this.doRender) {\n this.emitOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), this.name);\n }\n },\n destroyed() {\n // Remove from DOM if needed\n const {\n $el\n } = this;\n /* istanbul ignore next: difficult to test */\n if ($el && $el.parentNode) {\n $el.parentNode.removeChild($el);\n }\n },\n render(h) {\n let $toaster = h('div', {\n class: ['gl-hidden', {\n 'b-dead-toaster': this.dead\n }]\n });\n if (this.doRender) {\n const $target = h(PortalTarget, {\n staticClass: 'b-toaster-slot',\n props: {\n name: this.staticName,\n multiple: true,\n tag: 'div',\n slim: false,\n // transition: this.transition || DefaultTransition\n transition: DefaultTransition\n }\n });\n $toaster = h('div', {\n staticClass: 'b-toaster',\n class: [this.staticName],\n attrs: {\n id: this.staticName,\n // Fallback to null to make sure attribute doesn't exist\n role: this.role || null,\n 'aria-live': this.ariaLive,\n 'aria-atomic': this.ariaAtomic\n }\n }, [$target]);\n }\n return $toaster;\n }\n});\n\nexport { BToaster, DefaultTransition, props };\n","import { Wormhole, Portal } from 'portal-vue';\nimport { extend, COMPONENT_UID_KEY } from '../../vue';\nimport { NAME_TOAST, NAME_TOASTER } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_SHOW, EVENT_NAME_HIDE, EVENT_NAME_DESTROYED, EVENT_OPTIONS_NO_CAPTURE, EVENT_NAME_SHOWN, EVENT_NAME_HIDDEN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_TOAST_TITLE, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { requestAF } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName, eventOnOff } from '../../utils/events';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { createNewChildComponent } from '../../utils/create-new-child-component';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { props as props$2, idMixin } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { scopedStyleMixin } from '../../mixins/scoped-style';\nimport { props as props$1, BLink } from '../link/link';\nimport { BVTransition } from '../transition/bv-transition';\nimport { BToaster } from './toaster';\n\n// --- Constants ---\n\nconst {\n mixin: modelMixin,\n props: modelProps,\n prop: MODEL_PROP_NAME,\n event: MODEL_EVENT_NAME\n} = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false,\n event: EVENT_NAME_CHANGE\n});\nconst MIN_DURATION = 1000;\n\n// --- Props ---\n\nconst linkProps = pick(props$1, ['href', 'to']);\nconst props = makePropsConfigurable(sortKeys({\n ...props$2,\n ...modelProps,\n ...linkProps,\n appendToast: makeProp(PROP_TYPE_BOOLEAN, false),\n autoHideDelay: makeProp(PROP_TYPE_NUMBER_STRING, 5000),\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n // Switches role to 'status' and aria-live to 'polite'\n isStatus: makeProp(PROP_TYPE_BOOLEAN, false),\n noAutoHide: makeProp(PROP_TYPE_BOOLEAN, false),\n noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n noHoverPause: makeProp(PROP_TYPE_BOOLEAN, false),\n solid: makeProp(PROP_TYPE_BOOLEAN, false),\n // Render the toast in place, rather than in a portal-target\n static: makeProp(PROP_TYPE_BOOLEAN, false),\n title: makeProp(PROP_TYPE_STRING),\n toastClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n toaster: makeProp(PROP_TYPE_STRING, 'b-toaster-top-right'),\n variant: makeProp(PROP_TYPE_STRING)\n}), NAME_TOAST);\n\n// --- Main component ---\n\n// @vue/component\nconst BToast = /*#__PURE__*/extend({\n name: NAME_TOAST,\n mixins: [attrsMixin, idMixin, modelMixin, listenOnRootMixin, normalizeSlotMixin, scopedStyleMixin],\n inheritAttrs: false,\n props,\n data() {\n return {\n isMounted: false,\n doRender: false,\n localShow: false,\n isTransitioning: false,\n isHiding: false,\n order: 0,\n dismissStarted: 0,\n resumeDismiss: 0\n };\n },\n computed: {\n toastClasses() {\n const {\n appendToast,\n variant\n } = this;\n return {\n 'b-toast-solid': this.solid,\n 'b-toast-append': appendToast,\n 'b-toast-prepend': !appendToast,\n [`b-toast-${variant}`]: variant\n };\n },\n slotScope() {\n const {\n hide\n } = this;\n return {\n hide\n };\n },\n computedDuration() {\n // Minimum supported duration is 1 second\n return mathMax(toInteger(this.autoHideDelay, 0), MIN_DURATION);\n },\n computedToaster() {\n return String(this.toaster);\n },\n transitionHandlers() {\n return {\n beforeEnter: this.onBeforeEnter,\n afterEnter: this.onAfterEnter,\n beforeLeave: this.onBeforeLeave,\n afterLeave: this.onAfterLeave\n };\n },\n computedAttrs() {\n return {\n ...this.bvAttrs,\n id: this.safeId(),\n tabindex: '0'\n };\n }\n },\n watch: {\n [MODEL_PROP_NAME](newValue) {\n this[newValue ? 'show' : 'hide']();\n },\n localShow(newValue) {\n if (newValue !== this[MODEL_PROP_NAME]) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n },\n /* istanbul ignore next */\n toaster() {\n // If toaster target changed, make sure toaster exists\n this.$nextTick(this.ensureToaster);\n },\n /* istanbul ignore next */\n static(newValue) {\n // If static changes to true, and the toast is showing,\n // ensure the toaster target exists\n if (newValue && this.localShow) {\n this.ensureToaster();\n }\n }\n },\n created() {\n // Create private non-reactive props\n this.$_dismissTimer = null;\n },\n mounted() {\n this.isMounted = true;\n this.$nextTick(() => {\n if (this[MODEL_PROP_NAME]) {\n requestAF(() => {\n this.show();\n });\n }\n });\n // Listen for global $root show events\n this.listenOnRoot(getRootActionEventName(NAME_TOAST, EVENT_NAME_SHOW), id => {\n if (id === this.safeId()) {\n this.show();\n }\n });\n // Listen for global $root hide events\n this.listenOnRoot(getRootActionEventName(NAME_TOAST, EVENT_NAME_HIDE), id => {\n if (!id || id === this.safeId()) {\n this.hide();\n }\n });\n // Make sure we hide when toaster is destroyed\n /* istanbul ignore next: difficult to test */\n this.listenOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), toaster => {\n /* istanbul ignore next */\n if (toaster === this.computedToaster) {\n this.hide();\n }\n });\n },\n beforeDestroy() {\n this.clearDismissTimer();\n },\n methods: {\n show() {\n if (!this.localShow) {\n this.ensureToaster();\n const showEvent = this.buildEvent(EVENT_NAME_SHOW);\n this.emitEvent(showEvent);\n this.dismissStarted = this.resumeDismiss = 0;\n this.order = Date.now() * (this.appendToast ? 1 : -1);\n this.isHiding = false;\n this.doRender = true;\n this.$nextTick(() => {\n // We show the toast after we have rendered the portal and b-toast wrapper\n // so that screen readers will properly announce the toast\n requestAF(() => {\n this.localShow = true;\n });\n });\n }\n },\n hide() {\n if (this.localShow) {\n const hideEvent = this.buildEvent(EVENT_NAME_HIDE);\n this.emitEvent(hideEvent);\n this.setHoverHandler(false);\n this.dismissStarted = this.resumeDismiss = 0;\n this.clearDismissTimer();\n this.isHiding = true;\n requestAF(() => {\n this.localShow = false;\n });\n }\n },\n buildEvent(type) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new BvEvent(type, {\n cancelable: false,\n target: this.$el || null,\n relatedTarget: null,\n ...options,\n vueTarget: this,\n componentId: this.safeId()\n });\n },\n emitEvent(bvEvent) {\n const {\n type\n } = bvEvent;\n this.emitOnRoot(getRootEventName(NAME_TOAST, type), bvEvent);\n this.$emit(type, bvEvent);\n },\n ensureToaster() {\n if (this.static) {\n return;\n }\n const {\n computedToaster\n } = this;\n if (!Wormhole.hasTarget(computedToaster)) {\n const div = document.createElement('div');\n document.body.appendChild(div);\n const toaster = createNewChildComponent(this.bvEventRoot, BToaster, {\n propsData: {\n name: computedToaster\n }\n });\n toaster.$mount(div);\n }\n },\n startDismissTimer() {\n this.clearDismissTimer();\n if (!this.noAutoHide) {\n this.$_dismissTimer = setTimeout(this.hide, this.resumeDismiss || this.computedDuration);\n this.dismissStarted = Date.now();\n this.resumeDismiss = 0;\n }\n },\n clearDismissTimer() {\n clearTimeout(this.$_dismissTimer);\n this.$_dismissTimer = null;\n },\n setHoverHandler(on) {\n const el = this.$refs['b-toast'];\n eventOnOff(on, el, 'mouseenter', this.onPause, EVENT_OPTIONS_NO_CAPTURE);\n eventOnOff(on, el, 'mouseleave', this.onUnPause, EVENT_OPTIONS_NO_CAPTURE);\n },\n onPause() {\n // Determine time remaining, and then pause timer\n if (this.noAutoHide || this.noHoverPause || !this.$_dismissTimer || this.resumeDismiss) {\n return;\n }\n const passed = Date.now() - this.dismissStarted;\n if (passed > 0) {\n this.clearDismissTimer();\n this.resumeDismiss = mathMax(this.computedDuration - passed, MIN_DURATION);\n }\n },\n onUnPause() {\n // Restart timer with max of time remaining or 1 second\n if (this.noAutoHide || this.noHoverPause || !this.resumeDismiss) {\n this.resumeDismiss = this.dismissStarted = 0;\n return;\n }\n this.startDismissTimer();\n },\n onLinkClick() {\n // We delay the close to allow time for the\n // browser to process the link click\n this.$nextTick(() => {\n requestAF(() => {\n this.hide();\n });\n });\n },\n onBeforeEnter() {\n this.isTransitioning = true;\n },\n onAfterEnter() {\n this.isTransitioning = false;\n const hiddenEvent = this.buildEvent(EVENT_NAME_SHOWN);\n this.emitEvent(hiddenEvent);\n this.startDismissTimer();\n this.setHoverHandler(true);\n },\n onBeforeLeave() {\n this.isTransitioning = true;\n },\n onAfterLeave() {\n this.isTransitioning = false;\n this.order = 0;\n this.resumeDismiss = this.dismissStarted = 0;\n const hiddenEvent = this.buildEvent(EVENT_NAME_HIDDEN);\n this.emitEvent(hiddenEvent);\n this.doRender = false;\n },\n // Render helper for generating the toast\n makeToast(h) {\n const {\n slotScope\n } = this;\n const link = isLink(this);\n const $headerContent = [];\n const $title = this.normalizeSlot(SLOT_NAME_TOAST_TITLE, slotScope);\n if ($title) {\n $headerContent.push($title);\n }\n let $header = h();\n if ($headerContent.length > 0) {\n $header = h(this.headerTag, {\n staticClass: 'toast-header',\n class: this.headerClass\n }, $headerContent);\n }\n const $body = h(link ? BLink : 'div', {\n staticClass: 'toast-body',\n class: this.bodyClass,\n props: link ? pluckProps(linkProps, this) : {},\n on: link ? {\n click: this.onLinkClick\n } : {}\n }, this.normalizeSlot(SLOT_NAME_DEFAULT, slotScope));\n return h('div', {\n staticClass: 'toast',\n class: this.toastClass,\n attrs: this.computedAttrs,\n key: `toast-${this[COMPONENT_UID_KEY]}`,\n ref: 'toast'\n }, [$header, $body]);\n }\n },\n render(h) {\n if (!this.doRender || !this.isMounted) {\n return h();\n }\n const {\n order,\n static: isStatic,\n isHiding,\n isStatus\n } = this;\n const name = `b-toast-${this[COMPONENT_UID_KEY]}`;\n const $toast = h('div', {\n staticClass: 'b-toast',\n class: this.toastClasses,\n attrs: {\n // If scoped styles are applied and the toast is not static,\n // make sure the scoped style data attribute is applied\n ...(isStatic ? {} : this.scopedStyleAttrs),\n id: this.safeId('_toast_outer'),\n role: isHiding ? null : isStatus ? 'status' : 'alert',\n 'aria-live': isHiding ? null : isStatus ? 'polite' : 'assertive',\n 'aria-atomic': isHiding ? null : 'true'\n },\n key: name,\n ref: 'b-toast'\n }, [h(BVTransition, {\n props: {\n noFade: this.noFade\n },\n on: this.transitionHandlers\n }, [this.localShow ? this.makeToast(h) : h()])]);\n return h(Portal, {\n props: {\n name,\n to: this.computedToaster,\n order,\n slim: true,\n disabled: isStatic\n }\n }, [$toast]);\n }\n});\n\nexport { BToast, props };\n","import { NAME_TOAST_POP, NAME_TOASTER, NAME_TOAST } from '../../../constants/components';\nimport { HOOK_EVENT_NAME_DESTROYED, EVENT_NAME_HIDDEN, EVENT_NAME_DESTROYED, EVENT_NAME_SHOW, EVENT_NAME_HIDE } from '../../../constants/events';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { concat } from '../../../utils/array';\nimport { getComponentConfig } from '../../../utils/config';\nimport { requestAF } from '../../../utils/dom';\nimport { getRootEventName, getRootActionEventName } from '../../../utils/events';\nimport { isUndefined } from '../../../utils/inspect';\nimport { keys, omit, hasOwnProperty, defineProperty, assign, defineProperties, readonlyDescriptor } from '../../../utils/object';\nimport { pluginFactory } from '../../../utils/plugins';\nimport { warn, warnNotClient } from '../../../utils/warn';\nimport { createNewChildComponent } from '../../../utils/create-new-child-component';\nimport { getEventRoot } from '../../../utils/get-event-root';\nimport { props, BToast } from '../toast';\n\n/**\n * Plugin for adding `$bvToast` property to all Vue instances\n */\n\n// --- Constants ---\n\nconst PROP_NAME = '$bvToast';\nconst PROP_NAME_PRIV = '_bv__toast';\n\n// Base toast props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\nconst BASE_PROPS = ['id', ...keys(omit(props, ['static', 'visible']))];\n\n// Map prop names to toast slot names\nconst propsToSlots = {\n toastContent: 'default',\n title: 'toast-title'\n};\n\n// --- Helper methods ---\n\n// Method to filter only recognized props that are not undefined\nconst filterOptions = options => {\n return BASE_PROPS.reduce((memo, key) => {\n if (!isUndefined(options[key])) {\n memo[key] = options[key];\n }\n return memo;\n }, {});\n};\n\n// Method to install `$bvToast` VM injection\nconst plugin = Vue => {\n // Create a private sub-component constructor that\n // extends BToast and self-destructs after hidden\n // @vue/component\n const BVToastPop = Vue.extend({\n name: NAME_TOAST_POP,\n extends: BToast,\n mixins: [useParentMixin],\n destroyed() {\n // Make sure we not in document any more\n const {\n $el\n } = this;\n if ($el && $el.parentNode) {\n $el.parentNode.removeChild($el);\n }\n },\n mounted() {\n // Self destruct handler\n const handleDestroy = () => {\n // Ensure the toast has been force hidden\n this.localShow = false;\n this.doRender = false;\n this.$nextTick(() => {\n this.$nextTick(() => {\n // In a `requestAF()` to release control back to application\n // and to allow the portal-target time to remove the content\n requestAF(() => {\n this.$destroy();\n });\n });\n });\n };\n // Self destruct if parent destroyed\n this.bvParent.$once(HOOK_EVENT_NAME_DESTROYED, handleDestroy);\n // Self destruct after hidden\n this.$once(EVENT_NAME_HIDDEN, handleDestroy);\n // Self destruct when toaster is destroyed\n this.listenOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), toaster => {\n /* istanbul ignore next: hard to test */\n if (toaster === this.toaster) {\n handleDestroy();\n }\n });\n }\n });\n\n // Private method to generate the on-demand toast\n const makeToast = (props, parent) => {\n if (warnNotClient(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n }\n // Create an instance of `BVToastPop` component\n const toast = createNewChildComponent(parent, BVToastPop, {\n // We set parent as the local VM so these toasts can emit events on the\n // app `$root`, and it ensures `BToast` is destroyed when parent is destroyed\n propsData: {\n ...filterOptions(getComponentConfig(NAME_TOAST)),\n // Add in (filtered) user supplied props\n ...omit(props, keys(propsToSlots)),\n // Props that can't be overridden\n static: false,\n visible: true\n }\n });\n // Convert certain props to slots\n keys(propsToSlots).forEach(prop => {\n const value = props[prop];\n if (!isUndefined(value)) {\n toast.$slots[propsToSlots[prop]] = concat(value);\n }\n });\n // Create a mount point (a DIV) and mount it (which triggers the show)\n const div = document.createElement('div');\n document.body.appendChild(div);\n toast.$mount(div);\n };\n\n // Declare BvToast instance property class\n class BvToast {\n constructor(vm) {\n // Assign the new properties to this instance\n assign(this, {\n _vm: vm,\n _root: getEventRoot(vm)\n });\n // Set these properties as read-only and non-enumerable\n defineProperties(this, {\n _vm: readonlyDescriptor(),\n _root: readonlyDescriptor()\n });\n }\n\n // --- Public Instance methods ---\n\n // Opens a user defined toast and returns immediately\n toast(content) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!content || warnNotClient(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n }\n makeToast({\n ...filterOptions(options),\n toastContent: content\n }, this._vm);\n }\n\n // shows a `<b-toast>` component with the specified ID\n show(id) {\n if (id) {\n this._root.$emit(getRootActionEventName(NAME_TOAST, EVENT_NAME_SHOW), id);\n }\n }\n\n // Hide a toast with specified ID, or if not ID all toasts\n hide() {\n let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n this._root.$emit(getRootActionEventName(NAME_TOAST, EVENT_NAME_HIDE), id);\n }\n }\n\n // Add our instance mixin\n Vue.mixin({\n beforeCreate() {\n // Because we need access to `$root` for `$emits`, and VM for parenting,\n // we have to create a fresh instance of `BvToast` for each VM\n this[PROP_NAME_PRIV] = new BvToast(this);\n }\n });\n\n // Define our read-only `$bvToast` instance property\n // Placed in an if just in case in HMR mode\n if (!hasOwnProperty(Vue.prototype, PROP_NAME)) {\n defineProperty(Vue.prototype, PROP_NAME, {\n get() {\n /* istanbul ignore next */\n if (!this || !this[PROP_NAME_PRIV]) {\n warn(`\"${PROP_NAME}\" must be accessed from a Vue instance \"this\" context.`, NAME_TOAST);\n }\n return this[PROP_NAME_PRIV];\n }\n });\n }\n};\nconst BVToastPlugin = /*#__PURE__*/pluginFactory({\n plugins: {\n plugin\n }\n});\n\nexport { BVToastPlugin };\n","import { BVToastPlugin } from './helpers/bv-toast';\nimport { BToast } from './toast';\nexport { BToast } from './toast';\nimport { BToaster } from './toaster';\nexport { BToaster } from './toaster';\nimport { pluginFactory } from '../../utils/plugins';\n\nconst ToastPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BToast,\n BToaster\n },\n // $bvToast injection\n plugins: {\n BVToastPlugin\n }\n});\n\nexport { ToastPlugin };\n","import isFunction from 'lodash/isFunction';\nimport { ToastPlugin } from '../../../vendor/bootstrap-vue/src/components/toast/index';\nimport CloseButton from '../../shared_components/close_button/close_button';\n\n/* eslint-disable import/no-default-export */\nconst DEFAULT_OPTIONS = {\n autoHideDelay: 5000,\n toastClass: 'gl-toast',\n isStatus: true,\n toaster: 'b-toaster-bottom-left'\n};\nlet toastsCount = 0;\nfunction renderTitle(h, toast, options) {\n const nodes = [h(CloseButton, {\n class: ['gl-toast-close-button'],\n on: {\n click: toast.hide\n }\n })];\n if (options.action) {\n nodes.splice(0, 0, h('a', {\n role: 'button',\n class: ['gl-toast-action'],\n on: {\n click: e => options.action.onClick(e, toast)\n }\n }, options.action.text));\n }\n return nodes;\n}\nfunction showToast(message) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility\n const id = `gl-toast-${toastsCount}`;\n toastsCount += 1;\n const hide = () => {\n this.$bvToast.hide(id);\n };\n const toast = {\n id,\n hide\n };\n if (isFunction(options.onComplete)) {\n const toastHiddenCallback = e => {\n if (e.componentId === id) {\n this.$root.$off('bv::toast:hidden', toastHiddenCallback);\n options.onComplete(e);\n }\n };\n this.$root.$on('bv::toast:hidden', toastHiddenCallback);\n }\n const updatedAutoHideDelay = !Number.isNaN(options === null || options === void 0 ? void 0 : options.autoHideDelay) ? {\n autoHideDelay: options.autoHideDelay\n } : null;\n this.$bvToast.toast(message, {\n ...DEFAULT_OPTIONS,\n ...updatedAutoHideDelay,\n id,\n title: renderTitle(this.$createElement, toast, options)\n });\n return toast;\n}\n\n/**\n * Note: This is not a typical Vue component and needs to be registered before instantiating a Vue app.\n * Once registered, the toast will be globally available throughout your app.\n *\n * See https://gitlab-org.gitlab.io/gitlab-ui/ for detailed documentation.\n */\nvar toast = {\n install(Vue) {\n Vue.use(ToastPlugin);\n Vue.mixin({\n beforeCreate() {\n if (this.$toast) {\n return;\n }\n this.$toast = {\n show: showToast.bind(this)\n };\n }\n });\n }\n};\n\nexport default toast;\n","(function() {\n var Query, pathScorer, pluckCandidates, scorer, sortCandidates;\n\n scorer = require('./scorer');\n\n pathScorer = require('./pathScorer');\n\n Query = require('./query');\n\n pluckCandidates = function(a) {\n return a.candidate;\n };\n\n sortCandidates = function(a, b) {\n return b.score - a.score;\n };\n\n module.exports = function(candidates, query, options) {\n var bKey, candidate, key, maxInners, maxResults, score, scoreProvider, scoredCandidates, spotLeft, string, usePathScoring, _i, _len;\n scoredCandidates = [];\n key = options.key, maxResults = options.maxResults, maxInners = options.maxInners, usePathScoring = options.usePathScoring;\n spotLeft = (maxInners != null) && maxInners > 0 ? maxInners : candidates.length + 1;\n bKey = key != null;\n scoreProvider = usePathScoring ? pathScorer : scorer;\n for (_i = 0, _len = candidates.length; _i < _len; _i++) {\n candidate = candidates[_i];\n string = bKey ? candidate[key] : candidate;\n if (!string) {\n continue;\n }\n score = scoreProvider.score(string, query, options);\n if (score > 0) {\n scoredCandidates.push({\n candidate: candidate,\n score: score\n });\n if (!--spotLeft) {\n break;\n }\n }\n }\n scoredCandidates.sort(sortCandidates);\n candidates = scoredCandidates.map(pluckCandidates);\n if (maxResults != null) {\n candidates = candidates.slice(0, maxResults);\n }\n return candidates;\n };\n\n}).call(this);\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"],"sourceRoot":""}