{"version":3,"file":"index.cjs","sources":["../../src/themes/stylesFactory.ts","../../src/themes/ThemeContext.tsx","../../src/utils/keyframes.ts","../../src/components/Icon/utils.ts","../../src/components/Icon/Icon.tsx","../../src/utils/tooltipUtils.ts","../../src/components/Portal/Portal.tsx","../../src/components/Tooltip/Tooltip.tsx","../../src/components/FormLabel/FormLabel.tsx","../../src/components/FormField/FormField.tsx","../../src/utils/validate.ts","../../src/components/Forms/Legacy/Input/Input.tsx","../../src/components/Forms/Legacy/Select/IndicatorsContainer.tsx","../../src/components/Forms/Legacy/Select/NoOptionsMessage.tsx","../../src/components/Layout/utils/responsiveness.tsx","../../src/components/Layout/utils/styles.ts","../../src/components/Layout/Box/Box.tsx","../../src/components/ScrollContainer/ScrollIndicators.tsx","../../src/components/ScrollContainer/ScrollContainer.tsx","../../src/utils/useDelayedSwitch.ts","../../src/types/icon.ts","../../src/components/Spinner/Spinner.tsx","../../src/components/transitions/FadeTransition.tsx","../../src/components/transitions/SlideOutTransition.tsx","../../src/components/Select/SingleValue.tsx","../../src/components/Select/resetSelectStyles.ts","../../src/components/Forms/Legacy/Select/SelectOption.tsx","../../src/components/Forms/Legacy/Select/SelectOptionGroup.tsx","../../src/components/Forms/Legacy/Select/Select.tsx","../../src/components/Forms/Legacy/Switch/Switch.tsx","../../src/themes/mixins.ts","../../src/components/Forms/commonStyles.ts","../../src/components/Button/Button.tsx","../../src/components/SecretFormField/SecretFormField.tsx","../../src/utils/reactUtils.ts","../../src/components/Forms/FieldValidationMessage.tsx","../../src/components/Forms/Label.tsx","../../src/components/Forms/Field.tsx","../../src/components/Forms/RadioButtonGroup/RadioButton.tsx","../../src/components/Forms/RadioButtonGroup/RadioButtonGroup.tsx","../../src/components/Input/AutoSizeInputContext.ts","../../src/components/Input/Input.tsx","../../src/components/Layout/Stack/Stack.tsx","../../src/components/Select/CustomInput.tsx","../../src/components/Select/DropdownIndicator.tsx","../../src/components/Select/IndicatorsContainer.tsx","../../src/components/Select/InputControl.tsx","../../src/components/IconButton/IconButton.tsx","../../src/components/Select/getSelectStyles.ts","../../src/components/Select/MultiValue.tsx","../../src/components/Select/SelectContainer.tsx","../../src/components/Select/types.ts","../../src/components/Select/SelectMenu.tsx","../../src/components/Select/SelectOptionGroup.tsx","../../src/components/Text/TruncatedText.tsx","../../src/components/Text/utils.ts","../../src/components/Text/Text.tsx","../../src/components/Select/SelectOptionGroupHeader.tsx","../../src/components/Select/ValueContainer.tsx","../../src/components/Select/utils.ts","../../src/components/Select/SelectBase.tsx","../../src/components/Select/Select.tsx","../../src/components/uPlot/config.ts","../../src/options/builder/axis.tsx","../../src/components/FilterPill/FilterPill.tsx","../../src/options/builder/hideSeries.tsx","../../src/options/builder/legend.tsx","../../src/options/builder/tooltip.tsx","../../src/options/builder/text.tsx","../../src/options/builder/stacking.tsx","../../src/options/builder/timeCompare.tsx","../../src/utils/dom.ts","../../src/components/ConfirmButton/ConfirmButton.tsx","../../src/components/ConfirmButton/DeleteButton.tsx","../../src/components/Tooltip/PopoverController.tsx","../../src/components/Tooltip/Popover.tsx","../../src/components/Toggletip/Toggletip.tsx","../../src/components/CustomScrollbar/ScrollIndicators.tsx","../../src/components/CustomScrollbar/CustomScrollbar.tsx","../../src/components/Tabs/Counter.tsx","../../src/components/Tabs/Tab.tsx","../../src/components/Tabs/TabContent.tsx","../../src/components/Tabs/TabsBar.tsx","../../src/components/TabbedContainer/TabbedContainer.tsx","../../src/components/InlineToast/InlineToast.tsx","../../src/components/ClipboardButton/ClipboardButton.tsx","../../src/components/Cascader/optionMappings.ts","../../src/components/Cascader/styles.ts","../../src/components/Cascader/Cascader.tsx","../../src/components/Alert/Alert.tsx","../../src/components/Carousel/Carousel.tsx","../../src/components/ButtonCascader/ButtonCascader.tsx","../../src/components/LoadingPlaceholder/LoadingPlaceholder.tsx","../../src/components/LoadingBar/LoadingBar.tsx","../../src/utils/closePopover.ts","../../src/components/ColorPicker/ColorSwatch.tsx","../../src/components/ColorPicker/NamedColorsGroup.tsx","../../src/components/ColorPicker/NamedColorsPalette.tsx","../../src/components/ColorPicker/ColorInput.tsx","../../src/components/ColorPicker/SpectrumPalette.tsx","../../src/components/ColorPicker/ColorPickerPopover.tsx","../../src/components/Forms/InlineLabel.tsx","../../src/components/Forms/InlineField.tsx","../../src/components/Switch/Switch.tsx","../../src/components/ColorPicker/SeriesColorPickerPopover.tsx","../../src/components/ColorPicker/ColorPicker.tsx","../../src/components/ClickOutsideWrapper/ClickOutsideWrapper.tsx","../../src/components/ColorPicker/ColorPickerInput.tsx","../../src/components/EmptySearchResult/EmptySearchResult.tsx","../../src/components/EmptyState/GrotCTA/GrotCTA.tsx","../../src/components/EmptyState/GrotNotFound/GrotNotFound.tsx","../../src/components/EmptyState/EmptyState.tsx","../../src/components/UnitPicker/UnitPicker.tsx","../../src/components/StatsPicker/StatsPicker.tsx","../../src/components/Button/ButtonGroup.tsx","../../src/components/Menu/MenuDivider.tsx","../../src/components/Menu/MenuGroup.tsx","../../src/components/Menu/hooks.ts","../../src/components/Menu/utils.ts","../../src/components/Menu/SubMenu.tsx","../../src/components/Menu/MenuItem.tsx","../../src/components/Menu/Menu.tsx","../../src/components/ToolbarButton/ToolbarButton.tsx","../../src/components/Dropdown/ButtonSelect.tsx","../../src/components/RefreshPicker/RefreshPicker.tsx","../../src/components/Modal/getModalStyles.ts","../../src/utils/useCombinedRefs.ts","../../src/components/FilterInput/FilterInput.tsx","../../src/components/Link/Link.tsx","../../src/components/Link/TextLink.tsx","../../src/utils/measureText.ts","../../src/components/Input/AutoSizeInput.tsx","../../src/components/Forms/Checkbox.tsx","../../src/components/Combobox/MessageRows.tsx","../../src/components/Combobox/getComboboxStyles.ts","../../src/components/Combobox/types.ts","../../src/components/Combobox/utils.ts","../../src/components/Combobox/ComboboxList.tsx","../../src/components/Combobox/SuffixIcon.tsx","../../src/components/Combobox/filter.ts","../../src/components/Combobox/useComboboxFloat.ts","../../src/components/Combobox/useLatestAsyncCall.ts","../../src/components/Combobox/useOptions.ts","../../src/components/Combobox/Combobox.tsx","../../src/components/DateTimePickers/TimeZonePicker/TimeZoneGroup.tsx","../../src/components/DateTimePickers/TimeZonePicker/TimeZoneOffset.tsx","../../src/components/DateTimePickers/TimeZonePicker/TimeZoneDescription.tsx","../../src/components/DateTimePickers/TimeZonePicker/TimeZoneTitle.tsx","../../src/components/DateTimePickers/TimeZonePicker/TimeZoneOption.tsx","../../src/components/DateTimePickers/TimeZonePicker.tsx","../../src/components/DateTimePickers/options.ts","../../src/components/DateTimePickers/TimeRangePicker/TimePickerFooter.tsx","../../src/components/DateTimePickers/TimeRangePicker/TimePickerTitle.tsx","../../src/utils/featureToggle.ts","../../src/components/DateTimePickers/commonFormat.ts","../../src/components/DateTimePickers/utils.ts","../../src/components/DateTimePickers/WeekStartPicker.tsx","../../src/components/DateTimePickers/utils/adjustDateForReactCalendar.ts","../../src/components/DateTimePickers/TimeRangePicker/CalendarBody.tsx","../../src/components/DateTimePickers/TimeRangePicker/CalendarFooter.tsx","../../src/components/DateTimePickers/TimeRangePicker/CalendarHeader.tsx","../../src/components/DateTimePickers/TimeRangePicker/TimePickerCalendar.tsx","../../src/components/DateTimePickers/TimeRangePicker/TimeRangeContent.tsx","../../src/components/DateTimePickers/TimeRangePicker/TimeRangeOption.tsx","../../src/components/DateTimePickers/TimeRangePicker/hooks.ts","../../src/components/DateTimePickers/TimeRangePicker/TimeRangeList.tsx","../../src/components/DateTimePickers/TimeRangePicker/mapper.ts","../../src/components/DateTimePickers/TimeRangePicker/TimePickerContent.tsx","../../src/components/DateTimePickers/TimeRangeContext.tsx","../../src/components/DateTimePickers/TimeSyncButton.tsx","../../src/components/DateTimePickers/utils/useTimeSync.tsx","../../src/components/DateTimePickers/TimeRangePicker.tsx","../../src/components/DateTimePickers/TimeRangePicker/TimeRangeLabel.tsx","../../src/components/DateTimePickers/TimeOfDayPicker.tsx","../../src/components/DateTimePickers/DatePicker/DatePicker.tsx","../../src/components/DateTimePickers/DatePickerWithInput/DatePickerWithInput.tsx","../../src/components/DateTimePickers/DateTimePicker/DateTimePicker.tsx","../../src/components/List/AbstractList.tsx","../../src/components/List/List.tsx","../../src/components/Pagination/Pagination.tsx","../../src/components/InteractiveTable/Expander/index.tsx","../../src/components/InteractiveTable/utils.ts","../../src/components/InteractiveTable/InteractiveTable.tsx","../../src/utils/tags.ts","../../src/components/TagsInput/TagItem.tsx","../../src/components/TagsInput/TagsInput.tsx","../../src/components/AutoSaveField/EllipsisAnimated.tsx","../../src/components/AutoSaveField/AutoSaveField.tsx","../../src/utils/skeleton.tsx","../../src/components/Tags/Tag.tsx","../../src/components/Tags/TagList.tsx","../../src/components/Modal/ModalHeader.tsx","../../src/components/Modal/Modal.tsx","../../src/components/ConfirmModal/ConfirmContent.tsx","../../src/components/ConfirmModal/ConfirmModal.tsx","../../src/slate-plugins/clear.ts","../../src/slate-plugins/clipboard.ts","../../src/slate-plugins/indentation.ts","../../src/slate-plugins/newline.ts","../../src/slate-plugins/runner.ts","../../src/slate-plugins/selection_shortcuts.ts","../../src/types/completion.ts","../../src/utils/typeahead.ts","../../src/components/Typeahead/TypeaheadInfo.tsx","../../src/components/Typeahead/PartialHighlighter.tsx","../../src/components/Typeahead/TypeaheadItem.tsx","../../src/components/Typeahead/Typeahead.tsx","../../src/utils/fuzzy.ts","../../src/utils/searchFunctions.ts","../../src/utils/slate.ts","../../src/slate-plugins/slate-prism/TOKEN_MARK.ts","../../src/slate-plugins/suggestions.tsx","../../src/components/QueryField/QueryField.tsx","../../src/utils/useAsyncDependency.ts","../../src/components/ErrorBoundary/ErrorWithStack.tsx","../../src/components/Monaco/ReactMonacoEditorLazy.tsx","../../src/components/Monaco/types.ts","../../src/components/Monaco/suggestions.ts","../../src/components/Monaco/CodeEditor.tsx","../../src/components/Monaco/utils.ts","../../src/components/Modal/ModalTabsHeader.tsx","../../src/components/Modal/ModalTabContent.tsx","../../src/components/Modal/ModalsContext.tsx","../../src/components/ToolbarButton/ToolbarButtonRow.tsx","../../src/components/PageLayout/PageToolbar.tsx","../../src/components/SetInterval/SetInterval.tsx","../../src/components/DragHandle/DragHandle.tsx","../../src/components/Drawer/Drawer.tsx","../../src/components/Table/TableCellInspector.tsx","../../src/components/Table/hooks.ts","../../src/components/Table/reducer.ts","../../src/utils/colors.ts","../../src/components/Forms/Legend.tsx","../../src/components/Forms/FieldSet.tsx","../../src/components/Actions/VariablesInputModal.tsx","../../src/components/Actions/ActionButton.tsx","../../src/components/Table/ActionsCell.tsx","../../src/components/FormattedValueDisplay/FormattedValueDisplay.tsx","../../src/components/BarGauge/BarGauge.tsx","../../src/components/DataLinks/DataLinkButton.tsx","../../src/components/VizTooltip/VizTooltipFooter.tsx","../../src/components/VizTooltip/VizTooltipWrapper.tsx","../../src/components/Table/DataLinksActionsTooltip.tsx","../../src/components/Table/Cells/BarGaugeCell.tsx","../../src/utils/table.ts","../../src/components/Table/Cells/DataLinksCell.tsx","../../src/components/Table/types.ts","../../src/components/Table/CellActions.tsx","../../src/components/Table/Cells/DefaultCell.tsx","../../src/components/Table/Cells/GeoCell.tsx","../../src/components/Table/Cells/ImageCell.tsx","../../src/components/Table/Cells/JSONViewCell.tsx","../../src/utils/debug.ts","../../src/utils/logger.ts","../../src/components/uPlot/types.ts","../../src/components/uPlot/internal.ts","../../src/components/uPlot/utils.ts","../../src/components/uPlot/Plot.tsx","../../src/components/uPlot/config/UPlotScaleBuilder.ts","../../src/components/uPlot/config/UPlotAxisBuilder.ts","../../src/components/uPlot/config/gradientFills.ts","../../src/components/uPlot/config/UPlotSeriesBuilder.ts","../../src/components/uPlot/config/UPlotThresholds.ts","../../src/components/uPlot/config/UPlotConfigBuilder.ts","../../src/components/Sparkline/utils.ts","../../src/components/Sparkline/Sparkline.tsx","../../src/components/Table/Cells/SparklineCell.tsx","../../src/components/Table/Cells/FooterCell.tsx","../../src/components/Table/TableRT/FooterRow.tsx","../../src/components/Table/TableRT/RowExpander.tsx","../../src/components/Table/utils.ts","../../src/components/Table/TableRT/FilterList.tsx","../../src/components/Table/TableRT/FilterPopup.tsx","../../src/components/Table/TableRT/Filter.tsx","../../src/components/Table/TableRT/HeaderRow.tsx","../../src/components/PanelChrome/LoadingIndicator.tsx","../../src/utils/DelayRender.tsx","../../src/utils/usePointerDistance.ts","../../src/components/ElementSelectionContext/ElementSelectionContext.tsx","../../src/components/Dropdown/Dropdown.tsx","../../src/components/PanelChrome/PanelMenu.tsx","../../src/components/PanelChrome/HoverWidget.tsx","../../src/components/PanelChrome/TitleItem.tsx","../../src/components/PanelChrome/PanelDescription.tsx","../../src/components/PanelChrome/PanelStatus.tsx","../../src/components/PanelChrome/PanelChrome.tsx","../../src/components/PanelChrome/PanelContext.ts","../../src/components/PanelChrome/types.ts","../../src/components/PanelChrome/index.ts","../../src/components/Table/Cells/TableCell.tsx","../../src/components/Table/TableRT/ExpandedRow.tsx","../../src/components/Table/TableRT/RowsList.tsx","../../src/components/Table/TableRT/styles.ts","../../src/components/Table/TableRT/Table.tsx","../../src/components/TextArea/TextArea.tsx","../../src/components/TableInputCSV/TableInputCSV.tsx","../../src/components/Tabs/VerticalTab.tsx","../../src/components/RenderUserContentAsHTML/RenderUserContentAsHTML.tsx","../../src/components/BigValue/PercentChange.tsx","../../src/components/BigValue/BigValueLayout.tsx","../../src/components/BigValue/BigValue.tsx","../../src/components/Gauge/utils.ts","../../src/components/Gauge/Gauge.tsx","../../src/components/VizTooltip/types.ts","../../src/components/VizTooltip/utils.ts","../../src/components/VizTooltip/VizTooltipContainer.tsx","../../src/components/VizTooltip/VizTooltip.tsx","../../src/components/VizLegend/SeriesIcon.tsx","../../src/components/VizTooltip/SeriesTable.tsx","../../src/utils/squares.ts","../../src/components/VizRepeater/VizRepeater.tsx","../../src/components/VizLayout/VizLayout.tsx","../../src/components/VizLegend/types.ts","../../src/components/List/InlineList.tsx","../../src/components/VizLegend/VizLegendSeriesIcon.tsx","../../src/components/VizLegend/VizLegendStatsList.tsx","../../src/components/VizLegend/VizLegendListItem.tsx","../../src/components/VizLegend/VizLegendList.tsx","../../src/components/VizLegend/VizLegendTableItem.tsx","../../src/components/VizLegend/VizLegendTable.tsx","../../src/components/VizLegend/utils.ts","../../src/components/VizLegend/VizLegend.tsx","../../src/components/Collapse/Collapse.tsx","../../src/components/Collapse/CollapsableSection.tsx","../../src/components/DataLinks/FieldLinkList.tsx","../../src/components/Button/FullWidthButtonContainer.tsx","../../src/components/SingleStatShared/SingleStatBaseOptions.ts","../../src/components/CallToActionCard/CallToActionCard.tsx","../../src/components/ContextMenu/ContextMenu.tsx","../../src/components/ContextMenu/WithContextMenu.tsx","../../src/slate-plugins/slate-prism/options.tsx","../../src/slate-plugins/slate-prism/index.ts","../../src/components/DataLinks/DataLinkSuggestions.tsx","../../src/components/DataLinks/SelectionReference.ts","../../src/components/DataLinks/DataLinkInput.tsx","../../src/components/DataLinks/DataLinkEditor.tsx","../../src/components/DataLinks/DataLinksInlineEditor/DataLinkEditorModalContent.tsx","../../src/components/Badge/Badge.tsx","../../src/components/DataLinks/DataLinksInlineEditor/DataLinksListItemBase.tsx","../../src/components/DataLinks/DataLinksInlineEditor/DataLinksInlineEditorBase.tsx","../../src/components/DataLinks/DataLinksInlineEditor/DataLinksInlineEditor.tsx","../../src/utils/dataLinks.ts","../../src/components/DataLinks/DataLinksContextMenu.tsx","../../src/components/InfoBox/InfoBox.tsx","../../src/components/FeatureBadge/FeatureBadge.tsx","../../src/components/InfoBox/FeatureInfoBox.tsx","../../src/components/JSONFormatter/json_explorer/helpers.ts","../../src/components/JSONFormatter/json_explorer/json_explorer.ts","../../src/components/JSONFormatter/JSONFormatter.tsx","../../src/components/ErrorBoundary/ErrorBoundary.tsx","../../src/components/DataSourceSettings/BasicAuthSettings.tsx","../../src/components/DataSourceSettings/CustomHeadersSettings.tsx","../../src/components/DataSourceSettings/HttpProxySettings.tsx","../../src/components/DataSourceSettings/SecureSocksProxySettings.tsx","../../src/components/Forms/InlineFieldRow.tsx","../../src/components/DataSourceSettings/CertificationKey.tsx","../../src/components/DataSourceSettings/TLSAuthSettings.tsx","../../src/components/DataSourceSettings/DataSourceHttpSettings.tsx","../../src/components/DataSourceSettings/AlertingSettings.tsx","../../src/components/Segment/SegmentSelect.tsx","../../src/components/Segment/styles.ts","../../src/components/Segment/useExpandableLabel.tsx","../../src/components/Segment/Segment.tsx","../../src/components/Segment/SegmentAsync.tsx","../../src/components/Segment/SegmentInput.tsx","../../src/components/Segment/SegmentSection.tsx","../../src/components/Slider/styles.ts","../../src/components/Slider/Slider.tsx","../../src/components/Slider/HandleTooltip.tsx","../../src/components/Slider/RangeSlider.tsx","../../src/components/Forms/Form.tsx","../../src/components/InputControl.tsx","../../src/components/ValuePicker/ValuePicker.tsx","../../src/components/MatchersUI/FieldNameByRegexMatcherEditor.tsx","../../src/components/MatchersUI/utils.ts","../../src/components/MatchersUI/FieldNameMatcherEditor.tsx","../../src/components/MatchersUI/FieldNamesMatcherEditor.tsx","../../src/components/MatchersUI/FieldTypeMatcherEditor.tsx","../../src/components/MatchersUI/FieldValueMatcher.tsx","../../src/components/MatchersUI/FieldsByFrameRefIdMatcher.tsx","../../src/components/MatchersUI/fieldMatchersUI.ts","../../src/components/Layout/Grid/Grid.tsx","../../src/components/Layout/Space.tsx","../../src/components/Forms/InlineSegmentGroup.tsx","../../src/components/Forms/FieldArray.tsx","../../src/components/Combobox/ValuePill.tsx","../../src/components/Combobox/getMultiComboboxStyles.ts","../../src/components/Combobox/useMeasureMulti.ts","../../src/components/Combobox/useMultiInputAutoSize.tsx","../../src/components/Combobox/MultiCombobox.tsx","../../src/components/Layout/Layout.tsx","../../src/components/Forms/RadioButtonList/RadioButtonDot.tsx","../../src/components/Forms/RadioButtonList/RadioButtonList.tsx","../../src/components/SecretInput/SecretInput.tsx","../../src/components/SecretTextArea/SecretTextArea.tsx","../../src/utils/file.ts","../../src/components/FileUpload/FileUpload.tsx","../../src/components/FileDropzone/FileListItem.tsx","../../src/components/FileDropzone/FileDropzone.tsx","../../src/components/DateTimePickers/TimeRangeInput.tsx","../../src/components/DateTimePickers/RelativeTimeRangePicker/utils.ts","../../src/components/DateTimePickers/RelativeTimeRangePicker/RelativeTimeRangePicker.tsx","../../src/components/Card/CardContainer.tsx","../../src/components/Card/Card.tsx","../../src/components/PluginSignatureBadge/PluginSignatureBadge.tsx","../../src/components/UsersIndicator/UserIcon.tsx","../../src/components/UsersIndicator/UsersIndicator.tsx","../../src/components/UsersIndicator/Avatar.tsx","../../src/components/Divider/Divider.tsx","../../src/components/Splitter/useSplitter.ts","../../src/components/uPlot/PlotLegend.tsx","../../src/components/uPlot/geometries/XYCanvas.tsx","../../src/components/uPlot/geometries/Marker.tsx","../../src/components/uPlot/geometries/EventsCanvas.tsx","../../src/components/uPlot/plugins/CloseButton.tsx","../../src/components/uPlot/plugins/TooltipPlugin2.tsx","../../src/components/uPlot/plugins/EventBusPlugin.tsx","../../src/components/uPlot/plugins/KeyboardPlugin.tsx","../../src/components/BrowserLabel/Label.tsx","../../src/components/PanelContainer/PanelContainer.tsx","../../src/graveyard/Graph/GraphContextMenu.tsx","../../src/graveyard/Graph/utils.ts","../../src/graveyard/Graph/GraphTooltip/MultiModeGraphTooltip.tsx","../../src/graveyard/Graph/GraphTooltip/SingleModeGraphTooltip.tsx","../../src/graveyard/Graph/GraphTooltip/GraphTooltip.tsx","../../src/graveyard/Graph/Graph.tsx","../../src/graveyard/Graph/GraphWithLegend.tsx","../../src/graveyard/Graph/GraphSeriesToggler.tsx","../../src/graveyard/GraphNG/nullInsertThreshold.ts","../../src/graveyard/GraphNG/nullToUndefThreshold.ts","../../src/graveyard/GraphNG/utils.ts","../../src/graveyard/GraphNG/GraphNG.tsx","../../src/graveyard/TimeSeries/utils.ts","../../src/graveyard/TimeSeries/TimeSeries.tsx","../../src/graveyard/GraphNG/hooks.ts","../../src/graveyard/uPlot/plugins/ZoomPlugin.tsx","../../src/graveyard/uPlot/plugins/TooltipPlugin.tsx","../../src/utils/scrollbar.ts","../../src/utils/useForceUpdate.ts","../../src/utils/nodeGraph.ts","../../src/utils/logOptions.ts","../../src/themes/getTheme.ts","../../src/themes/GlobalStyles/accessibility.ts","../../src/themes/GlobalStyles/alerting.ts","../../src/themes/GlobalStyles/card.ts","../../src/themes/GlobalStyles/code.ts","../../src/themes/GlobalStyles/dashboardGrid.ts","../../src/themes/GlobalStyles/dashdiff.ts","../../src/themes/GlobalStyles/elements.ts","../../src/themes/GlobalStyles/extra.ts","../../src/themes/GlobalStyles/filterTable.ts","../../src/themes/GlobalStyles/fonts.ts","../../src/themes/GlobalStyles/forms.ts","../../src/themes/GlobalStyles/hacks.ts","../../src/themes/GlobalStyles/jsonFormatter.ts","../../src/themes/GlobalStyles/legacySelect.ts","../../src/themes/GlobalStyles/markdownStyles.ts","../../src/themes/GlobalStyles/page.ts","../../src/themes/GlobalStyles/queryEditor.ts","../../src/themes/GlobalStyles/skeletonStyles.ts","../../src/themes/GlobalStyles/slate.ts","../../src/themes/GlobalStyles/uPlot.ts","../../src/themes/GlobalStyles/utilityClasses.ts","../../src/themes/GlobalStyles/GlobalStyles.tsx","../../src/slate-plugins/braces.ts","../../src/index.ts"],"sourcesContent":["import memoize from 'micro-memoize';\n\n/**\n * @public\n * @deprecated use useStyles hook\n *  Creates memoized version of styles creator\n * @param stylesCreator function accepting dependencies based on which styles are created\n */\nexport function stylesFactory<ResultFn extends (...newArgs: any[]) => ReturnType<ResultFn>>(stylesCreator: ResultFn) {\n  return memoize(stylesCreator);\n}\n","import hoistNonReactStatics from 'hoist-non-react-statics';\nimport memoize from 'micro-memoize';\nimport { useContext } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme, GrafanaTheme2, ThemeContext } from '@grafana/data';\n\nimport { Themeable, Themeable2 } from '../types/theme';\n\nimport { stylesFactory } from './stylesFactory';\n\ntype Omit<T, K> = Pick<T, Exclude<keyof T, K>>;\ntype Subtract<T, K> = Omit<T, keyof K>;\n\n/**\n * Mock used in tests\n */\nlet ThemeContextMock: React.Context<GrafanaTheme2> | null = null;\n\n// Used by useStyles()\nexport const memoizedStyleCreators = new WeakMap();\n\n/** @deprecated use withTheme2 */\n/** @public */\nexport const withTheme = <P extends Themeable, S extends {} = {}>(Component: React.ComponentType<P>) => {\n  const WithTheme: React.FunctionComponent<Subtract<P, Themeable>> = (props) => {\n    /**\n     * If theme context is mocked, let's use it instead of the original context\n     * This is used in tests when mocking theme using mockThemeContext function defined below\n     */\n    const ContextComponent = ThemeContextMock || ThemeContext;\n    return (\n      // @ts-ignore\n      <ContextComponent.Consumer>{(theme) => <Component {...props} theme={theme.v1} />}</ContextComponent.Consumer>\n    );\n  };\n\n  WithTheme.displayName = `WithTheme(${Component.displayName})`;\n  hoistNonReactStatics(WithTheme, Component);\n  type Hoisted = typeof WithTheme & S;\n  return WithTheme as Hoisted;\n};\n\n/** @alpha */\nexport const withTheme2 = <P extends Themeable2, S extends {} = {}>(Component: React.ComponentType<P>) => {\n  const WithTheme: React.FunctionComponent<Subtract<P, Themeable2>> = (props) => {\n    /**\n     * If theme context is mocked, let's use it instead of the original context\n     * This is used in tests when mocking theme using mockThemeContext function defined below\n     */\n    const ContextComponent = ThemeContextMock || ThemeContext;\n    return (\n      // @ts-ignore\n      <ContextComponent.Consumer>{(theme) => <Component {...props} theme={theme} />}</ContextComponent.Consumer>\n    );\n  };\n\n  WithTheme.displayName = `WithTheme(${Component.displayName})`;\n  hoistNonReactStatics(WithTheme, Component);\n  type Hoisted = typeof WithTheme & S;\n  return WithTheme as Hoisted;\n};\n\n/** @deprecated use useTheme2 */\n/** @public */\nexport function useTheme(): GrafanaTheme {\n  return useContext(ThemeContextMock || ThemeContext).v1;\n}\n\n/** @public */\nexport function useTheme2(): GrafanaTheme2 {\n  return useContext(ThemeContextMock || ThemeContext);\n}\n\n/**\n * Hook for using memoized styles with access to the theme.\n *\n * NOTE: For memoization to work, you need to ensure that the function\n * you pass in doesn't change, or only if it needs to. (i.e. declare\n * your style creator outside of a function component or use `useCallback()`.)\n * */\n/** @deprecated use useStyles2 */\n/** @public */\nexport function useStyles<T>(getStyles: (theme: GrafanaTheme) => T) {\n  const theme = useTheme();\n\n  let memoizedStyleCreator: typeof getStyles = memoizedStyleCreators.get(getStyles);\n\n  if (!memoizedStyleCreator) {\n    memoizedStyleCreator = stylesFactory(getStyles);\n    memoizedStyleCreators.set(getStyles, memoizedStyleCreator);\n  }\n\n  return memoizedStyleCreator(theme);\n}\n\n/**\n * Hook for using memoized styles with access to the theme. Pass additional\n * arguments to the getStyles function as additional arguments to this hook.\n *\n * Prefer using primitive values (boolean, number, string, etc) for\n * additional arguments for better performance\n *\n * ```\n * const getStyles = (theme, isDisabled, isOdd) => {css(...)}\n * [...]\n * const styles = useStyles2(getStyles, true, Boolean(index % 2))\n * ```\n *\n * NOTE: For memoization to work, ensure that all arguments don't change\n * across renders (or only change if they need to)\n *\n * @public\n * */\nexport function useStyles2<T extends unknown[], CSSReturnValue>(\n  getStyles: (theme: GrafanaTheme2, ...args: T) => CSSReturnValue,\n  ...additionalArguments: T\n): CSSReturnValue {\n  const theme = useTheme2();\n\n  // Grafana ui can be bundled and used in older versions of Grafana where the theme doesn't have elevated background\n  // This can be removed post G12\n  if (!theme.colors.background.elevated) {\n    theme.colors.background.elevated =\n      theme.colors.mode === 'light' ? theme.colors.background.primary : theme.colors.background.secondary;\n  }\n\n  let memoizedStyleCreator: typeof getStyles = memoizedStyleCreators.get(getStyles);\n\n  if (!memoizedStyleCreator) {\n    memoizedStyleCreator = memoize(getStyles, { maxSize: 10 }); // each getStyles function will memoize 10 different sets of props\n    memoizedStyleCreators.set(getStyles, memoizedStyleCreator);\n  }\n\n  return memoizedStyleCreator(theme, ...additionalArguments);\n}\n\n/**\n * Enables theme context mocking\n */\n/** @public */\nexport const mockThemeContext = (theme: Partial<GrafanaTheme2>) => {\n  ThemeContextMock = React.createContext(theme as GrafanaTheme2);\n\n  return () => {\n    ThemeContextMock = null;\n  };\n};\n","import { keyframes } from '@emotion/css';\n\nexport const spin = keyframes({\n  '0%': {\n    transform: 'rotate(0deg)',\n  },\n  '100%': {\n    transform: 'rotate(359deg)',\n  },\n});\n","import { IconName, IconSize, IconType } from '../../types/icon';\n\nconst alwaysMonoIcons: IconName[] = [\n  'grafana',\n  'favorite',\n  'heart-break',\n  'heart',\n  'panel-add',\n  'library-panel',\n  'circle-mono',\n];\n\nexport function getIconSubDir(name: IconName, type: IconType): string {\n  if (name?.startsWith('gf-')) {\n    return 'custom';\n  } else if (alwaysMonoIcons.includes(name)) {\n    return 'mono';\n  } else if (type === 'default') {\n    return 'unicons';\n  } else if (type === 'solid') {\n    return 'solid';\n  } else {\n    return 'mono';\n  }\n}\n\n/* Transform string with px to number and add 2 pxs as path in svg is 2px smaller */\nexport function getSvgSize(size: IconSize) {\n  switch (size) {\n    case 'xs':\n      return 12;\n    case 'sm':\n      return 14;\n    case 'md':\n      return 16;\n    case 'lg':\n      return 18;\n    case 'xl':\n      return 24;\n    case 'xxl':\n      return 36;\n    case 'xxxl':\n      return 48;\n  }\n}\n\nlet iconRoot: string | undefined;\n\nexport function getIconRoot(): string {\n  if (iconRoot) {\n    return iconRoot;\n  }\n\n  const grafanaPublicPath = typeof window !== 'undefined' && window.__grafana_public_path__;\n  if (grafanaPublicPath) {\n    iconRoot = grafanaPublicPath + 'build/img/icons/';\n  } else {\n    iconRoot = 'public/build/img/icons/';\n  }\n\n  return iconRoot;\n}\n\nexport function getIconPath(name: IconName, type: IconType = 'default'): string {\n  const iconRoot = getIconRoot();\n  const subDir = getIconSubDir(name, type);\n  return `${iconRoot}${subDir}/${name}.svg`;\n}\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\nimport SVG from 'react-inlinesvg';\n\nimport { GrafanaTheme2, isIconName } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { IconName, IconType, IconSize } from '../../types/icon';\nimport { spin } from '../../utils/keyframes';\n\nimport { getIconPath, getSvgSize } from './utils';\n\nexport interface IconProps extends Omit<React.SVGProps<SVGElement>, 'onLoad' | 'onError' | 'ref'> {\n  name: IconName;\n  size?: IconSize;\n  type?: IconType;\n  /**\n   * Give your icon a semantic meaning. The icon will be hidden from screen readers, unless this prop or an aria-label is provided.\n   */\n  title?: string;\n}\n\nconst getIconStyles = (theme: GrafanaTheme2) => {\n  return {\n    icon: css({\n      display: 'inline-block',\n      fill: 'currentColor',\n      flexShrink: 0,\n      label: 'Icon',\n      // line-height: 0; is needed for correct icon alignment in Safari\n      lineHeight: 0,\n      verticalAlign: 'middle',\n    }),\n    orange: css({\n      fill: theme.v1.palette.orange,\n    }),\n    spin: css({\n      [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n        animation: `${spin} 2s infinite linear`,\n      },\n    }),\n  };\n};\n\nexport const Icon = React.memo(\n  React.forwardRef<SVGElement, IconProps>(\n    ({ size = 'md', type = 'default', name, className, style, title = '', ...rest }, ref) => {\n      const styles = useStyles2(getIconStyles);\n\n      if (!isIconName(name)) {\n        console.warn('Icon component passed an invalid icon name', name);\n      }\n\n      // handle the deprecated 'fa fa-spinner'\n      const iconName: IconName = name === 'fa fa-spinner' ? 'spinner' : name;\n\n      const svgSize = getSvgSize(size);\n      const svgHgt = svgSize;\n      const svgWid = name.startsWith('gf-bar-align') ? 16 : name.startsWith('gf-interp') ? 30 : svgSize;\n      const svgPath = getIconPath(iconName, type);\n\n      const composedClassName = cx(\n        styles.icon,\n        className,\n        type === 'mono' ? { [styles.orange]: name === 'favorite' } : '',\n        {\n          [styles.spin]: iconName === 'spinner',\n        }\n      );\n\n      return (\n        <SVG\n          aria-hidden={\n            rest.tabIndex === undefined &&\n            !title &&\n            !rest['aria-label'] &&\n            !rest['aria-labelledby'] &&\n            !rest['aria-describedby']\n          }\n          innerRef={ref}\n          src={svgPath}\n          width={svgWid}\n          height={svgHgt}\n          title={title}\n          className={composedClassName}\n          style={style}\n          // render an empty element with the correct dimensions while loading\n          // this prevents content layout shift whilst the icon asynchronously loads\n          // which happens even if the icon is in the cache(!)\n          loader={\n            <span\n              className={cx(\n                css({\n                  width: svgWid,\n                  height: svgHgt,\n                }),\n                composedClassName\n              )}\n            />\n          }\n          {...rest}\n        />\n      );\n    }\n  )\n);\n\nIcon.displayName = 'Icon';\n","import { css } from '@emotion/css';\nimport { Placement } from '@floating-ui/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { TooltipPlacement } from '../components/Tooltip/types';\n\nexport function getPlacement(placement?: TooltipPlacement): Placement {\n  switch (placement) {\n    case 'auto':\n      return 'bottom';\n    case 'auto-start':\n      return 'bottom-start';\n    case 'auto-end':\n      return 'bottom-end';\n    default:\n      return placement ?? 'bottom';\n  }\n}\n\nexport function buildTooltipTheme(\n  theme: GrafanaTheme2,\n  tooltipBg: string,\n  toggletipBorder: string,\n  tooltipText: string,\n  tooltipPadding: { topBottom: number; rightLeft: number }\n) {\n  return {\n    arrow: css({\n      fill: tooltipBg,\n    }),\n    container: css({\n      backgroundColor: tooltipBg,\n      borderRadius: theme.shape.radius.default,\n      border: `1px solid ${toggletipBorder}`,\n      boxShadow: theme.shadows.z2,\n      color: tooltipText,\n      fontSize: theme.typography.bodySmall.fontSize,\n      padding: theme.spacing(tooltipPadding.topBottom, tooltipPadding.rightLeft),\n      [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n        transition: 'opacity 0.3s',\n      },\n      zIndex: theme.zIndex.tooltip,\n      maxWidth: '400px',\n      overflowWrap: 'break-word',\n\n      \"&[data-popper-interactive='false']\": {\n        pointerEvents: 'none',\n      },\n    }),\n    headerClose: css({\n      color: theme.colors.text.secondary,\n      position: 'absolute',\n      right: theme.spacing(1),\n      top: theme.spacing(1.5),\n      backgroundColor: 'transparent',\n      border: 0,\n    }),\n    header: css({\n      paddingTop: theme.spacing(1),\n      paddingBottom: theme.spacing(2),\n    }),\n    body: css({\n      paddingTop: theme.spacing(1),\n      paddingBottom: theme.spacing(1),\n    }),\n    footer: css({\n      paddingTop: theme.spacing(2),\n      paddingBottom: theme.spacing(1),\n    }),\n  };\n}\n","import { css } from '@emotion/css';\nimport { PropsWithChildren, useLayoutEffect, useRef } from 'react';\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\n\ninterface Props {\n  className?: string;\n  root?: HTMLElement;\n  // the zIndex of the node; defaults to theme.zIndex.portal\n  zIndex?: number;\n  forwardedRef?: React.ForwardedRef<HTMLDivElement>;\n}\n\nexport function Portal(props: PropsWithChildren<Props>) {\n  const { children, className, root, forwardedRef } = props;\n  const theme = useTheme2();\n  const node = useRef<HTMLDivElement | null>(null);\n  const portalRoot = root ?? getPortalContainer();\n\n  if (!node.current) {\n    node.current = document.createElement('div');\n    if (className) {\n      node.current.className = className;\n    }\n    node.current.style.position = 'relative';\n    node.current.style.zIndex = `${props.zIndex ?? theme.zIndex.portal}`;\n  }\n\n  useLayoutEffect(() => {\n    if (node.current) {\n      portalRoot.appendChild(node.current);\n    }\n\n    return () => {\n      if (node.current) {\n        portalRoot.removeChild(node.current);\n      }\n    };\n  }, [portalRoot]);\n\n  return ReactDOM.createPortal(<div ref={forwardedRef}>{children}</div>, node.current);\n}\n\n/** @internal */\nexport function getPortalContainer() {\n  return window.document.getElementById('grafana-portal-container') ?? document.body;\n}\n\n/** @internal */\nexport function PortalContainer() {\n  const styles = useStyles2(getStyles);\n  return (\n    <div\n      id=\"grafana-portal-container\"\n      data-testid={selectors.components.Portal.container}\n      className={styles.grafanaPortalContainer}\n    />\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    grafanaPortalContainer: css({\n      position: 'fixed',\n      top: 0,\n      width: '100%',\n      zIndex: theme.zIndex.portal,\n    }),\n  };\n};\n\nexport const RefForwardingPortal = React.forwardRef<HTMLDivElement, Props>((props, ref) => {\n  return <Portal {...props} forwardedRef={ref} />;\n});\n\nRefForwardingPortal.displayName = 'RefForwardingPortal';\n","import {\n  arrow,\n  autoUpdate,\n  flip,\n  FloatingArrow,\n  offset,\n  shift,\n  useDismiss,\n  useFloating,\n  useFocus,\n  useHover,\n  useInteractions,\n  safePolygon,\n} from '@floating-ui/react';\nimport { forwardRef, cloneElement, isValidElement, useCallback, useId, useRef, useState } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { buildTooltipTheme, getPlacement } from '../../utils/tooltipUtils';\nimport { Portal } from '../Portal/Portal';\n\nimport { PopoverContent, TooltipPlacement } from './types';\n\nexport interface TooltipProps {\n  theme?: 'info' | 'error' | 'info-alt';\n  show?: boolean;\n  placement?: TooltipPlacement;\n  content: PopoverContent;\n  children: JSX.Element;\n  /**\n   * Set to true if you want the tooltip to stay long enough so the user can move mouse over content to select text or click a link\n   */\n  interactive?: boolean;\n}\n\nexport const Tooltip = forwardRef<HTMLElement, TooltipProps>(\n  ({ children, theme, interactive, show, placement, content }, forwardedRef) => {\n    const arrowRef = useRef(null);\n    const [controlledVisible, setControlledVisible] = useState(show);\n    const isOpen = show ?? controlledVisible;\n\n    // the order of middleware is important!\n    // `arrow` should almost always be at the end\n    // see https://floating-ui.com/docs/arrow#order\n    const middleware = [\n      offset(8),\n      flip({\n        fallbackAxisSideDirection: 'end',\n        // see https://floating-ui.com/docs/flip#combining-with-shift\n        crossAxis: false,\n        boundary: document.body,\n      }),\n      shift(),\n      arrow({\n        element: arrowRef,\n      }),\n    ];\n\n    const { context, refs, floatingStyles } = useFloating({\n      open: isOpen,\n      placement: getPlacement(placement),\n      onOpenChange: setControlledVisible,\n      middleware,\n      whileElementsMounted: autoUpdate,\n    });\n    const tooltipId = useId();\n\n    const hover = useHover(context, {\n      handleClose: interactive ? safePolygon() : undefined,\n      move: false,\n    });\n    const focus = useFocus(context);\n    const dismiss = useDismiss(context);\n\n    const { getReferenceProps, getFloatingProps } = useInteractions([dismiss, hover, focus]);\n\n    const contentIsFunction = typeof content === 'function';\n\n    const styles = useStyles2(getStyles);\n    const style = styles[theme ?? 'info'];\n\n    const handleRef = useCallback(\n      (ref: HTMLElement | null) => {\n        refs.setReference(ref);\n\n        if (typeof forwardedRef === 'function') {\n          forwardedRef(ref);\n        } else if (forwardedRef) {\n          forwardedRef.current = ref;\n        }\n      },\n      [forwardedRef, refs]\n    );\n\n    // if the child has a matching aria-label, this should take precedence over the tooltip content\n    // otherwise we end up double announcing things in e.g. IconButton\n    const childHasMatchingAriaLabel = 'aria-label' in children.props && children.props['aria-label'] === content;\n\n    return (\n      <>\n        {cloneElement(children, {\n          ref: handleRef,\n          tabIndex: 0, // tooltip trigger should be keyboard focusable\n          'aria-describedby': !childHasMatchingAriaLabel && isOpen ? tooltipId : undefined,\n          ...getReferenceProps(),\n        })}\n        {isOpen && (\n          <Portal>\n            <div ref={refs.setFloating} style={floatingStyles} {...getFloatingProps()}>\n              <FloatingArrow className={style.arrow} ref={arrowRef} context={context} />\n              <div\n                data-testid={selectors.components.Tooltip.container}\n                id={tooltipId}\n                role=\"tooltip\"\n                className={style.container}\n              >\n                {typeof content === 'string' && content}\n                {isValidElement(content) && cloneElement(content)}\n                {contentIsFunction && content({})}\n              </div>\n            </div>\n          </Portal>\n        )}\n      </>\n    );\n  }\n);\n\nTooltip.displayName = 'Tooltip';\n\nexport const getStyles = (theme: GrafanaTheme2) => {\n  const info = buildTooltipTheme(\n    theme,\n    theme.components.tooltip.background,\n    theme.components.tooltip.background,\n    theme.components.tooltip.text,\n    { topBottom: 0.5, rightLeft: 1 }\n  );\n  const error = buildTooltipTheme(\n    theme,\n    theme.colors.error.main,\n    theme.colors.error.main,\n    theme.colors.error.contrastText,\n    { topBottom: 0.5, rightLeft: 1 }\n  );\n\n  return {\n    info,\n    ['info-alt']: info,\n    error,\n  };\n};\n","import classNames from 'classnames';\nimport { ReactNode } from 'react';\n\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip } from '../Tooltip/Tooltip';\nimport { PopoverContent } from '../Tooltip/types';\n\ninterface Props {\n  children: ReactNode;\n  className?: string;\n  htmlFor?: string;\n  isFocused?: boolean;\n  isInvalid?: boolean;\n  tooltip?: PopoverContent;\n  width?: number | 'auto';\n  /** Make tooltip interactive */\n  interactive?: boolean;\n}\n\nexport const FormLabel = ({\n  children,\n  isFocused,\n  isInvalid,\n  className,\n  htmlFor,\n  tooltip,\n  width,\n  interactive,\n  ...rest\n}: Props) => {\n  const classes = classNames(className, `gf-form-label width-${width ? width : '10'}`, {\n    'gf-form-label--is-focused': isFocused,\n    'gf-form-label--is-invalid': isInvalid,\n  });\n\n  return (\n    <label className={classes} {...rest} htmlFor={htmlFor}>\n      {children}\n      {tooltip && (\n        <Tooltip placement=\"top\" content={tooltip} theme={'info'} interactive={interactive}>\n          <Icon name=\"info-circle\" size=\"sm\" style={{ marginLeft: '10px' }} />\n        </Tooltip>\n      )}\n    </label>\n  );\n};\n\nexport const InlineFormLabel = FormLabel;\n","import { css, cx } from '@emotion/css';\nimport { InputHTMLAttributes, useId } from 'react';\nimport * as React from 'react';\n\nimport { InlineFormLabel } from '../FormLabel/FormLabel';\nimport { Field } from '../Forms/Field';\nimport { InlineField } from '../Forms/InlineField';\nimport { PopoverContent } from '../Tooltip/types';\n\nexport interface Props extends InputHTMLAttributes<HTMLInputElement> {\n  label: string;\n  tooltip?: PopoverContent;\n  labelWidth?: number;\n  // If null no width will be specified not even default one\n  inputWidth?: number | null;\n  inputEl?: React.ReactNode;\n  /** Make tooltip interactive */\n  interactive?: boolean;\n}\n\n/**\n * Default form field including label used in Grafana UI. Default input element is simple <input />. You can also pass\n * custom inputEl if required in which case inputWidth and inputProps are ignored.\n *\n * For inline fields, use {@link InlineField}, {@link https://developers.grafana.com/ui/latest/index.html?path=/story/forms-inlinefield--basic See Storybook}.\n * @deprecated Please use the {@link Field} component, {@link https://developers.grafana.com/ui/latest/index.html?path=/story/forms-field--simple See Storybook}.\n */\nexport const FormField = ({\n  label,\n  tooltip,\n  labelWidth = 6,\n  inputWidth = 12,\n  inputEl,\n  className,\n  interactive,\n  ...inputProps\n}: Props) => {\n  const styles = getStyles();\n  const id = useId();\n  return (\n    <div className={cx(styles.formField, className)}>\n      <InlineFormLabel htmlFor={id} width={labelWidth} tooltip={tooltip} interactive={interactive}>\n        {label}\n      </InlineFormLabel>\n      {inputEl || (\n        <input\n          id={id}\n          type=\"text\"\n          className={`gf-form-input ${inputWidth ? `width-${inputWidth}` : ''}`}\n          {...inputProps}\n          disabled={inputProps.disabled}\n        />\n      )}\n    </div>\n  );\n};\n\nFormField.displayName = 'FormField';\n\nconst getStyles = () => {\n  return {\n    formField: css({\n      display: 'flex',\n      flexDirection: 'row',\n      alignItems: 'flex-start',\n      textAlign: 'left',\n      position: 'relative',\n    }),\n  };\n};\n","import { ValidationRule, ValidationEvents } from '../types/input';\n\nexport enum EventsWithValidation {\n  onBlur = 'onBlur',\n  onFocus = 'onFocus',\n  onChange = 'onChange',\n}\n\nexport const validate = (value: string, validationRules: ValidationRule[]) => {\n  const errors = validationRules.reduce<string[]>((acc, currRule) => {\n    if (!currRule.rule(value)) {\n      return acc.concat(currRule.errorMessage);\n    }\n    return acc;\n  }, []);\n  return errors.length > 0 ? errors : null;\n};\n\nexport const hasValidationEvent = (event: EventsWithValidation, validationEvents: ValidationEvents | undefined) => {\n  return validationEvents && validationEvents[event];\n};\n\nexport const regexValidation = (pattern: string | RegExp, errorMessage?: string): ValidationRule => {\n  return {\n    rule: (valueToValidate: string) => {\n      return !!valueToValidate.match(pattern);\n    },\n    errorMessage: errorMessage || 'Value is not valid',\n  };\n};\n","import classNames from 'classnames';\nimport { PureComponent, ChangeEvent } from 'react';\nimport * as React from 'react';\n\nimport { ValidationEvents, ValidationRule } from '../../../../types/input';\nimport { validate, EventsWithValidation, hasValidationEvent } from '../../../../utils/validate';\n\n/** @deprecated Please use the `Input` component, which does not require this enum. */\nexport enum LegacyInputStatus {\n  Invalid = 'invalid',\n  Valid = 'valid',\n}\n\nexport interface Props extends React.HTMLProps<HTMLInputElement> {\n  validationEvents?: ValidationEvents;\n  hideErrorMessage?: boolean;\n  inputRef?: React.LegacyRef<HTMLInputElement>;\n\n  // Override event props and append status as argument\n  onBlur?: (event: React.FocusEvent<HTMLInputElement>, status?: LegacyInputStatus) => void;\n  onFocus?: (event: React.FocusEvent<HTMLInputElement>, status?: LegacyInputStatus) => void;\n  onChange?: (event: React.ChangeEvent<HTMLInputElement>, status?: LegacyInputStatus) => void;\n}\n\ninterface State {\n  error: string | null;\n}\n\n/** @deprecated Please use the `Input` component. {@link https://developers.grafana.com/ui/latest/index.html?path=/story/forms-input--simple See Storybook for example.} */\nexport class Input extends PureComponent<Props, State> {\n  static defaultProps = {\n    className: '',\n  };\n\n  state: State = {\n    error: null,\n  };\n\n  get status() {\n    return this.state.error ? LegacyInputStatus.Invalid : LegacyInputStatus.Valid;\n  }\n\n  get isInvalid() {\n    return this.status === LegacyInputStatus.Invalid;\n  }\n\n  validatorAsync = (validationRules: ValidationRule[]) => {\n    return (evt: ChangeEvent<HTMLInputElement>) => {\n      const errors = validate(evt.target.value, validationRules);\n      this.setState((prevState) => {\n        return { ...prevState, error: errors ? errors[0] : null };\n      });\n    };\n  };\n\n  populateEventPropsWithStatus = (restProps: any, validationEvents: ValidationEvents | undefined) => {\n    const inputElementProps = { ...restProps };\n    if (!validationEvents) {\n      return inputElementProps;\n    }\n    Object.keys(EventsWithValidation).forEach((eventName) => {\n      if (hasValidationEvent(eventName as EventsWithValidation, validationEvents) || restProps[eventName]) {\n        inputElementProps[eventName] = async (evt: ChangeEvent<HTMLInputElement>) => {\n          evt.persist(); // Needed for async. https://reactjs.org/docs/events.html#event-pooling\n          if (hasValidationEvent(eventName as EventsWithValidation, validationEvents)) {\n            await this.validatorAsync(validationEvents[eventName]).apply(this, [evt]);\n          }\n          if (restProps[eventName]) {\n            restProps[eventName].apply(null, [evt, this.status]);\n          }\n        };\n      }\n    });\n    return inputElementProps;\n  };\n\n  render() {\n    const { validationEvents, className, hideErrorMessage, inputRef, ...restProps } = this.props;\n    const { error } = this.state;\n    const inputClassName = classNames('gf-form-input', { invalid: this.isInvalid }, className);\n    const inputElementProps = this.populateEventPropsWithStatus(restProps, validationEvents);\n\n    return (\n      <div style={{ flexGrow: 1 }}>\n        <input {...inputElementProps} ref={inputRef} className={inputClassName} />\n        {error && !hideErrorMessage && <span>{error}</span>}\n      </div>\n    );\n  }\n}\n","import { components, IndicatorsContainerProps } from 'react-select';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport { Icon } from '../../../Icon/Icon';\nimport { Select } from '../../../Select/Select';\n\n/** @deprecated Please use the {@link Select} component*/\nexport const IndicatorsContainer = <T,>(props: IndicatorsContainerProps<SelectableValue<T>>) => {\n  const isOpen = props.selectProps.menuIsOpen;\n  return (\n    <components.IndicatorsContainer {...props}>\n      <Icon name={isOpen ? 'angle-up' : 'angle-down'} style={{ marginTop: '7px' }} />\n    </components.IndicatorsContainer>\n  );\n};\n\nexport default IndicatorsContainer;\n","import { components, NoticeProps, GroupBase } from 'react-select';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport { Select } from '../../../Select/Select';\n\nexport type Props<T> = NoticeProps<SelectableValue<T>, boolean, GroupBase<SelectableValue<T>>>;\n\n/** @deprecated Please use the {@link Select} component*/\nexport const NoOptionsMessage = <T extends unknown>(props: Props<T>) => {\n  const { children } = props;\n  return (\n    <components.NoOptionsMessage {...props}>\n      <div className=\"gf-form-select-box__desc-option\">\n        <div className=\"gf-form-select-box__desc-option__body\">{children}</div>\n      </div>\n    </components.NoOptionsMessage>\n  );\n};\n\nexport default NoOptionsMessage;\n","import { CSSInterpolation } from '@emotion/serialize';\n\nimport { GrafanaTheme2, ThemeBreakpointsKey } from '@grafana/data';\n\n/**\n * Type that represents a prop that can be responsive.\n *\n * @example To turn a prop like `margin: number` responsive, change it to `margin: ResponsiveProp<number>`.\n */\nexport type ResponsiveProp<T> = T | Responsive<T>;\n\ntype Responsive<T> = {\n  xs: T;\n  sm?: T;\n  md?: T;\n  lg?: T;\n  xl?: T;\n  xxl?: T;\n};\n\nfunction breakpointCSS<T>(\n  theme: GrafanaTheme2,\n  prop: Responsive<T>,\n  getCSS: (val: T) => CSSInterpolation,\n  key: ThemeBreakpointsKey\n) {\n  const value = prop[key];\n  if (value !== undefined && value !== null) {\n    return {\n      [theme.breakpoints.up(key)]: getCSS(value),\n    };\n  }\n  return;\n}\n/**\n * Function that converts a ResponsiveProp object into CSS\n *\n * @param theme Grafana theme object\n * @param prop Prop as it is passed to the component\n * @param getCSS Function that returns the css block for the prop\n * @returns The CSS block repeated for each breakpoint\n *\n * @example To get the responsive css equivalent of `margin && { margin }`, you can write `getResponsiveStyle(theme, margin, (val) => { margin: val })`\n */\nexport function getResponsiveStyle<T>(\n  theme: GrafanaTheme2,\n  prop: ResponsiveProp<T> | undefined,\n  getCSS: (val: T) => CSSInterpolation\n): CSSInterpolation {\n  if (prop === undefined || prop === null) {\n    return null;\n  }\n  if (typeof prop !== 'object' || !('xs' in prop)) {\n    return getCSS(prop);\n  }\n\n  return [\n    breakpointCSS(theme, prop, getCSS, 'xs'),\n    breakpointCSS(theme, prop, getCSS, 'sm'),\n    breakpointCSS(theme, prop, getCSS, 'md'),\n    breakpointCSS(theme, prop, getCSS, 'lg'),\n    breakpointCSS(theme, prop, getCSS, 'xl'),\n    breakpointCSS(theme, prop, getCSS, 'xxl'),\n  ];\n}\n","import { css } from '@emotion/css';\nimport { Property } from 'csstype';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { getResponsiveStyle, ResponsiveProp } from './responsiveness';\n\nexport interface SizeProps {\n  minWidth?: ResponsiveProp<Property.MinWidth<number>>;\n  maxWidth?: ResponsiveProp<Property.MaxWidth<number>>;\n  width?: ResponsiveProp<Property.Width<number>>;\n\n  minHeight?: ResponsiveProp<Property.MinHeight<number>>;\n  maxHeight?: ResponsiveProp<Property.MaxHeight<number>>;\n  height?: ResponsiveProp<Property.Height<number>>;\n}\nexport const getSizeStyles = (\n  theme: GrafanaTheme2,\n  width: SizeProps['width'],\n  minWidth: SizeProps['minWidth'],\n  maxWidth: SizeProps['maxWidth'],\n  height: SizeProps['height'],\n  minHeight: SizeProps['minHeight'],\n  maxHeight: SizeProps['maxHeight']\n) => {\n  return css([\n    getResponsiveStyle(theme, width, (val) => ({\n      width: theme.spacing(val),\n    })),\n    getResponsiveStyle(theme, minWidth, (val) => ({\n      minWidth: theme.spacing(val),\n    })),\n    getResponsiveStyle(theme, maxWidth, (val) => ({\n      maxWidth: theme.spacing(val),\n    })),\n    getResponsiveStyle(theme, height, (val) => ({\n      height: theme.spacing(val),\n    })),\n    getResponsiveStyle(theme, minHeight, (val) => ({\n      minHeight: theme.spacing(val),\n    })),\n    getResponsiveStyle(theme, maxHeight, (val) => ({\n      maxHeight: theme.spacing(val),\n    })),\n  ]);\n};\n","import { css, cx } from '@emotion/css';\nimport { Property } from 'csstype';\nimport { ElementType, forwardRef, PropsWithChildren } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, ThemeSpacingTokens, ThemeShape, ThemeShadows } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { AlignItems, Direction, FlexProps, JustifyContent } from '../types';\nimport { ResponsiveProp, getResponsiveStyle } from '../utils/responsiveness';\nimport { getSizeStyles, SizeProps } from '../utils/styles';\n\ntype Display = 'flex' | 'block' | 'inline' | 'inline-block' | 'none';\nexport type BackgroundColor = keyof GrafanaTheme2['colors']['background'] | 'error' | 'success' | 'warning' | 'info';\nexport type BorderStyle = 'solid' | 'dashed';\nexport type BorderColor = keyof GrafanaTheme2['colors']['border'] | 'error' | 'success' | 'warning' | 'info';\nexport type BorderRadius = keyof ThemeShape['radius'];\nexport type BoxShadow = keyof ThemeShadows;\n\nexport interface BoxProps extends FlexProps, SizeProps, Omit<React.HTMLAttributes<HTMLElement>, 'className' | 'style'> {\n  // Margin props\n  /** Sets the property `margin` */\n  margin?: ResponsiveProp<ThemeSpacingTokens>;\n  /** Sets the properties `margin-top` and `margin-bottom`. Higher priority than margin. */\n  marginX?: ResponsiveProp<ThemeSpacingTokens>;\n  /** Sets the properties `margin-left` and `margin-right`. Higher priority than margin. */\n  marginY?: ResponsiveProp<ThemeSpacingTokens>;\n  /** Sets the property `margin-top`. Higher priority than margin and marginY. */\n  marginTop?: ResponsiveProp<ThemeSpacingTokens>;\n  /** Sets the property `margin-bottom`. Higher priority than margin and marginXY */\n  marginBottom?: ResponsiveProp<ThemeSpacingTokens>;\n  /** Sets the property `margin-left`. Higher priority than margin and marginX. */\n  marginLeft?: ResponsiveProp<ThemeSpacingTokens>;\n  /** Sets the property `margin-right`. Higher priority than margin and marginX. */\n  marginRight?: ResponsiveProp<ThemeSpacingTokens>;\n\n  // Padding props\n  /** Sets the property `padding` */\n  padding?: ResponsiveProp<ThemeSpacingTokens>;\n  /** Sets the properties `padding-top` and `padding-bottom`. Higher priority than padding. */\n  paddingX?: ResponsiveProp<ThemeSpacingTokens>;\n  /** Sets the properties `padding-left` and `padding-right`. Higher priority than padding. */\n  paddingY?: ResponsiveProp<ThemeSpacingTokens>;\n  /** Sets the property `padding-top`. Higher priority than padding and paddingY. */\n  paddingTop?: ResponsiveProp<ThemeSpacingTokens>;\n  /** Sets the property `padding-bottom`. Higher priority than padding and paddingY. */\n  paddingBottom?: ResponsiveProp<ThemeSpacingTokens>;\n  /** Sets the property `padding-left`. Higher priority than padding and paddingX. */\n  paddingLeft?: ResponsiveProp<ThemeSpacingTokens>;\n  /** Sets the property `padding-right`. Higher priority than padding and paddingX. */\n  paddingRight?: ResponsiveProp<ThemeSpacingTokens>;\n\n  // Border Props\n  borderStyle?: ResponsiveProp<BorderStyle>;\n  borderColor?: ResponsiveProp<BorderColor>;\n  borderRadius?: ResponsiveProp<BorderRadius>;\n\n  // Flex Props\n  alignItems?: ResponsiveProp<AlignItems>;\n  direction?: ResponsiveProp<Direction>;\n  justifyContent?: ResponsiveProp<JustifyContent>;\n  gap?: ResponsiveProp<ThemeSpacingTokens>;\n\n  // Other props\n  backgroundColor?: ResponsiveProp<BackgroundColor>;\n  display?: ResponsiveProp<Display>;\n  boxShadow?: ResponsiveProp<BoxShadow>;\n  /** Sets the HTML element that will be rendered as a Box. Defaults to 'div' */\n  element?: ElementType;\n  position?: ResponsiveProp<Property.Position>;\n}\n\nexport const Box = forwardRef<HTMLElement, PropsWithChildren<BoxProps>>((props, ref) => {\n  const {\n    children,\n    margin,\n    marginX,\n    marginY,\n    marginTop,\n    marginBottom,\n    marginLeft,\n    marginRight,\n    padding,\n    paddingX,\n    paddingY,\n    paddingTop,\n    paddingBottom,\n    paddingLeft,\n    paddingRight,\n    display,\n    backgroundColor,\n    grow,\n    shrink,\n    basis,\n    flex,\n    borderColor,\n    borderStyle,\n    borderRadius,\n    direction,\n    justifyContent,\n    alignItems,\n    boxShadow,\n    element,\n    gap,\n    width,\n    minWidth,\n    maxWidth,\n    height,\n    minHeight,\n    maxHeight,\n    position,\n    ...rest\n  } = props;\n  const styles = useStyles2(\n    getStyles,\n    margin,\n    marginX,\n    marginY,\n    marginTop,\n    marginBottom,\n    marginLeft,\n    marginRight,\n    padding,\n    paddingX,\n    paddingY,\n    paddingTop,\n    paddingBottom,\n    paddingLeft,\n    paddingRight,\n    display,\n    backgroundColor,\n    grow,\n    shrink,\n    basis,\n    flex,\n    borderColor,\n    borderStyle,\n    borderRadius,\n    direction,\n    justifyContent,\n    alignItems,\n    boxShadow,\n    gap,\n    position\n  );\n  const sizeStyles = useStyles2(getSizeStyles, width, minWidth, maxWidth, height, minHeight, maxHeight);\n  const Element = element ?? 'div';\n\n  return (\n    <Element ref={ref} className={cx(styles.root, sizeStyles)} {...rest}>\n      {children}\n    </Element>\n  );\n});\n\nBox.displayName = 'Box';\n\nconst customBorderColor = (color: BorderColor, theme: GrafanaTheme2) => {\n  switch (color) {\n    case 'error':\n    case 'success':\n    case 'info':\n    case 'warning':\n      return theme.colors[color].borderTransparent;\n    default:\n      return color ? theme.colors.border[color] : undefined;\n  }\n};\n\nconst customBackgroundColor = (color: BackgroundColor, theme: GrafanaTheme2) => {\n  switch (color) {\n    case 'error':\n    case 'success':\n    case 'info':\n    case 'warning':\n      return theme.colors[color].transparent;\n    default:\n      return color ? theme.colors.background[color] : undefined;\n  }\n};\n\nconst getStyles = (\n  theme: GrafanaTheme2,\n  margin: BoxProps['margin'],\n  marginX: BoxProps['marginX'],\n  marginY: BoxProps['marginY'],\n  marginTop: BoxProps['marginTop'],\n  marginBottom: BoxProps['marginBottom'],\n  marginLeft: BoxProps['marginLeft'],\n  marginRight: BoxProps['marginRight'],\n  padding: BoxProps['padding'],\n  paddingX: BoxProps['paddingX'],\n  paddingY: BoxProps['paddingY'],\n  paddingTop: BoxProps['paddingTop'],\n  paddingBottom: BoxProps['paddingBottom'],\n  paddingLeft: BoxProps['paddingLeft'],\n  paddingRight: BoxProps['paddingRight'],\n  display: BoxProps['display'],\n  backgroundColor: BoxProps['backgroundColor'],\n  grow: BoxProps['grow'],\n  shrink: BoxProps['shrink'],\n  basis: BoxProps['basis'],\n  flex: BoxProps['flex'],\n  borderColor: BoxProps['borderColor'],\n  borderStyle: BoxProps['borderStyle'],\n  borderRadius: BoxProps['borderRadius'],\n  direction: BoxProps['direction'],\n  justifyContent: BoxProps['justifyContent'],\n  alignItems: BoxProps['alignItems'],\n  boxShadow: BoxProps['boxShadow'],\n  gap: BoxProps['gap'],\n  position: BoxProps['position']\n) => {\n  return {\n    root: css([\n      getResponsiveStyle(theme, margin, (val) => ({\n        margin: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, marginX, (val) => ({\n        marginLeft: theme.spacing(val),\n        marginRight: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, marginY, (val) => ({\n        marginTop: theme.spacing(val),\n        marginBottom: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, marginTop, (val) => ({\n        marginTop: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, marginBottom, (val) => ({\n        marginBottom: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, marginLeft, (val) => ({\n        marginLeft: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, marginRight, (val) => ({\n        marginRight: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, padding, (val) => ({\n        padding: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, paddingX, (val) => ({\n        paddingLeft: theme.spacing(val),\n        paddingRight: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, paddingY, (val) => ({\n        paddingTop: theme.spacing(val),\n        paddingBottom: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, paddingTop, (val) => ({\n        paddingTop: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, paddingBottom, (val) => ({\n        paddingBottom: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, paddingLeft, (val) => ({\n        paddingLeft: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, paddingRight, (val) => ({\n        paddingRight: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, display, (val) => ({\n        display: val,\n      })),\n      getResponsiveStyle(theme, backgroundColor, (val) => ({\n        backgroundColor: customBackgroundColor(val, theme),\n      })),\n      getResponsiveStyle(theme, direction, (val) => ({\n        flexDirection: val,\n      })),\n      getResponsiveStyle(theme, grow, (val) => ({\n        flexGrow: val,\n      })),\n      getResponsiveStyle(theme, shrink, (val) => ({\n        flexShrink: val,\n      })),\n      getResponsiveStyle(theme, basis, (val) => ({\n        flexBasis: val,\n      })),\n      getResponsiveStyle(theme, flex, (val) => ({\n        flex: val,\n      })),\n      getResponsiveStyle(theme, borderStyle, (val) => ({\n        borderStyle: val,\n      })),\n      getResponsiveStyle(theme, borderColor, (val) => ({\n        borderColor: customBorderColor(val, theme),\n      })),\n      (borderStyle || borderColor) && {\n        borderWidth: '1px',\n      },\n      getResponsiveStyle(theme, justifyContent, (val) => ({\n        justifyContent: val,\n      })),\n      getResponsiveStyle(theme, alignItems, (val) => ({\n        alignItems: val,\n      })),\n      getResponsiveStyle(theme, borderRadius, (val) => ({\n        borderRadius: theme.shape.radius[val],\n      })),\n      getResponsiveStyle(theme, boxShadow, (val) => ({\n        boxShadow: theme.shadows[val],\n      })),\n      getResponsiveStyle(theme, gap, (val) => ({\n        gap: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, position, (val) => ({\n        position: val,\n      })),\n    ]),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { useEffect, useRef, useState } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport const ScrollIndicators = ({ children }: React.PropsWithChildren<{}>) => {\n  const [showScrollTopIndicator, setShowTopScrollIndicator] = useState(false);\n  const [showScrollBottomIndicator, setShowBottomScrollIndicator] = useState(false);\n  const scrollTopMarker = useRef<HTMLDivElement>(null);\n  const scrollBottomMarker = useRef<HTMLDivElement>(null);\n  const styles = useStyles2(getStyles);\n\n  // Here we observe the top and bottom markers to determine if we should show the scroll indicators\n  useEffect(() => {\n    const intersectionObserver = new IntersectionObserver((entries) => {\n      entries.forEach((entry) => {\n        if (entry.target === scrollTopMarker.current) {\n          setShowTopScrollIndicator(!entry.isIntersecting);\n        } else if (entry.target === scrollBottomMarker.current) {\n          setShowBottomScrollIndicator(!entry.isIntersecting);\n        }\n      });\n    });\n    [scrollTopMarker, scrollBottomMarker].forEach((ref) => {\n      if (ref.current) {\n        intersectionObserver.observe(ref.current);\n      }\n    });\n    return () => intersectionObserver.disconnect();\n  }, []);\n\n  return (\n    <>\n      <div\n        className={cx(styles.scrollIndicator, styles.scrollTopIndicator, {\n          [styles.scrollIndicatorVisible]: showScrollTopIndicator,\n        })}\n        role=\"presentation\"\n      />\n      <div className={styles.scrollContent}>\n        <div ref={scrollTopMarker} className={cx(styles.scrollMarker, styles.scrollTopMarker)} />\n        {children}\n        <div ref={scrollBottomMarker} className={cx(styles.scrollMarker, styles.scrollBottomMarker)} />\n      </div>\n      <div\n        className={cx(styles.scrollIndicator, styles.scrollBottomIndicator, {\n          [styles.scrollIndicatorVisible]: showScrollBottomIndicator,\n        })}\n        role=\"presentation\"\n      />\n    </>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  // we specifically don't want a theme color here\n  // this gradient is more like a shadow\n  const scrollGradientColor = `rgba(0, 0, 0, ${theme.isDark ? 0.25 : 0.08})`;\n  return {\n    scrollContent: css({\n      display: 'flex',\n      flexDirection: 'column',\n      flexGrow: 1,\n      position: 'relative',\n    }),\n    scrollIndicator: css({\n      height: `max(5%, ${theme.spacing(3)})`,\n      left: 0,\n      opacity: 0,\n      pointerEvents: 'none',\n      position: 'absolute',\n      right: 0,\n      [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n        transition: theme.transitions.create('opacity'),\n      },\n      zIndex: 1,\n    }),\n    scrollTopIndicator: css({\n      background: `linear-gradient(0deg, transparent, ${scrollGradientColor})`,\n      top: 0,\n    }),\n    scrollBottomIndicator: css({\n      background: `linear-gradient(180deg, transparent, ${scrollGradientColor})`,\n      bottom: 0,\n    }),\n    scrollIndicatorVisible: css({\n      opacity: 1,\n    }),\n    scrollMarker: css({\n      height: '1px',\n      left: 0,\n      pointerEvents: 'none',\n      position: 'absolute',\n      right: 0,\n    }),\n    scrollTopMarker: css({\n      top: 0,\n    }),\n    scrollBottomMarker: css({\n      bottom: 0,\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport { Property } from 'csstype';\nimport { forwardRef, PropsWithChildren, UIEventHandler } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Box, BoxProps } from '../Layout/Box/Box';\n\nimport { ScrollIndicators } from './ScrollIndicators';\n\ninterface Props extends Omit<BoxProps, 'display' | 'direction' | 'element' | 'flex' | 'position'> {\n  showScrollIndicators?: boolean;\n  onScroll?: UIEventHandler<HTMLDivElement>;\n  overflowX?: Property.OverflowX;\n  overflowY?: Property.OverflowY;\n  scrollbarWidth?: Property.ScrollbarWidth;\n}\n\nexport const ScrollContainer = forwardRef<HTMLDivElement, PropsWithChildren<Props>>(\n  (\n    {\n      children,\n      showScrollIndicators = false,\n      onScroll,\n      overflowX = 'auto',\n      overflowY = 'auto',\n      scrollbarWidth = 'thin',\n      ...rest\n    },\n    ref\n  ) => {\n    const styles = useStyles2(getStyles, scrollbarWidth, overflowY, overflowX);\n    const defaults: Partial<BoxProps> = {\n      maxHeight: '100%',\n      minHeight: 0,\n      minWidth: 0,\n    };\n    const boxProps = { ...defaults, ...rest };\n\n    return (\n      <Box {...boxProps} display=\"flex\" direction=\"column\" flex={1} position=\"relative\">\n        {/* scrollable containers need tabindex set so keyboard users can focus them to scroll */}\n        {/* see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/a7d1a12a6198d546c4a06477b385b4fde03b762e/docs/rules/no-noninteractive-tabindex.md#:~:text=If%20you%20know,scroll%20containers%22. */}\n        {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n        <div tabIndex={0} onScroll={onScroll} className={styles.scroller} ref={ref}>\n          {showScrollIndicators ? <ScrollIndicators>{children}</ScrollIndicators> : children}\n        </div>\n      </Box>\n    );\n  }\n);\nScrollContainer.displayName = 'ScrollContainer';\n\nconst getStyles = (\n  theme: GrafanaTheme2,\n  scrollbarWidth: Props['scrollbarWidth'],\n  overflowY: Props['overflowY'],\n  overflowX: Props['overflowX']\n) => ({\n  scroller: css({\n    display: 'flex',\n    flex: 1,\n    flexDirection: 'column',\n    overflowX,\n    overflowY,\n    scrollbarWidth,\n  }),\n});\n","import { useEffect, useRef, useState } from 'react';\n\ntype DelayOptions = {\n  // Minimal amount of time the switch will be on.\n  duration?: number;\n  // Delay after which switch will turn on.\n  delay?: number;\n};\n\n/**\n * Hook that delays changing of boolean switch to prevent too much time spent in \"on\" state. It is kind of a throttle\n * but you can specify different time for on and off throttling so this only allows a boolean values and also prefers\n * to stay \"off\" so turning \"on\" is always delayed while turning \"off\" is throttled.\n *\n * This is useful for showing loading elements to prevent it flashing too much in case of quick loading time or\n * prevent it flash if loaded state comes right after switch to loading.\n */\nexport function useDelayedSwitch(value: boolean, options: DelayOptions = {}): boolean {\n  const { duration = 250, delay = 250 } = options;\n\n  const [delayedValue, setDelayedValue] = useState(value);\n  const onStartTime = useRef<Date | undefined>();\n\n  useEffect(() => {\n    let timeout: ReturnType<typeof setTimeout> | undefined;\n    if (value) {\n      // If toggling to \"on\" state we always setTimeout no matter how long we have been \"off\".\n      timeout = setTimeout(() => {\n        onStartTime.current = new Date();\n        setDelayedValue(value);\n      }, delay);\n    } else {\n      // If toggling to \"off\" state we check how much time we were already \"on\".\n      const timeSpent = onStartTime.current ? Date.now() - onStartTime.current.valueOf() : 0;\n      const turnOff = () => {\n        onStartTime.current = undefined;\n        setDelayedValue(value);\n      };\n      if (timeSpent >= duration) {\n        // We already spent enough time \"on\" so change right away.\n        turnOff();\n      } else {\n        timeout = setTimeout(turnOff, duration - timeSpent);\n      }\n    }\n    return () => {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = undefined;\n      }\n    };\n  }, [value, duration, delay]);\n\n  return delayedValue;\n}\n","import { availableIconsIndex, Field, FieldType, IconName } from '@grafana/data';\n\nimport { ComponentSize } from './size';\n\n// Exported from here for backwards compatibility\nexport type { IconName } from '@grafana/data';\nexport { toIconName } from '@grafana/data';\n\nexport type IconType = 'mono' | 'default' | 'solid';\nexport type IconSize = ComponentSize | 'xl' | 'xxl' | 'xxxl';\nexport const isIconSize = (value: string): value is IconSize => {\n  return ['xs', 'sm', 'md', 'lg', 'xl', 'xxl', 'xxxl'].includes(value);\n};\n\n// function remains for backwards compatibility\nexport const getAvailableIcons = () => Object.keys(availableIconsIndex);\n\n/**\n * Get the icon for a given field\n */\nexport function getFieldTypeIcon(field?: Field): IconName {\n  return getFieldTypeIconName(field?.type);\n}\n\n/** Get an icon for a given field type  */\nexport function getFieldTypeIconName(type?: FieldType): IconName {\n  if (type) {\n    switch (type) {\n      case FieldType.time:\n        return 'clock-nine';\n      case FieldType.string:\n        return 'font';\n      case FieldType.number:\n        return 'calculator-alt';\n      case FieldType.boolean:\n        return 'toggle-on';\n      case FieldType.trace:\n        return 'info-circle';\n      case FieldType.enum:\n        return 'list-ol';\n      case FieldType.geo:\n        return 'map-marker';\n      case FieldType.other:\n        return 'brackets-curly';\n    }\n  }\n  return 'question-circle';\n}\n","import { cx, css } from '@emotion/css';\nimport * as React from 'react';\nimport SVG from 'react-inlinesvg';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { IconSize, isIconSize } from '../../types/icon';\nimport { spin } from '../../utils/keyframes';\nimport { Icon } from '../Icon/Icon';\nimport { getIconRoot, getIconSubDir } from '../Icon/utils';\n\nexport interface Props {\n  className?: string;\n  style?: React.CSSProperties;\n  iconClassName?: string;\n  inline?: boolean;\n  size?: IconSize;\n}\n\n/**\n * @deprecated\n * use a predefined size, e.g. 'md' or 'lg' instead\n */\ninterface PropsWithDeprecatedSize extends Omit<Props, 'size'> {\n  size?: number | string;\n}\n\n/**\n * @public\n */\nexport const Spinner = ({\n  className,\n  inline = false,\n  iconClassName,\n  style,\n  size = 'md',\n}: Props | PropsWithDeprecatedSize) => {\n  const styles = useStyles2(getStyles);\n\n  const deprecatedStyles = useStyles2(getDeprecatedStyles, size);\n  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  const iconName = prefersReducedMotion ? 'hourglass' : 'spinner';\n\n  // this entire if statement is handling the deprecated size prop\n  // TODO remove once we fully remove the deprecated type\n  if (typeof size !== 'string' || !isIconSize(size)) {\n    const iconRoot = getIconRoot();\n    const subDir = getIconSubDir(iconName, 'default');\n    const svgPath = `${iconRoot}${subDir}/${iconName}.svg`;\n    return (\n      <div\n        data-testid=\"Spinner\"\n        style={style}\n        className={cx(\n          {\n            [styles.inline]: inline,\n          },\n          deprecatedStyles.wrapper,\n          className\n        )}\n      >\n        <SVG\n          src={svgPath}\n          width={size}\n          height={size}\n          className={cx(styles.spin, deprecatedStyles.icon, className)}\n          style={style}\n        />\n      </div>\n    );\n  }\n\n  return (\n    <div\n      data-testid=\"Spinner\"\n      style={style}\n      className={cx(\n        {\n          [styles.inline]: inline,\n        },\n        className\n      )}\n    >\n      <Icon\n        className={cx(styles.spin, iconClassName)}\n        name={iconName}\n        size={size}\n        aria-label={t('grafana-ui.spinner.aria-label', 'Loading')}\n      />\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  inline: css({\n    display: 'inline-block',\n    lineHeight: 0,\n  }),\n  spin: css({\n    [theme.transitions.handleMotion('no-preference')]: {\n      animation: `${spin} 2s infinite linear`,\n    },\n  }),\n});\n\n// TODO remove once we fully remove the deprecated type\nconst getDeprecatedStyles = (theme: GrafanaTheme2, size: number | string) => ({\n  wrapper: css({\n    fontSize: typeof size === 'string' ? size : `${size}px`,\n  }),\n  icon: css({\n    display: 'inline-block',\n    fill: 'currentColor',\n    flexShrink: 0,\n    label: 'Icon',\n    // line-height: 0; is needed for correct icon alignment in Safari\n    lineHeight: 0,\n    verticalAlign: 'middle',\n  }),\n});\n","import { css } from '@emotion/css';\nimport { useRef } from 'react';\nimport * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\ntype Props = {\n  children: React.ReactElement;\n  visible: boolean;\n  duration?: number;\n};\n\nexport function FadeTransition(props: Props) {\n  const { visible, children, duration = 250 } = props;\n  const styles = useStyles2(getStyles, duration);\n  const transitionRef = useRef(null);\n\n  return (\n    <CSSTransition\n      in={visible}\n      mountOnEnter={true}\n      unmountOnExit={true}\n      timeout={duration}\n      classNames={styles}\n      nodeRef={transitionRef}\n    >\n      {React.cloneElement(children, { ref: transitionRef })}\n    </CSSTransition>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2, duration: number) => ({\n  enter: css({\n    label: 'enter',\n    opacity: 0,\n  }),\n  enterActive: css({\n    label: 'enterActive',\n    opacity: 1,\n    [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n      transition: `opacity ${duration}ms ease-out`,\n    },\n  }),\n  exit: css({\n    label: 'exit',\n    opacity: 1,\n  }),\n  exitActive: css({\n    label: 'exitActive',\n    opacity: 0,\n    [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n      transition: `opacity ${duration}ms ease-out`,\n    },\n  }),\n});\n","import { css } from '@emotion/css';\nimport { useRef } from 'react';\nimport * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\ntype Props = {\n  children: React.ReactElement;\n  visible: boolean;\n  size: number;\n\n  duration?: number;\n  horizontal?: boolean;\n};\n\nexport function SlideOutTransition(props: Props) {\n  const { visible, children, duration = 250, horizontal, size } = props;\n  const styles = useStyles2(getStyles, duration, horizontal ? 'width' : 'height', size);\n  const transitionRef = useRef(null);\n\n  return (\n    <CSSTransition\n      in={visible}\n      mountOnEnter={true}\n      unmountOnExit={true}\n      timeout={duration}\n      classNames={styles}\n      nodeRef={transitionRef}\n    >\n      {React.cloneElement(children, { ref: transitionRef })}\n    </CSSTransition>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2, duration: number, measurement: 'width' | 'height', size: number) => ({\n  enter: css({\n    label: 'enter',\n    [`${measurement}`]: 0,\n    opacity: 0,\n  }),\n  enterActive: css({\n    label: 'enterActive',\n    [`${measurement}`]: `${size}px`,\n    opacity: 1,\n    [theme.transitions.handleMotion('no-preference')]: {\n      transition: `opacity ${duration}ms ease-out, ${measurement} ${duration}ms ease-out`,\n    },\n    [theme.transitions.handleMotion('reduce')]: {\n      transition: `opacity ${duration}ms ease-out`,\n    },\n  }),\n  exit: css({\n    label: 'exit',\n    [`${measurement}`]: `${size}px`,\n    opacity: 1,\n  }),\n  exitActive: css({\n    label: 'exitActive',\n    opacity: 0,\n    [`${measurement}`]: 0,\n    [theme.transitions.handleMotion('no-preference')]: {\n      transition: `opacity ${duration}ms ease-out, ${measurement} ${duration}ms ease-out`,\n    },\n    [theme.transitions.handleMotion('reduce')]: {\n      transition: `opacity ${duration}ms ease-out`,\n    },\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport { components, GroupBase, SingleValueProps } from 'react-select';\n\nimport { GrafanaTheme2, SelectableValue, toIconName } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { useDelayedSwitch } from '../../utils/useDelayedSwitch';\nimport { Icon } from '../Icon/Icon';\nimport { Spinner } from '../Spinner/Spinner';\nimport { FadeTransition } from '../transitions/FadeTransition';\nimport { SlideOutTransition } from '../transitions/SlideOutTransition';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    singleValue: css({\n      label: 'singleValue',\n      whiteSpace: 'nowrap',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      boxSizing: 'border-box',\n      maxWidth: '100%',\n      gridArea: '1 / 1 / 2 / 3',\n    }),\n    spinnerWrapper: css({\n      width: '16px',\n      height: '16px',\n      display: 'inline-block',\n      marginRight: '10px',\n      position: 'relative',\n      verticalAlign: 'middle',\n      overflow: 'hidden',\n    }),\n    spinnerIcon: css({\n      width: '100%',\n      height: '100%',\n      position: 'absolute',\n    }),\n    optionIcon: css({\n      marginRight: theme.spacing(1),\n      color: theme.colors.text.secondary,\n    }),\n    disabled: css({\n      color: theme.colors.text.disabled,\n    }),\n    isOpen: css({\n      color: theme.colors.text.disabled,\n    }),\n  };\n};\n\ntype StylesType = ReturnType<typeof getStyles>;\n\nexport type Props<T> = SingleValueProps<SelectableValue<T>, boolean, GroupBase<SelectableValue<T>>>;\n\nexport const SingleValue = <T extends unknown>(props: Props<T>) => {\n  const { children, data, isDisabled } = props;\n  const styles = useStyles2(getStyles);\n  const loading = useDelayedSwitch(data.loading || false, { delay: 250, duration: 750 });\n  const icon = data.icon ? toIconName(data.icon) : undefined;\n\n  return (\n    <components.SingleValue\n      {...props}\n      className={cx(styles.singleValue, isDisabled && styles.disabled, props.selectProps.menuIsOpen && styles.isOpen)}\n    >\n      {data.imgUrl ? (\n        <FadeWithImage loading={loading} imgUrl={data.imgUrl} styles={styles} alt={String(data.label ?? data.value)} />\n      ) : (\n        <>\n          <SlideOutTransition horizontal size={16} visible={loading} duration={150}>\n            <div className={styles.spinnerWrapper}>\n              <Spinner className={styles.spinnerIcon} inline />\n            </div>\n          </SlideOutTransition>\n          {icon && <Icon name={icon} role=\"img\" className={styles.optionIcon} />}\n        </>\n      )}\n\n      {!data.hideText && children}\n    </components.SingleValue>\n  );\n};\n\nconst FadeWithImage = (props: { loading: boolean; imgUrl: string; styles: StylesType; alt?: string }) => {\n  return (\n    <div className={props.styles.spinnerWrapper}>\n      <FadeTransition duration={150} visible={props.loading}>\n        <Spinner className={props.styles.spinnerIcon} inline />\n      </FadeTransition>\n      <FadeTransition duration={150} visible={!props.loading}>\n        <img className={props.styles.spinnerIcon} src={props.imgUrl} alt={props.alt} />\n      </FadeTransition>\n    </div>\n  );\n};\n","import { useMemo } from 'react';\nimport { CSSObjectWithLabel } from 'react-select';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport default function resetSelectStyles(theme: GrafanaTheme2) {\n  return {\n    clearIndicator: () => ({}),\n    container: () => ({}),\n    control: () => ({}),\n    dropdownIndicator: () => ({}),\n    group: () => ({}),\n    groupHeading: () => ({}),\n    indicatorsContainer: () => ({}),\n    indicatorSeparator: () => ({}),\n    input: function (originalStyles: CSSObjectWithLabel) {\n      return {\n        ...originalStyles,\n        color: 'inherit',\n        margin: 0,\n        padding: 0,\n        // Set an explicit z-index here to ensure this element always overlays the singleValue\n        zIndex: 1,\n        overflow: 'hidden',\n      };\n    },\n    loadingIndicator: () => ({}),\n    loadingMessage: () => ({}),\n    menu: () => ({}),\n    menuList: ({ maxHeight }: { maxHeight: number }) => ({\n      maxHeight,\n    }),\n    multiValue: () => ({}),\n    multiValueLabel: () => ({\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n    }),\n    multiValueRemove: () => ({}),\n    noOptionsMessage: () => ({}),\n    option: () => ({}),\n    placeholder: (originalStyles: CSSObjectWithLabel) => ({\n      ...originalStyles,\n      color: theme.colors.text.secondary,\n    }),\n    singleValue: () => ({}),\n    valueContainer: () => ({}),\n  };\n}\n\nexport function useCustomSelectStyles(theme: GrafanaTheme2, width: number | string | undefined) {\n  return useMemo(() => {\n    return {\n      ...resetSelectStyles(theme),\n      menuPortal: (base: any) => {\n        // Would like to correct top position when menu is placed bottom, but have props are not sent to this style function.\n        // Only state is. https://github.com/JedWatson/react-select/blob/master/packages/react-select/src/components/Menu.tsx#L605\n        return {\n          ...base,\n          zIndex: theme.zIndex.portal,\n        };\n      },\n      //These are required for the menu positioning to function\n      menu: ({ top, bottom, position }: any) => {\n        return {\n          top,\n          bottom,\n          position,\n          minWidth: '100%',\n          zIndex: theme.zIndex.dropdown,\n        };\n      },\n      container: () => ({\n        width: width ? theme.spacing(width) : '100%',\n        display: width === 'auto' ? 'inline-flex' : 'flex',\n      }),\n      option: (provided: any, state: any) => ({\n        ...provided,\n        opacity: state.isDisabled ? 0.5 : 1,\n      }),\n    };\n  }, [theme, width]);\n}\n","import { components, OptionProps } from 'react-select';\n\nimport { Icon } from '../../../Icon/Icon';\n\n// https://github.com/JedWatson/react-select/issues/3038\nexport interface ExtendedOptionProps extends OptionProps<any, any> {\n  data: {\n    description?: string;\n    imgUrl?: string;\n  };\n}\n\nexport const SelectOption = (props: ExtendedOptionProps) => {\n  const { children, isSelected, data } = props;\n\n  return (\n    <components.Option {...props}>\n      <div className=\"gf-form-select-box__desc-option\">\n        {data.imgUrl && <img className=\"gf-form-select-box__desc-option__img\" src={data.imgUrl} alt=\"\" />}\n        <div className=\"gf-form-select-box__desc-option__body\">\n          <div>{children}</div>\n          {data.description && <div className=\"gf-form-select-box__desc-option__desc\">{data.description}</div>}\n        </div>\n        {isSelected && <Icon name=\"check\" aria-hidden=\"true\" />}\n      </div>\n    </components.Option>\n  );\n};\n\nexport default SelectOption;\n","import { css } from '@emotion/css';\nimport { PureComponent } from 'react';\nimport { GroupProps } from 'react-select';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { withTheme2 } from '../../../../themes/ThemeContext';\nimport { stylesFactory } from '../../../../themes/stylesFactory';\nimport { Themeable2 } from '../../../../types/theme';\nimport { Icon } from '../../../Icon/Icon';\n\ninterface ExtendedGroupProps extends Omit<GroupProps<any, any>, 'theme'>, Themeable2 {\n  data: {\n    label: string;\n    expanded: boolean;\n    options: any[];\n  };\n}\n\ninterface State {\n  expanded: boolean;\n}\n\nconst getSelectOptionGroupStyles = stylesFactory((theme: GrafanaTheme2) => {\n  return {\n    header: css({\n      display: 'flex',\n      alignItems: 'center',\n      justifyContent: 'flex-start',\n      justifyItems: 'center',\n      cursor: 'pointer',\n      padding: '7px 10px',\n      width: '100%',\n      borderBottom: `1px solid ${theme.colors.background.secondary}`,\n\n      '&:hover': {\n        color: theme.colors.text.maxContrast,\n      },\n    }),\n    label: css({\n      flexGrow: 1,\n    }),\n    icon: css({\n      paddingRight: '2px',\n    }),\n  };\n});\n\nclass UnthemedSelectOptionGroup extends PureComponent<ExtendedGroupProps, State> {\n  state = {\n    expanded: false,\n  };\n\n  componentDidMount() {\n    if (this.props.data.expanded) {\n      this.setState({ expanded: true });\n    } else if (this.props.selectProps && this.props.selectProps.value) {\n      const { value } = this.props.selectProps.value;\n\n      if (value && this.props.options.some((option) => option.value === value)) {\n        this.setState({ expanded: true });\n      }\n    }\n  }\n\n  componentDidUpdate(nextProps: ExtendedGroupProps) {\n    if (nextProps.selectProps.inputValue !== '') {\n      this.setState({ expanded: true });\n    }\n  }\n\n  onToggleChildren = () => {\n    this.setState((prevState) => ({\n      expanded: !prevState.expanded,\n    }));\n  };\n\n  render() {\n    const { children, label, theme } = this.props;\n    const { expanded } = this.state;\n    const styles = getSelectOptionGroupStyles(theme);\n\n    return (\n      <div>\n        {/*React Select doesn't support focusable option group headers, this will be skipped when using\n      the keyboard */}\n        <div className={styles.header} onClick={this.onToggleChildren} role=\"presentation\">\n          <span className={styles.label}>{label}</span>\n          <Icon className={styles.icon} name={expanded ? 'angle-up' : 'angle-down'} />\n        </div>\n        {expanded && children}\n      </div>\n    );\n  }\n}\n\nexport const SelectOptionGroup = withTheme2(UnthemedSelectOptionGroup);\n","// Libraries\nimport classNames from 'classnames';\nimport { PureComponent } from 'react';\nimport * as React from 'react';\nimport { default as ReactSelect, components, MenuListProps } from 'react-select';\nimport { default as ReactAsyncSelect } from 'react-select/async';\nimport Creatable from 'react-select/creatable';\n\n// Components\nimport { SelectableValue, ThemeContext } from '@grafana/data';\n\nimport { ScrollContainer } from '../../../ScrollContainer/ScrollContainer';\nimport { SingleValue } from '../../../Select/SingleValue';\nimport resetSelectStyles from '../../../Select/resetSelectStyles';\nimport { SelectCommonProps, SelectAsyncProps } from '../../../Select/types';\nimport { Tooltip } from '../../../Tooltip/Tooltip';\nimport { PopoverContent } from '../../../Tooltip/types';\n\nimport IndicatorsContainer from './IndicatorsContainer';\nimport NoOptionsMessage from './NoOptionsMessage';\nimport { SelectOption } from './SelectOption';\nimport { SelectOptionGroup } from './SelectOptionGroup';\n\n/**\n * Changes in new selects:\n * - noOptionsMessage & loadingMessage is of string type\n * - isDisabled is renamed to disabled\n */\ntype LegacyCommonProps<T> = Omit<SelectCommonProps<T>, 'noOptionsMessage' | 'disabled' | 'value' | 'loadingMessage'>;\n\ninterface AsyncProps<T> extends LegacyCommonProps<T>, Omit<SelectAsyncProps<T>, 'loadingMessage'> {\n  loadingMessage?: () => string;\n  noOptionsMessage?: () => string;\n  tooltipContent?: PopoverContent;\n  isDisabled?: boolean;\n  value?: SelectableValue<T>;\n}\n\nexport interface LegacySelectProps<T> extends LegacyCommonProps<T> {\n  tooltipContent?: PopoverContent;\n  noOptionsMessage?: () => string;\n  isDisabled?: boolean;\n  value?: SelectableValue<T>;\n}\n\nexport const MenuList = (props: MenuListProps) => {\n  return (\n    <components.MenuList {...props}>\n      <ScrollContainer showScrollIndicators overflowX=\"hidden\" maxHeight=\"inherit\">\n        {props.children}\n      </ScrollContainer>\n    </components.MenuList>\n  );\n};\n\n/** @deprecated Please use the `Select` component, as seen {@link https://developers.grafana.com/ui/latest/index.html?path=/story/forms-select--basic in Storybook}. */\nexport class Select<T> extends PureComponent<LegacySelectProps<T>> {\n  declare context: React.ContextType<typeof ThemeContext>;\n  static contextType = ThemeContext;\n\n  static defaultProps: Partial<LegacySelectProps<unknown>> = {\n    className: '',\n    isDisabled: false,\n    isSearchable: true,\n    isClearable: false,\n    isMulti: false,\n    openMenuOnFocus: false,\n    autoFocus: false,\n    isLoading: false,\n    backspaceRemovesValue: true,\n    maxMenuHeight: 300,\n    tabSelectsValue: true,\n    allowCustomValue: false,\n    components: {\n      Option: SelectOption,\n      SingleValue,\n      IndicatorsContainer,\n      MenuList,\n      Group: SelectOptionGroup,\n    },\n  };\n\n  render() {\n    const {\n      defaultValue,\n      getOptionLabel,\n      getOptionValue,\n      onChange,\n      options,\n      placeholder,\n      width,\n      value,\n      className,\n      isDisabled,\n      isLoading,\n      isSearchable,\n      isClearable,\n      backspaceRemovesValue,\n      isMulti,\n      autoFocus,\n      openMenuOnFocus,\n      onBlur,\n      maxMenuHeight,\n      noOptionsMessage,\n      isOpen,\n      components,\n      tooltipContent,\n      tabSelectsValue,\n      onCloseMenu,\n      onOpenMenu,\n      allowCustomValue,\n      formatCreateLabel,\n      'aria-label': ariaLabel,\n    } = this.props;\n\n    let widthClass = '';\n    if (width) {\n      widthClass = 'width-' + width;\n    }\n\n    let SelectComponent = ReactSelect;\n    const creatableOptions: any = {};\n\n    if (allowCustomValue) {\n      SelectComponent = Creatable;\n      creatableOptions.formatCreateLabel = formatCreateLabel ?? ((input: string) => input);\n    }\n\n    const selectClassNames = classNames('gf-form-input', 'gf-form-input--form-dropdown', widthClass, className);\n    const selectComponents = { ...Select.defaultProps.components, ...components };\n    return (\n      <WrapInTooltip onCloseMenu={onCloseMenu} onOpenMenu={onOpenMenu} tooltipContent={tooltipContent} isOpen={isOpen}>\n        {(onOpenMenuInternal, onCloseMenuInternal) => {\n          return (\n            <SelectComponent\n              captureMenuScroll={false}\n              classNamePrefix=\"gf-form-select-box\"\n              className={selectClassNames}\n              components={selectComponents}\n              defaultValue={defaultValue}\n              value={value}\n              getOptionLabel={getOptionLabel}\n              getOptionValue={getOptionValue}\n              menuShouldScrollIntoView={false}\n              isSearchable={isSearchable}\n              onChange={onChange}\n              options={options}\n              placeholder={placeholder || 'Choose'}\n              styles={resetSelectStyles(this.context)}\n              isDisabled={isDisabled}\n              isLoading={isLoading}\n              isClearable={isClearable}\n              autoFocus={autoFocus}\n              onBlur={onBlur}\n              openMenuOnFocus={openMenuOnFocus}\n              maxMenuHeight={maxMenuHeight}\n              noOptionsMessage={noOptionsMessage}\n              isMulti={isMulti}\n              backspaceRemovesValue={backspaceRemovesValue}\n              menuIsOpen={isOpen}\n              onMenuOpen={onOpenMenuInternal}\n              onMenuClose={onCloseMenuInternal}\n              tabSelectsValue={tabSelectsValue}\n              aria-label={ariaLabel}\n              {...creatableOptions}\n            />\n          );\n        }}\n      </WrapInTooltip>\n    );\n  }\n}\n\n/** @deprecated Please use the `Select` component with async functionality, as seen {@link https://developers.grafana.com/ui/latest/index.html?path=/story/forms-select--basic-select-async in Storybook}. */\nexport class AsyncSelect<T> extends PureComponent<AsyncProps<T>> {\n  static contextType = ThemeContext;\n\n  static defaultProps: Partial<AsyncProps<unknown>> = {\n    className: '',\n    components: {},\n    loadingMessage: () => 'Loading...',\n    isDisabled: false,\n    isClearable: false,\n    isMulti: false,\n    isSearchable: true,\n    backspaceRemovesValue: true,\n    autoFocus: false,\n    openMenuOnFocus: false,\n    maxMenuHeight: 300,\n  };\n\n  render() {\n    const {\n      defaultValue,\n      getOptionLabel,\n      getOptionValue,\n      onChange,\n      placeholder,\n      width,\n      value,\n      className,\n      loadOptions,\n      defaultOptions,\n      isLoading,\n      loadingMessage,\n      noOptionsMessage,\n      isDisabled,\n      isSearchable,\n      isClearable,\n      backspaceRemovesValue,\n      autoFocus,\n      onBlur,\n      openMenuOnFocus,\n      maxMenuHeight,\n      isMulti,\n      tooltipContent,\n      onCloseMenu,\n      onOpenMenu,\n      isOpen,\n    } = this.props;\n\n    let widthClass = '';\n    if (width) {\n      widthClass = 'width-' + width;\n    }\n\n    const selectClassNames = classNames('gf-form-input', 'gf-form-input--form-dropdown', widthClass, className);\n\n    return (\n      <WrapInTooltip onCloseMenu={onCloseMenu} onOpenMenu={onOpenMenu} tooltipContent={tooltipContent} isOpen={isOpen}>\n        {(onOpenMenuInternal, onCloseMenuInternal) => {\n          return (\n            <ReactAsyncSelect\n              captureMenuScroll={false}\n              classNamePrefix=\"gf-form-select-box\"\n              className={selectClassNames}\n              components={{\n                Option: SelectOption,\n                SingleValue,\n                IndicatorsContainer,\n                NoOptionsMessage,\n              }}\n              defaultValue={defaultValue}\n              value={value}\n              //@ts-expect-error\n              getOptionLabel={getOptionLabel}\n              //@ts-expect-error\n              getOptionValue={getOptionValue}\n              menuShouldScrollIntoView={false}\n              //@ts-expect-error\n              onChange={onChange}\n              loadOptions={loadOptions}\n              isLoading={isLoading}\n              defaultOptions={defaultOptions}\n              placeholder={placeholder || 'Choose'}\n              //@ts-expect-error\n              styles={resetSelectStyles(this.context)}\n              loadingMessage={loadingMessage}\n              noOptionsMessage={noOptionsMessage}\n              isDisabled={isDisabled}\n              isSearchable={isSearchable}\n              isClearable={isClearable}\n              autoFocus={autoFocus}\n              onBlur={onBlur}\n              openMenuOnFocus={openMenuOnFocus}\n              maxMenuHeight={maxMenuHeight}\n              isMulti={isMulti}\n              backspaceRemovesValue={backspaceRemovesValue}\n            />\n          );\n        }}\n      </WrapInTooltip>\n    );\n  }\n}\n\nexport interface TooltipWrapperProps {\n  children: (onOpenMenu: () => void, onCloseMenu: () => void) => React.ReactNode;\n  onOpenMenu?: () => void;\n  onCloseMenu?: () => void;\n  isOpen?: boolean;\n  tooltipContent?: PopoverContent;\n}\n\nexport interface TooltipWrapperState {\n  isOpenInternal: boolean;\n}\n\nexport class WrapInTooltip extends PureComponent<TooltipWrapperProps, TooltipWrapperState> {\n  state: TooltipWrapperState = {\n    isOpenInternal: false,\n  };\n\n  onOpenMenu = () => {\n    const { onOpenMenu } = this.props;\n    if (onOpenMenu) {\n      onOpenMenu();\n    }\n    this.setState({ isOpenInternal: true });\n  };\n\n  onCloseMenu = () => {\n    const { onCloseMenu } = this.props;\n    if (onCloseMenu) {\n      onCloseMenu();\n    }\n    this.setState({ isOpenInternal: false });\n  };\n\n  render() {\n    const { children, isOpen, tooltipContent } = this.props;\n    const { isOpenInternal } = this.state;\n\n    let showTooltip: boolean | undefined = undefined;\n\n    if (isOpenInternal || isOpen) {\n      showTooltip = false;\n    }\n\n    if (tooltipContent) {\n      return (\n        <Tooltip show={showTooltip} content={tooltipContent} placement=\"bottom\">\n          <div>\n            {/* div needed for tooltip */}\n            {children(this.onOpenMenu, this.onCloseMenu)}\n          </div>\n        </Tooltip>\n      );\n    } else {\n      return <div>{children(this.onOpenMenu, this.onCloseMenu)}</div>;\n    }\n  }\n}\n\nexport default Select;\n","import { css, cx } from '@emotion/css';\nimport { Placement } from '@popperjs/core';\nimport { uniqueId } from 'lodash';\nimport { PureComponent } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { withTheme2 } from '../../../../themes/ThemeContext';\nimport { Themeable2 } from '../../../../types/theme';\nimport { Icon } from '../../../Icon/Icon';\nimport { Tooltip } from '../../../Tooltip/Tooltip';\n\nexport interface Props extends Themeable2 {\n  label: string;\n  checked: boolean;\n  disabled?: boolean;\n  className?: string;\n  labelClass?: string;\n  switchClass?: string;\n  tooltip?: string;\n  tooltipPlacement?: Placement;\n  transparent?: boolean;\n  onChange: (event: React.SyntheticEvent<HTMLInputElement>) => void;\n}\n\nexport interface State {\n  id: string;\n}\n\n/** @deprecated Please use the `Switch` component, {@link https://developers.grafana.com/ui/latest/index.html?path=/story/forms-switch--controlled as seen in Storybook} */\nclass UnthemedSwitch extends PureComponent<Props, State> {\n  state = {\n    id: uniqueId(),\n  };\n\n  internalOnChange = (event: React.FormEvent<HTMLInputElement>) => {\n    event.stopPropagation();\n    this.props.onChange(event);\n  };\n\n  render() {\n    const {\n      labelClass = '',\n      switchClass = '',\n      label,\n      checked,\n      disabled,\n      transparent,\n      className,\n      theme,\n      tooltip,\n      tooltipPlacement,\n    } = this.props;\n    const styles = getStyles(theme);\n\n    const labelId = this.state.id;\n    const labelClassName = `gf-form-label ${labelClass} ${transparent ? 'gf-form-label--transparent' : ''} pointer`;\n    const switchClassName = cx(styles.switch, switchClass, {\n      [styles.switchTransparent]: transparent,\n    });\n\n    return (\n      <div className={styles.container}>\n        <label htmlFor={labelId} className={cx('gf-form', styles.labelContainer, className)}>\n          {label && (\n            <div className={labelClassName}>\n              {label}\n              {tooltip && (\n                <Tooltip placement={tooltipPlacement ? tooltipPlacement : 'auto'} content={tooltip} theme={'info'}>\n                  <Icon name=\"info-circle\" size=\"sm\" style={{ marginLeft: '10px' }} />\n                </Tooltip>\n              )}\n            </div>\n          )}\n          <div className={switchClassName}>\n            <input\n              disabled={disabled}\n              id={labelId}\n              type=\"checkbox\"\n              checked={checked}\n              onChange={this.internalOnChange}\n            />\n            <span className={styles.slider} />\n          </div>\n        </label>\n      </div>\n    );\n  }\n}\n\nexport const Switch = withTheme2(UnthemedSwitch);\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const slider = css({\n    background: theme.v1.palette.gray1,\n    borderRadius: theme.shape.radius.pill,\n    height: '16px',\n    width: '32px',\n    display: 'block',\n    position: 'relative',\n\n    '&::before': {\n      position: 'absolute',\n      content: \"''\",\n      height: '12px',\n      width: '12px',\n      left: '2px',\n      top: '2px',\n      background: theme.components.input.background,\n      transition: '0.4s',\n      borderRadius: theme.shape.radius.circle,\n      boxShadow: theme.shadows.z1,\n    },\n  });\n  return {\n    container: css({\n      display: 'flex',\n      flexShrink: 0,\n    }),\n    labelContainer: css({\n      display: 'flex',\n      cursor: 'pointer',\n      marginRight: theme.spacing(0.5),\n    }),\n    switch: css({\n      display: 'flex',\n      position: 'relative',\n      width: '56px',\n      height: theme.spacing(4),\n      background: theme.components.input.background,\n      border: `1px solid ${theme.components.input.borderColor}`,\n      borderRadius: theme.shape.radius.default,\n      alignItems: 'center',\n      justifyContent: 'center',\n      input: {\n        opacity: 0,\n        width: 0,\n        height: 0,\n      },\n      [`input:checked + .${slider}`]: {\n        background: theme.colors.primary.main,\n      },\n\n      [`input:checked + .${slider}::before`]: {\n        transform: 'translateX(16px)',\n      },\n    }),\n    switchTransparent: css({\n      background: 'transparent',\n      border: 0,\n      width: '40px',\n    }),\n    slider,\n  };\n};\n","import tinycolor from 'tinycolor2';\n\nimport { GrafanaTheme, GrafanaTheme2 } from '@grafana/data';\n\nexport function cardChrome(theme: GrafanaTheme2): string {\n  return `\n    background: ${theme.colors.background.secondary};\n    &:hover {\n      background: ${hoverColor(theme.colors.background.secondary, theme)};\n    }\n    box-shadow: ${theme.components.panel.boxShadow};\n    border-radius: ${theme.shape.radius.default};\n`;\n}\n\nexport function hoverColor(color: string, theme: GrafanaTheme2): string {\n  return theme.isDark ? tinycolor(color).brighten(2).toString() : tinycolor(color).darken(2).toString();\n}\n\nexport function listItem(theme: GrafanaTheme2): string {\n  return `\n  background: ${theme.colors.background.secondary};\n  &:hover {\n    background: ${hoverColor(theme.colors.background.secondary, theme)};\n  }\n  box-shadow: ${theme.components.panel.boxShadow};\n  border-radius: ${theme.shape.radius.default};\n`;\n}\n\nexport function listItemSelected(theme: GrafanaTheme2): string {\n  return `\n    background: ${hoverColor(theme.colors.background.secondary, theme)};\n    color: ${theme.colors.text.maxContrast};\n`;\n}\n\nexport function mediaUp(breakpoint: string) {\n  return `only screen and (min-width: ${breakpoint})`;\n}\n\nconst isGrafanaTheme2 = (theme: GrafanaTheme | GrafanaTheme2): theme is GrafanaTheme2 => theme.hasOwnProperty('v1');\nexport const focusCss = (theme: GrafanaTheme | GrafanaTheme2) => {\n  const isTheme2 = isGrafanaTheme2(theme);\n  const firstColor = isTheme2 ? theme.colors.background.canvas : theme.colors.bodyBg;\n  const secondColor = isTheme2 ? theme.colors.primary.main : theme.colors.formFocusOutline;\n\n  return `\n  outline: 2px dotted transparent;\n  outline-offset: 2px;\n  box-shadow: 0 0 0 2px ${firstColor}, 0 0 0px 4px ${secondColor};\n  transition-property: outline, outline-offset, box-shadow;\n  transition-duration: 0.2s;\n  transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1);`;\n};\n\nexport function getMouseFocusStyles(theme: GrafanaTheme | GrafanaTheme2) {\n  return {\n    outline: 'none',\n    boxShadow: `none`,\n  };\n}\n\nexport function getFocusStyles(theme: GrafanaTheme2) {\n  return {\n    outline: '2px dotted transparent',\n    outlineOffset: '2px',\n    boxShadow: `0 0 0 2px ${theme.colors.background.canvas}, 0 0 0px 4px ${theme.colors.primary.main}`,\n    transitionTimingFunction: `cubic-bezier(0.19, 1, 0.22, 1)`,\n    transitionDuration: '0.2s',\n    transitionProperty: 'outline, outline-offset, box-shadow',\n  };\n}\n\n// max-width is set up based on .grafana-tooltip class that's used in dashboard\nexport const getTooltipContainerStyles = (theme: GrafanaTheme2) => ({\n  overflow: 'hidden',\n  background: theme.colors.background.elevated,\n  boxShadow: theme.shadows.z2,\n  maxWidth: '800px',\n  padding: theme.spacing(1),\n  borderRadius: theme.shape.radius.default,\n  zIndex: theme.zIndex.tooltip,\n});\n\ninterface ExternalRadiusAdditionalOptions {\n  selfBorderWidth?: number;\n  childBorderRadius?: number;\n}\n/**\n * Calculates a border radius for an element, based on border radius of its child.\n *\n * @param theme\n * @param offset - The distance to offset from the child element, should be >= 0.\n * @param additionalOptions\n * @param additionalOptions.selfBorderWidth - The border width of the element itself (default: 1)\n * @param additionalOptions.childBorderRadius - The border radius of the child element (default: theme default radius)\n * @returns A CSS calc() expression that returns the relative external radius value\n */\nexport const getExternalRadius = (\n  theme: GrafanaTheme2,\n  offset: number,\n  additionalOptions: ExternalRadiusAdditionalOptions = {}\n) => {\n  const { selfBorderWidth = 1, childBorderRadius } = additionalOptions;\n\n  const childBorderRadiusPx = childBorderRadius !== undefined ? `${childBorderRadius}px` : theme.shape.radius.default;\n  return `calc(max(0px, ${childBorderRadiusPx} + ${offset}px + ${selfBorderWidth}px))`;\n};\n\ninterface InternalRadiusAdditionalOptions {\n  parentBorderWidth?: number;\n  parentBorderRadius?: number;\n}\n\n/**\n * Calculates a border radius for an element, based on border radius of its parent.\n *\n * @param theme\n * @param offset - The distance to offset from the parent element, should be >= 0.\n * @param additionalOptions\n * @param additionalOptions.parentBorderWidth - The border width of the parent element (default: 1)\n * @param additionalOptions.parentBorderRadius - The border radius of the parent element (default: theme default radius)\n * @returns A CSS calc() expression that returns the relative internal radius value\n */\nexport const getInternalRadius = (\n  theme: GrafanaTheme2,\n  offset: number,\n  additionalOptions: InternalRadiusAdditionalOptions = {}\n) => {\n  const { parentBorderWidth = 1, parentBorderRadius } = additionalOptions;\n\n  const parentBorderRadiusPx =\n    parentBorderRadius !== undefined ? `${parentBorderRadius}px` : theme.shape.radius.default;\n  return `calc(max(0px, ${parentBorderRadiusPx} - ${offset}px - ${parentBorderWidth}px))`;\n};\n","import { css, cx } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { getFocusStyles } from '../../themes/mixins';\nimport { ComponentSize } from '../../types/size';\n\nexport const getFocusStyle = (theme: GrafanaTheme2) =>\n  css({\n    '&:focus': getFocusStyles(theme),\n  });\n\nexport const sharedInputStyle = (theme: GrafanaTheme2, invalid = false) => {\n  const borderColor = invalid ? theme.colors.error.border : theme.components.input.borderColor;\n  const borderColorHover = invalid ? theme.colors.error.shade : theme.components.input.borderHover;\n  const background = theme.components.input.background;\n  const textColor = theme.components.input.text;\n\n  // Cannot use our normal borders for this color for some reason due the alpha values in them.\n  // Need to colors without alpha channel\n  const autoFillBorder = theme.isDark ? '#2e2f35' : '#bab4ca';\n\n  return cx(\n    inputPadding(theme),\n    css({\n      background,\n      lineHeight: theme.typography.body.lineHeight,\n      fontSize: theme.typography.size.md,\n      color: textColor,\n      border: `1px solid ${borderColor}`,\n\n      '&:-webkit-autofill, &:-webkit-autofill:hover': {\n        /* Welcome to 2005. This is a HACK to get rid od Chromes default autofill styling */\n        boxShadow: `inset 0 0 0 1px rgba(255, 255, 255, 0), inset 0 0 0 100px ${background}!important`,\n        WebkitTextFillColor: `${textColor} !important`,\n        borderColor: autoFillBorder,\n      },\n\n      '&:-webkit-autofill:focus': {\n        /* Welcome to 2005. This is a HACK to get rid od Chromes default autofill styling */\n        boxShadow: `0 0 0 2px ${theme.colors.background.primary}, 0 0 0px 4px ${theme.colors.primary.main}, inset 0 0 0 1px rgba(255, 255, 255, 0), inset 0 0 0 100px ${background}!important`,\n        WebkitTextFillColor: `${textColor} !important`,\n      },\n\n      '&:hover': {\n        borderColor: borderColorHover,\n      },\n\n      '&:focus': {\n        outline: 'none',\n      },\n\n      '&:disabled': {\n        backgroundColor: theme.colors.action.disabledBackground,\n        color: theme.colors.action.disabledText,\n        border: `1px solid ${theme.colors.action.disabledBackground}`,\n\n        '&:hover': {\n          borderColor,\n        },\n      },\n\n      '&::placeholder': {\n        color: theme.colors.text.disabled,\n        opacity: 1,\n      },\n    })\n  );\n};\n\nexport const inputPadding = (theme: GrafanaTheme2) => {\n  return css({\n    padding: theme.spacing(0, 1, 0, 1),\n  });\n};\n\nexport const inputSizes = () => {\n  return {\n    sm: css({\n      width: inputSizesPixels('sm'),\n    }),\n    md: css({\n      width: inputSizesPixels('md'),\n    }),\n    lg: css({\n      width: inputSizesPixels('lg'),\n    }),\n    auto: css({\n      width: inputSizesPixels('auto'),\n    }),\n  };\n};\n\nexport const inputSizesPixels = (size: string) => {\n  switch (size) {\n    case 'sm':\n      return '200px';\n    case 'md':\n      return '320px';\n    case 'lg':\n      return '580px';\n    case 'auto':\n    default:\n      return 'auto';\n  }\n};\n\nexport function getPropertiesForButtonSize(size: ComponentSize, theme: GrafanaTheme2) {\n  switch (size) {\n    case 'sm':\n      return {\n        padding: 1,\n        fontSize: theme.typography.size.sm,\n        height: theme.components.height.sm,\n      };\n\n    case 'lg':\n      return {\n        padding: 3,\n        fontSize: theme.typography.size.lg,\n        height: theme.components.height.lg,\n      };\n    case 'md':\n    default:\n      return {\n        padding: 2,\n        fontSize: theme.typography.size.md,\n        height: theme.components.height.md,\n      };\n  }\n}\n","import { css, cx } from '@emotion/css';\nimport { AnchorHTMLAttributes, ButtonHTMLAttributes } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, ThemeRichColor } from '@grafana/data';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { getFocusStyles, getMouseFocusStyles } from '../../themes/mixins';\nimport { IconName, IconSize, IconType } from '../../types/icon';\nimport { ComponentSize } from '../../types/size';\nimport { getPropertiesForButtonSize } from '../Forms/commonStyles';\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip } from '../Tooltip/Tooltip';\nimport { PopoverContent, TooltipPlacement } from '../Tooltip/types';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'success';\nexport const allButtonVariants: ButtonVariant[] = ['primary', 'secondary', 'destructive'];\nexport type ButtonFill = 'solid' | 'outline' | 'text';\nexport const allButtonFills: ButtonFill[] = ['solid', 'outline', 'text'];\n\ntype BaseProps = {\n  size?: ComponentSize;\n  variant?: ButtonVariant;\n  fill?: ButtonFill;\n  icon?: IconName | React.ReactElement;\n  className?: string;\n  fullWidth?: boolean;\n  type?: string;\n  tooltip?: PopoverContent;\n  tooltipPlacement?: TooltipPlacement;\n  /** Position of the icon */\n  iconPlacement?: 'left' | 'right';\n};\n\n// either aria-label or tooltip is required for buttons without children\ntype NoChildrenAriaLabel = BaseProps & {\n  children?: never;\n  'aria-label': string;\n};\ntype NoChildrenTooltip = BaseProps & {\n  children?: never;\n  tooltip: PopoverContent;\n  tooltipPlacement?: TooltipPlacement;\n};\n\ntype BasePropsWithChildren = BaseProps & {\n  children: React.ReactNode;\n};\n\ntype CommonProps = BasePropsWithChildren | NoChildrenTooltip | NoChildrenAriaLabel;\n\nexport type ButtonProps = CommonProps & ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  (\n    {\n      'aria-label': ariaLabel,\n      variant = 'primary',\n      size = 'md',\n      fill = 'solid',\n      icon,\n      fullWidth,\n      children,\n      className,\n      type = 'button',\n      tooltip,\n      disabled,\n      tooltipPlacement,\n      iconPlacement = 'left',\n      onClick,\n      ...otherProps\n    },\n    ref\n  ) => {\n    const theme = useTheme2();\n    const styles = getButtonStyles({\n      theme,\n      size,\n      variant,\n      fill,\n      fullWidth,\n      iconOnly: !children,\n    });\n\n    const buttonStyles = cx(\n      styles.button,\n      {\n        [styles.disabled]: disabled,\n      },\n      className\n    );\n\n    const hasTooltip = Boolean(tooltip);\n\n    const iconComponent = icon && <IconRenderer icon={icon} size={size} className={styles.icon} />;\n\n    // In order to standardise Button please always consider using IconButton when you need a button with an icon only\n    // When using tooltip, ref is forwarded to Tooltip component instead for https://github.com/grafana/grafana/issues/65632\n    const button = (\n      <button\n        className={buttonStyles}\n        type={type}\n        onClick={disabled ? undefined : onClick}\n        {...otherProps}\n        // In order for the tooltip to be accessible when disabled,\n        // we need to set aria-disabled instead of the native disabled attribute\n        aria-disabled={hasTooltip && disabled}\n        disabled={!hasTooltip && disabled}\n        ref={tooltip ? undefined : ref}\n        aria-label={ariaLabel ?? (!children && typeof tooltip === 'string' ? tooltip : undefined)}\n      >\n        {iconPlacement === 'left' && iconComponent}\n        {children && <span className={styles.content}>{children}</span>}\n        {iconPlacement === 'right' && iconComponent}\n      </button>\n    );\n\n    if (tooltip) {\n      return (\n        <Tooltip ref={ref} content={tooltip} placement={tooltipPlacement}>\n          {button}\n        </Tooltip>\n      );\n    }\n\n    return button;\n  }\n);\n\nButton.displayName = 'Button';\n\nexport type ButtonLinkProps = ButtonProps & Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'aria-label'>;\n\nexport const LinkButton = React.forwardRef<HTMLAnchorElement, ButtonLinkProps>(\n  (\n    {\n      'aria-label': ariaLabel,\n      variant = 'primary',\n      size = 'md',\n      fill = 'solid',\n      icon,\n      fullWidth,\n      children,\n      className,\n      onBlur,\n      onFocus,\n      disabled,\n      tooltip,\n      tooltipPlacement,\n      ...otherProps\n    },\n    ref\n  ) => {\n    const theme = useTheme2();\n    const styles = getButtonStyles({\n      theme,\n      fullWidth,\n      size,\n      variant,\n      fill,\n      iconOnly: !children,\n    });\n\n    const linkButtonStyles = cx(\n      styles.button,\n      {\n        [css(styles.disabled, {\n          pointerEvents: 'none',\n        })]: disabled,\n      },\n      className\n    );\n\n    // When using tooltip, ref is forwarded to Tooltip component instead for https://github.com/grafana/grafana/issues/65632\n    const button = (\n      <a\n        className={linkButtonStyles}\n        {...otherProps}\n        tabIndex={disabled ? -1 : 0}\n        aria-disabled={disabled}\n        ref={tooltip ? undefined : ref}\n        aria-label={ariaLabel ?? (!children && typeof tooltip === 'string' ? tooltip : undefined)}\n      >\n        <IconRenderer icon={icon} size={size} className={styles.icon} />\n        {children && <span className={styles.content}>{children}</span>}\n      </a>\n    );\n\n    if (tooltip) {\n      return (\n        <Tooltip ref={ref} content={tooltip} placement={tooltipPlacement}>\n          {button}\n        </Tooltip>\n      );\n    }\n\n    return button;\n  }\n);\n\nLinkButton.displayName = 'LinkButton';\n\ninterface IconRendererProps {\n  icon?: IconName | React.ReactElement<{ className?: string; size?: IconSize }>;\n  size?: IconSize;\n  className?: string;\n  iconType?: IconType;\n}\nexport const IconRenderer = ({ icon, size, className, iconType }: IconRendererProps) => {\n  if (!icon) {\n    return null;\n  }\n  if (React.isValidElement(icon)) {\n    return React.cloneElement(icon, {\n      className,\n      size,\n    });\n  }\n  return <Icon name={icon} size={size} className={className} type={iconType} />;\n};\n\nexport interface StyleProps {\n  size: ComponentSize;\n  variant: ButtonVariant;\n  fill?: ButtonFill;\n  iconOnly?: boolean;\n  theme: GrafanaTheme2;\n  fullWidth?: boolean;\n  narrow?: boolean;\n}\n\nexport const getButtonStyles = (props: StyleProps) => {\n  const { theme, variant, fill = 'solid', size, iconOnly, fullWidth } = props;\n  const { height, padding, fontSize } = getPropertiesForButtonSize(size, theme);\n  const variantStyles = getPropertiesForVariant(theme, variant, fill);\n  const disabledStyles = getPropertiesForDisabled(theme, variant, fill);\n  const focusStyle = getFocusStyles(theme);\n  const paddingMinusBorder = theme.spacing.gridSize * padding - 1;\n\n  return {\n    button: css({\n      label: 'button',\n      display: 'inline-flex',\n      alignItems: 'center',\n      gap: theme.spacing(1),\n      fontSize: fontSize,\n      fontWeight: theme.typography.fontWeightMedium,\n      fontFamily: theme.typography.fontFamily,\n      padding: `0 ${paddingMinusBorder}px`,\n      height: theme.spacing(height),\n      // Deduct border from line-height for perfect vertical centering on windows and linux\n      lineHeight: `${theme.spacing.gridSize * height - 2}px`,\n      verticalAlign: 'middle',\n      cursor: 'pointer',\n      borderRadius: theme.shape.radius.default,\n      '&:focus': focusStyle,\n      '&:focus-visible': focusStyle,\n      '&:focus:not(:focus-visible)': getMouseFocusStyles(theme),\n      ...(fullWidth && {\n        flexGrow: 1,\n        justifyContent: 'center',\n      }),\n      ...variantStyles,\n      ':disabled': disabledStyles,\n      '&[disabled]': disabledStyles,\n    }),\n    disabled: css(disabledStyles, {\n      '&:hover': css(disabledStyles),\n    }),\n    img: css({\n      width: '16px',\n      height: '16px',\n      margin: theme.spacing(0, 1, 0, 0.5),\n    }),\n    icon: iconOnly\n      ? css({\n          // Important not to set margin bottom here as it would override internal icon bottom margin\n          marginRight: theme.spacing(-padding / 2),\n          marginLeft: theme.spacing(-padding / 2),\n        })\n      : undefined,\n    content: css({\n      display: 'flex',\n      flexDirection: 'row',\n      alignItems: 'center',\n      whiteSpace: 'nowrap',\n      overflow: 'hidden',\n      height: '100%',\n    }),\n  };\n};\n\nfunction getButtonVariantStyles(theme: GrafanaTheme2, color: ThemeRichColor, fill: ButtonFill) {\n  let outlineBorderColor = color.border;\n  let borderColor = 'transparent';\n  let hoverBorderColor = 'transparent';\n\n  // Secondary button has some special rules as we lack theem color token to\n  // specify border color for normal button vs border color for outline button\n  if (color.name === 'secondary') {\n    borderColor = color.border;\n    hoverBorderColor = theme.colors.emphasize(color.border, 0.25);\n    outlineBorderColor = theme.colors.border.strong;\n  }\n\n  if (fill === 'outline') {\n    return {\n      background: 'transparent',\n      color: color.text,\n      border: `1px solid ${outlineBorderColor}`,\n      transition: theme.transitions.create(['background-color', 'border-color', 'color'], {\n        duration: theme.transitions.duration.short,\n      }),\n\n      '&:hover': {\n        background: color.transparent,\n        borderColor: theme.colors.emphasize(outlineBorderColor, 0.25),\n        color: color.text,\n      },\n    };\n  }\n\n  if (fill === 'text') {\n    return {\n      background: 'transparent',\n      color: color.text,\n      border: '1px solid transparent',\n      transition: theme.transitions.create(['background-color', 'color'], {\n        duration: theme.transitions.duration.short,\n      }),\n\n      '&:focus': {\n        outline: 'none',\n        textDecoration: 'none',\n      },\n\n      '&:hover': {\n        background: color.transparent,\n        textDecoration: 'none',\n      },\n    };\n  }\n\n  return {\n    background: color.main,\n    color: color.contrastText,\n    border: `1px solid ${borderColor}`,\n    transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color', 'color'], {\n      duration: theme.transitions.duration.short,\n    }),\n\n    '&:hover': {\n      background: color.shade,\n      color: color.contrastText,\n      boxShadow: theme.shadows.z1,\n      borderColor: hoverBorderColor,\n    },\n  };\n}\n\nfunction getPropertiesForDisabled(theme: GrafanaTheme2, variant: ButtonVariant, fill: ButtonFill) {\n  const disabledStyles = {\n    cursor: 'not-allowed',\n    boxShadow: 'none',\n    color: theme.colors.text.disabled,\n    transition: 'none',\n  };\n\n  if (fill === 'text') {\n    return {\n      ...disabledStyles,\n      background: 'transparent',\n      border: `1px solid transparent`,\n    };\n  }\n\n  if (fill === 'outline') {\n    return {\n      ...disabledStyles,\n      background: 'transparent',\n      border: `1px solid ${theme.colors.border.weak}`,\n    };\n  }\n\n  return {\n    ...disabledStyles,\n    background: theme.colors.action.disabledBackground,\n    border: `1px solid transparent`,\n  };\n}\n\nexport function getPropertiesForVariant(theme: GrafanaTheme2, variant: ButtonVariant, fill: ButtonFill) {\n  switch (variant) {\n    case 'secondary':\n      // The seconday button has some special handling as it's outline border is it's default color border\n      return getButtonVariantStyles(theme, theme.colors.secondary, fill);\n\n    case 'destructive':\n      return getButtonVariantStyles(theme, theme.colors.error, fill);\n\n    case 'success':\n      return getButtonVariantStyles(theme, theme.colors.success, fill);\n\n    case 'primary':\n    default:\n      return getButtonVariantStyles(theme, theme.colors.primary, fill);\n  }\n}\n\nexport const clearButtonStyles = (theme: GrafanaTheme2) => {\n  return css({\n    background: 'transparent',\n    color: theme.colors.text.primary,\n    border: 'none',\n    padding: 0,\n  });\n};\n\nexport const clearLinkButtonStyles = (theme: GrafanaTheme2) => {\n  return css({\n    background: 'transparent',\n    border: 'none',\n    padding: 0,\n    fontFamily: 'inherit',\n    color: 'inherit',\n    height: '100%',\n    cursor: 'context-menu',\n    '&:hover': {\n      background: 'transparent',\n      color: 'inherit',\n    },\n  });\n};\n","import { omit } from 'lodash';\nimport { InputHTMLAttributes } from 'react';\nimport * as React from 'react';\n\nimport { Trans } from '@grafana/i18n';\n\nimport { Button } from '../Button/Button';\nimport { FormField } from '../FormField/FormField';\nimport { Field } from '../Forms/Field';\nimport { SecretInput } from '../SecretInput';\nimport { PopoverContent } from '../Tooltip/types';\n\nexport interface Props extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onReset'> {\n  // Function to use when reset is clicked. Means you have to reset the input value yourself as this is  uncontrolled\n  // component (or do something else if required).\n  onReset: (event: React.SyntheticEvent<HTMLButtonElement>) => void;\n  isConfigured: boolean;\n\n  label?: string;\n  tooltip?: PopoverContent;\n  labelWidth?: number;\n  inputWidth?: number;\n  // Placeholder of the input field when in non configured state.\n  placeholder?: string;\n  interactive?: boolean;\n}\n\n/**\n * Form field that has 2 states configured and not configured. If configured it will not show its contents and adds\n * a reset button that will clear the input and makes it accessible. In non configured state it behaves like normal\n * form field. This is used for passwords or anything that is encrypted on the server and is later returned encrypted\n * to the user (like datasource passwords).\n *\n * @deprecated Please use the {@link SecretInput} component with a {@link Field} instead, {@link https://developers.grafana.com/ui/latest/index.html?path=/story/forms-secretinput--basic as seen in Storybook}\n */\nexport const SecretFormField = ({\n  label = 'Password',\n  labelWidth,\n  inputWidth = 12,\n  onReset,\n  isConfigured,\n  tooltip,\n  placeholder = 'Password',\n  interactive,\n  ...inputProps\n}: Props) => {\n  return (\n    <FormField\n      label={label!}\n      tooltip={tooltip}\n      interactive={interactive}\n      labelWidth={labelWidth}\n      inputEl={\n        isConfigured ? (\n          <>\n            <input\n              type=\"text\"\n              className={`gf-form-input width-${inputWidth}`}\n              disabled={true}\n              value=\"configured\"\n              {...omit(inputProps, 'value')}\n            />\n            <Button onClick={onReset} variant=\"secondary\" type=\"button\">\n              <Trans i18nKey=\"grafana-ui.secret-form-field.reset\">Reset</Trans>\n            </Button>\n          </>\n        ) : (\n          <input\n            type=\"password\"\n            className={`gf-form-input width-${inputWidth}`}\n            placeholder={placeholder}\n            {...inputProps}\n          />\n        )\n      }\n    />\n  );\n};\n\nSecretFormField.displayName = 'SecretFormField';\n","import { ReactElement } from 'react';\nimport * as React from 'react';\n\n/** Returns the ID value of the first, and only, child element  */\nexport function getChildId(children: ReactElement): string | undefined {\n  let inputId: unknown;\n\n  // Get the first, and only, child to retrieve form input's id\n  const child = React.Children.only(children);\n\n  // Retrieve input's id to apply on the label for correct click interaction\n  // For some components (like Select), we want to get the ID from a different prop\n  if ('id' in child?.props) {\n    inputId = child.props.id;\n  } else if ('inputId' in child.props) {\n    inputId = child?.props.inputId;\n  }\n\n  return typeof inputId === 'string' ? inputId : undefined;\n}\n\n/**\n * Given react node or function returns element accordingly\n *\n * @param itemToRender\n * @param props props to be passed to the function if item provided as such\n */\nexport function renderOrCallToRender<TProps = {}>(\n  itemToRender: ((props: TProps) => React.ReactNode) | React.ReactNode,\n  props?: TProps\n): React.ReactNode {\n  if (React.isValidElement(itemToRender) || typeof itemToRender === 'string' || typeof itemToRender === 'number') {\n    return itemToRender;\n  }\n\n  if (typeof itemToRender === 'function' && props) {\n    return itemToRender(props);\n  }\n\n  throw new Error(`${itemToRender} is not a React element nor a function that returns React element`);\n}\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\n\nexport interface FieldValidationMessageProps {\n  /** Override component style */\n  className?: string;\n  horizontal?: boolean;\n}\n\nexport const FieldValidationMessage = ({\n  children,\n  horizontal,\n  className,\n}: React.PropsWithChildren<FieldValidationMessageProps>) => {\n  const styles = useStyles2(getFieldValidationMessageStyles);\n  const cssName = cx(horizontal ? styles.horizontal : styles.vertical, className);\n\n  return (\n    <div role=\"alert\" className={cssName}>\n      <Icon className={styles.fieldValidationMessageIcon} name=\"exclamation-triangle\" />\n      {children}\n    </div>\n  );\n};\n\nexport const getFieldValidationMessageStyles = (theme: GrafanaTheme2) => {\n  const baseStyle = `\n      font-size: ${theme.typography.size.sm};\n      font-weight: ${theme.typography.fontWeightMedium};\n      padding: ${theme.spacing(0.5, 1)};\n      color: ${theme.colors.error.contrastText};\n      background: ${theme.colors.error.main};\n      border-radius: ${theme.shape.radius.default};\n      position: relative;\n      display: inline-block;\n      align-self: flex-start;\n\n      a {\n        color: ${theme.colors.error.contrastText};\n        text-decoration: underline;\n      }\n\n      a:hover {\n        text-decoration: none;\n      }\n    `;\n\n  return {\n    vertical: css(baseStyle, {\n      margin: theme.spacing(0.5, 0, 0, 0),\n\n      '&:before': {\n        content: '\"\"',\n        position: 'absolute',\n        left: '9px',\n        top: '-5px',\n        width: 0,\n        height: 0,\n        borderWidth: '0 4px 5px 4px',\n        borderColor: `transparent transparent ${theme.colors.error.main} transparent`,\n        borderStyle: 'solid',\n      },\n    }),\n    horizontal: css(baseStyle, {\n      marginLeft: '10px',\n\n      '&:before': {\n        content: '\"\"',\n        position: 'absolute',\n        left: '-5px',\n        top: '9px',\n        width: 0,\n        height: 0,\n        borderWidth: '4px 5px 4px 0',\n        borderColor: 'transparent #e02f44 transparent transparent',\n        borderStyle: 'solid',\n      },\n    }),\n    fieldValidationMessageIcon: css({\n      marginRight: theme.spacing(),\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n  children: React.ReactNode;\n  description?: React.ReactNode;\n  category?: React.ReactNode[];\n}\n\nexport const Label = ({ children, description, className, category, ...labelProps }: LabelProps) => {\n  const styles = useStyles2(getLabelStyles);\n  const categories = category?.map((c, i) => {\n    return (\n      <span className={styles.categories} key={`${c}/${i}`}>\n        <span>{c}</span>\n        <Icon name=\"angle-right\" className={styles.chevron} />\n      </span>\n    );\n  });\n\n  return (\n    <div className={cx(styles.label, className)}>\n      <label {...labelProps}>\n        <div className={styles.labelContent}>\n          {categories}\n          {children}\n        </div>\n        {description && <span className={styles.description}>{description}</span>}\n      </label>\n    </div>\n  );\n};\n\nexport const getLabelStyles = (theme: GrafanaTheme2) => ({\n  label: css({\n    label: 'Label',\n    fontSize: theme.typography.size.sm,\n    fontWeight: theme.typography.fontWeightMedium,\n    lineHeight: 1.25,\n    marginBottom: theme.spacing(0.5),\n    color: theme.colors.text.primary,\n    maxWidth: '480px',\n  }),\n  labelContent: css({\n    display: 'flex',\n    alignItems: 'center',\n  }),\n  description: css({\n    label: 'Label-description',\n    color: theme.colors.text.secondary,\n    fontSize: theme.typography.size.sm,\n    fontWeight: theme.typography.fontWeightRegular,\n    marginTop: theme.spacing(0.25),\n    display: 'block',\n  }),\n  categories: css({\n    label: 'Label-categories',\n    display: 'inline-flex',\n    alignItems: 'center',\n  }),\n  chevron: css({\n    margin: theme.spacing(0, 0.25),\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport { HTMLAttributes } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getChildId } from '../../utils/reactUtils';\n\nimport { FieldValidationMessage } from './FieldValidationMessage';\nimport { Label } from './Label';\n\nexport interface FieldProps extends HTMLAttributes<HTMLDivElement> {\n  /** Form input element, i.e Input or Switch */\n  children: React.ReactElement;\n  /** Label for the field */\n  label?: React.ReactNode;\n  /** Description of the field */\n  description?: React.ReactNode;\n  /** Indicates if field is in invalid state */\n  invalid?: boolean;\n  /** Indicates if field is in loading state */\n  loading?: boolean;\n  /** Indicates if field is disabled */\n  disabled?: boolean;\n  /** Indicates if field is required */\n  required?: boolean;\n  /** Error message to display */\n  error?: React.ReactNode;\n  /** Indicates horizontal layout of the field */\n  horizontal?: boolean;\n  /** make validation message overflow horizontally. Prevents pushing out adjacent inline components */\n  validationMessageHorizontalOverflow?: boolean;\n\n  className?: string;\n  /**\n   *  A unique id that associates the label of the Field component with the control with the unique id.\n   *  If the `htmlFor` property is missing the `htmlFor` will be inferred from the `id` or `inputId` property of the first child.\n   *  https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label#attr-for\n   */\n  htmlFor?: string;\n  /** Remove the bottom margin */\n  noMargin?: boolean;\n}\n\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(\n  (\n    {\n      label,\n      description,\n      horizontal,\n      invalid,\n      loading,\n      disabled,\n      required,\n      error,\n      children,\n      className,\n      validationMessageHorizontalOverflow,\n      htmlFor,\n      noMargin,\n      ...otherProps\n    }: FieldProps,\n    ref\n  ) => {\n    const styles = useStyles2(getFieldStyles, noMargin);\n    const inputId = htmlFor ?? getChildId(children);\n\n    const labelElement =\n      typeof label === 'string' ? (\n        <Label htmlFor={inputId} description={description}>\n          {`${label}${required ? ' *' : ''}`}\n        </Label>\n      ) : (\n        label\n      );\n\n    const childProps = deleteUndefinedProps({ invalid, disabled, loading });\n    return (\n      <div className={cx(styles.field, horizontal && styles.fieldHorizontal, className)} {...otherProps}>\n        {labelElement}\n        <div>\n          <div ref={ref}>{React.cloneElement(children, childProps)}</div>\n          {invalid && error && !horizontal && (\n            <div\n              className={cx(styles.fieldValidationWrapper, {\n                [styles.validationMessageHorizontalOverflow]: !!validationMessageHorizontalOverflow,\n              })}\n            >\n              <FieldValidationMessage>{error}</FieldValidationMessage>\n            </div>\n          )}\n        </div>\n\n        {invalid && error && horizontal && (\n          <div\n            className={cx(styles.fieldValidationWrapper, styles.fieldValidationWrapperHorizontal, {\n              [styles.validationMessageHorizontalOverflow]: !!validationMessageHorizontalOverflow,\n            })}\n          >\n            <FieldValidationMessage>{error}</FieldValidationMessage>\n          </div>\n        )}\n      </div>\n    );\n  }\n);\n\nField.displayName = 'Field';\n\nfunction deleteUndefinedProps<T extends Object>(obj: T): Partial<T> {\n  for (const key in obj) {\n    if (obj[key] === undefined) {\n      delete obj[key];\n    }\n  }\n\n  return obj;\n}\n\nexport const getFieldStyles = (theme: GrafanaTheme2, noMargin?: boolean) => ({\n  field: css({\n    display: 'flex',\n    flexDirection: 'column',\n    marginBottom: theme.spacing(noMargin ? 0 : 2),\n  }),\n  fieldHorizontal: css({\n    flexDirection: 'row',\n    justifyContent: 'space-between',\n    flexWrap: 'wrap',\n  }),\n  fieldValidationWrapper: css({\n    marginTop: theme.spacing(0.5),\n  }),\n  fieldValidationWrapperHorizontal: css({\n    flex: '1 1 100%',\n  }),\n  validationMessageHorizontalOverflow: css({\n    width: 0,\n    overflowX: 'visible',\n\n    '& > *': {\n      whiteSpace: 'nowrap',\n    },\n  }),\n});\n","import { css } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { StringSelector, selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { getFocusStyles, getInternalRadius, getMouseFocusStyles } from '../../../themes/mixins';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { getPropertiesForButtonSize } from '../commonStyles';\n\nexport const RADIO_GROUP_PADDING = 2;\nexport type RadioButtonSize = 'sm' | 'md';\n\nexport interface RadioButtonProps {\n  size?: RadioButtonSize;\n  disabled?: boolean;\n  name?: string;\n  description?: string;\n  active: boolean;\n  id: string;\n  onChange: () => void;\n  onClick: () => void;\n  fullWidth?: boolean;\n  'aria-label'?: StringSelector;\n  children?: React.ReactNode;\n}\n\nexport const RadioButton = React.forwardRef<HTMLInputElement, RadioButtonProps>(\n  (\n    {\n      children,\n      active = false,\n      disabled = false,\n      size = 'md',\n      onChange,\n      onClick,\n      id,\n      name = undefined,\n      description,\n      fullWidth,\n      'aria-label': ariaLabel,\n    },\n    ref\n  ) => {\n    const styles = useStyles2(getRadioButtonStyles, size, fullWidth);\n\n    const inputRadioButton = (\n      <input\n        type=\"radio\"\n        className={styles.radio}\n        onChange={onChange}\n        onClick={onClick}\n        disabled={disabled}\n        id={id}\n        checked={active}\n        name={name}\n        aria-label={ariaLabel}\n        ref={ref}\n      />\n    );\n    return description ? (\n      <div className={styles.radioOption} data-testid={selectors.components.RadioButton.container}>\n        <Tooltip content={description} placement=\"bottom\">\n          {inputRadioButton}\n        </Tooltip>\n        <label className={styles.radioLabel} htmlFor={id} title={description || ariaLabel}>\n          {children}\n        </label>\n      </div>\n    ) : (\n      <div className={styles.radioOption} data-testid={selectors.components.RadioButton.container}>\n        {inputRadioButton}\n        <label className={styles.radioLabel} htmlFor={id} title={description || ariaLabel}>\n          {children}\n        </label>\n      </div>\n    );\n  }\n);\n\nRadioButton.displayName = 'RadioButton';\n\nconst getRadioButtonStyles = (theme: GrafanaTheme2, size: RadioButtonSize, fullWidth?: boolean) => {\n  const { fontSize, height, padding } = getPropertiesForButtonSize(size, theme);\n\n  const textColor = theme.colors.text.secondary;\n  const textColorHover = theme.colors.text.primary;\n  // remove the group inner padding (set on RadioButtonGroup)\n  const labelHeight = height * theme.spacing.gridSize - 4 - 2;\n\n  return {\n    radioOption: css({\n      display: 'flex',\n      justifyContent: 'space-between',\n      position: 'relative',\n      flex: fullWidth ? `1 0 0` : 'none',\n      textAlign: 'center',\n    }),\n    radio: css({\n      position: 'absolute',\n      opacity: 0,\n      zIndex: 2,\n      width: '100% !important',\n      height: '100%',\n      cursor: 'pointer',\n\n      '&:checked + label': {\n        color: theme.colors.text.primary,\n        fontWeight: theme.typography.fontWeightMedium,\n        background: theme.colors.action.selected,\n        zIndex: 1,\n      },\n\n      '&:focus + label, &:focus-visible + label': getFocusStyles(theme),\n\n      '&:focus:not(:focus-visible) + label': getMouseFocusStyles(theme),\n\n      '&:disabled + label': {\n        color: theme.colors.text.disabled,\n        cursor: 'not-allowed',\n      },\n    }),\n    radioLabel: css({\n      display: 'flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n      fontSize,\n      height: `${labelHeight}px`,\n      // Deduct border from line-height for perfect vertical centering on windows and linux\n      lineHeight: `${labelHeight}px`,\n      color: textColor,\n      padding: theme.spacing(0, padding),\n      borderRadius: getInternalRadius(theme, RADIO_GROUP_PADDING),\n      background: theme.colors.background.primary,\n      cursor: 'pointer',\n      userSelect: 'none',\n      whiteSpace: 'nowrap',\n      flexGrow: 1,\n\n      '&:hover': {\n        color: textColorHover,\n      },\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { useCallback, useEffect, useRef } from 'react';\n\nimport { GrafanaTheme2, SelectableValue, toIconName } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { Icon } from '../../Icon/Icon';\n\nimport { RadioButtonSize, RadioButton, RADIO_GROUP_PADDING } from './RadioButton';\nexport interface RadioButtonGroupProps<T> {\n  value?: T;\n  id?: string;\n  disabled?: boolean;\n  disabledOptions?: T[];\n  options: Array<SelectableValue<T>>;\n  onChange?: (value: T) => void;\n  onClick?: (value: T) => void;\n  size?: RadioButtonSize;\n  fullWidth?: boolean;\n  className?: string;\n  autoFocus?: boolean;\n  ['aria-label']?: string;\n  invalid?: boolean;\n}\n\nexport function RadioButtonGroup<T>({\n  options,\n  value,\n  onChange,\n  onClick,\n  disabled,\n  disabledOptions,\n  size = 'md',\n  id,\n  className,\n  fullWidth = false,\n  autoFocus = false,\n  'aria-label': ariaLabel,\n  invalid = false,\n}: RadioButtonGroupProps<T>) {\n  const handleOnChange = useCallback(\n    (option: SelectableValue) => {\n      return () => {\n        if (onChange) {\n          onChange(option.value);\n        }\n      };\n    },\n    [onChange]\n  );\n  const handleOnClick = useCallback(\n    (option: SelectableValue) => {\n      return () => {\n        if (onClick) {\n          onClick(option.value);\n        }\n      };\n    },\n    [onClick]\n  );\n\n  const internalId = id ?? uniqueId('radiogroup-');\n  const groupName = useRef(internalId);\n  const styles = useStyles2(getStyles);\n\n  const activeButtonRef = useRef<HTMLInputElement | null>(null);\n  useEffect(() => {\n    if (autoFocus && activeButtonRef.current) {\n      activeButtonRef.current.focus();\n    }\n  }, [autoFocus]);\n\n  return (\n    <div\n      role=\"radiogroup\"\n      aria-label={ariaLabel}\n      className={cx(styles.radioGroup, fullWidth && styles.fullWidth, invalid && styles.invalid, className)}\n    >\n      {options.map((opt, i) => {\n        const isItemDisabled = disabledOptions && opt.value && disabledOptions.includes(opt.value);\n        const icon = opt.icon ? toIconName(opt.icon) : undefined;\n        const hasNonIconPart = Boolean(opt.imgUrl || opt.label || opt.component);\n\n        return (\n          <RadioButton\n            size={size}\n            disabled={isItemDisabled || disabled}\n            active={value === opt.value}\n            key={`o.label-${i}`}\n            aria-label={opt.ariaLabel}\n            onChange={handleOnChange(opt)}\n            onClick={handleOnClick(opt)}\n            id={`option-${opt.value}-${internalId}`}\n            name={groupName.current}\n            description={opt.description}\n            fullWidth={fullWidth}\n            ref={value === opt.value ? activeButtonRef : undefined}\n          >\n            {icon && <Icon name={icon} className={cx(hasNonIconPart && styles.icon)} />}\n            {opt.imgUrl && <img src={opt.imgUrl} alt={opt.label} className={styles.img} />}\n            {opt.label} {opt.component ? <opt.component /> : null}\n          </RadioButton>\n        );\n      })}\n    </div>\n  );\n}\n\nRadioButtonGroup.displayName = 'RadioButtonGroup';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    radioGroup: css({\n      backgroundColor: theme.colors.background.primary,\n      display: 'inline-flex',\n      flexDirection: 'row',\n      flexWrap: 'nowrap',\n      border: `1px solid ${theme.components.input.borderColor}`,\n      borderRadius: theme.shape.radius.default,\n      padding: RADIO_GROUP_PADDING,\n      '&:hover': {\n        borderColor: theme.components.input.borderHover,\n      },\n    }),\n    fullWidth: css({\n      display: 'flex',\n      flexGrow: 1,\n    }),\n    icon: css({\n      marginRight: '6px',\n    }),\n    img: css({\n      width: theme.spacing(2),\n      height: theme.spacing(2),\n      marginRight: theme.spacing(1),\n    }),\n    invalid: css({\n      border: `1px solid ${theme.colors.error.border}`,\n    }),\n  };\n};\n","import React from 'react';\n\n// Used to tell Input to increase the width properly of the input to fit the text.\n// See comment in Input.tsx for more details\nexport const AutoSizeInputContext = React.createContext(false);\nAutoSizeInputContext.displayName = 'AutoSizeInputContext';\n","import { css, cx } from '@emotion/css';\nimport { forwardRef, HTMLProps, ReactNode, useContext } from 'react';\nimport { useMeasure } from 'react-use';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { stylesFactory } from '../../themes/stylesFactory';\nimport { getFocusStyle, sharedInputStyle } from '../Forms/commonStyles';\nimport { Spinner } from '../Spinner/Spinner';\n\nimport { AutoSizeInputContext } from './AutoSizeInputContext';\n\nexport interface Props extends Omit<HTMLProps<HTMLInputElement>, 'prefix' | 'size'> {\n  /** Sets the width to a multiple of 8px. Should only be used with inline forms. Setting width of the container is preferred in other cases.*/\n  width?: number;\n  /** Show an invalid state around the input */\n  invalid?: boolean;\n  /** Show an icon as a prefix in the input */\n  prefix?: ReactNode;\n  /** Show an icon as a suffix in the input */\n  suffix?: ReactNode;\n  /** Show a loading indicator as a suffix in the input */\n  loading?: boolean;\n  /** Add a component as an addon before the input  */\n  addonBefore?: ReactNode;\n  /** Add a component as an addon after the input */\n  addonAfter?: ReactNode;\n}\n\ninterface StyleDeps {\n  theme: GrafanaTheme2;\n  invalid?: boolean;\n  width?: number;\n}\n\nexport const Input = forwardRef<HTMLInputElement, Props>((props, ref) => {\n  const {\n    className,\n    addonAfter,\n    addonBefore,\n    prefix,\n    suffix: suffixProp,\n    invalid,\n    loading,\n    width = 0,\n    ...restProps\n  } = props;\n  /**\n   * Prefix & suffix are positioned absolutely within inputWrapper. We use client rects below to apply correct padding to the input\n   * when prefix/suffix is larger than default (28px = 16px(icon) + 12px(left/right paddings)).\n   * Thanks to that prefix/suffix do not overflow the input element itself.\n   */\n  const [prefixRef, prefixRect] = useMeasure<HTMLDivElement>();\n  const [suffixRef, suffixRect] = useMeasure<HTMLDivElement>();\n\n  // Yes, this is gross - When Input is being wrapped by AutoSizeInput, add the suffix/prefix width to the overall width\n  // so the text content is not clipped. The intention is to make all the input's text appear without overflow/clipping,\n  // which isn't normally how width is used in this component.\n  // This behaviour is not controlled via a prop so we can limit API surface, and remove this as a 'breaking change' later\n  // if a better solution is found.\n  const isInAutoSizeInput = useContext(AutoSizeInputContext);\n  const accessoriesWidth = (prefixRect.width || 0) + (suffixRect.width || 0);\n  const autoSizeWidth = isInAutoSizeInput && width ? width + accessoriesWidth / 8 : undefined;\n\n  const theme = useTheme2();\n\n  // Don't pass the width prop, as this causes an unnecessary amount of Emotion calls when auto sizing\n  const styles = getInputStyles({ theme, invalid: !!invalid, width: autoSizeWidth ? undefined : width });\n\n  const suffix = suffixProp || (loading && <Spinner inline={true} />);\n\n  return (\n    <div\n      className={cx(styles.wrapper, className)}\n      // If the component is in an AutoSizeInput, set the width here to prevent emotion doing stuff\n      // on every keypress\n      style={autoSizeWidth ? { width: theme.spacing(autoSizeWidth) } : undefined}\n      data-testid=\"input-wrapper\"\n    >\n      {!!addonBefore && <div className={styles.addon}>{addonBefore}</div>}\n      <div className={styles.inputWrapper}>\n        {prefix && (\n          <div className={styles.prefix} ref={prefixRef}>\n            {prefix}\n          </div>\n        )}\n\n        <input\n          ref={ref}\n          className={styles.input}\n          {...restProps}\n          style={{\n            paddingLeft: prefix ? prefixRect.width + 12 : undefined,\n            paddingRight: suffix || loading ? suffixRect.width + 12 : undefined,\n          }}\n        />\n\n        {suffix && (\n          <div className={styles.suffix} ref={suffixRef}>\n            {suffix}\n          </div>\n        )}\n      </div>\n      {!!addonAfter && <div className={styles.addon}>{addonAfter}</div>}\n    </div>\n  );\n});\n\nInput.displayName = 'Input';\n\nexport const getInputStyles = stylesFactory(({ theme, invalid = false, width }: StyleDeps) => {\n  const prefixSuffixStaticWidth = '28px';\n  const prefixSuffix = css({\n    position: 'absolute',\n    top: 0,\n    zIndex: 1,\n    display: 'flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n    flexGrow: 0,\n    flexShrink: 0,\n    fontSize: theme.typography.size.md,\n    height: '100%',\n    /* Min width specified for prefix/suffix classes used outside React component*/\n    minWidth: prefixSuffixStaticWidth,\n    color: theme.colors.text.secondary,\n  });\n\n  return {\n    // Wraps inputWrapper and addons\n    wrapper: cx(\n      css({\n        label: 'input-wrapper',\n        display: 'flex',\n        width: width ? theme.spacing(width) : '100%',\n        height: theme.spacing(theme.components.height.md),\n        borderRadius: theme.shape.radius.default,\n        '&:hover': {\n          '> .prefix, .suffix, .input': {\n            borderColor: invalid ? theme.colors.error.border : theme.colors.primary.border,\n          },\n\n          // only show number buttons on hover\n          \"input[type='number']\": {\n            appearance: 'textfield',\n          },\n\n          \"input[type='number']::-webkit-inner-spin-button, input[type='number']::-webkit-outer-spin-button\": {\n            // Need type assertion here due to the use of !important\n            // see https://github.com/frenic/csstype/issues/114#issuecomment-697201978\n            // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n            WebkitAppearance: 'inner-spin-button !important' as 'inner-spin-button',\n            opacity: 1,\n          },\n        },\n      })\n    ),\n    // Wraps input and prefix/suffix\n    inputWrapper: css({\n      label: 'input-inputWrapper',\n      position: 'relative',\n      flexGrow: 1,\n      /* we want input to be above addons, especially for focused state */\n      zIndex: 1,\n\n      /* when input rendered with addon before only*/\n      '&:not(:first-child):last-child': {\n        '> input': {\n          borderLeft: 'none',\n          borderTopLeftRadius: 'unset',\n          borderBottomLeftRadius: 'unset',\n        },\n      },\n\n      /* when input rendered with addon after only*/\n      '&:first-child:not(:last-child)': {\n        '> input': {\n          borderRight: 'none',\n          borderTopRightRadius: 'unset',\n          borderBottomRightRadius: 'unset',\n        },\n      },\n\n      /* when rendered with addon before and after */\n      '&:not(:first-child):not(:last-child)': {\n        '> input': {\n          borderRight: 'none',\n          borderTopRightRadius: 'unset',\n          borderBottomRightRadius: 'unset',\n          borderTopLeftRadius: 'unset',\n          borderBottomLeftRadius: 'unset',\n        },\n      },\n\n      input: {\n        /* paddings specified for classes used outside React component */\n        '&:not(:first-child)': {\n          paddingLeft: prefixSuffixStaticWidth,\n        },\n        '&:not(:last-child)': {\n          paddingRight: prefixSuffixStaticWidth,\n        },\n        '&[readonly]': {\n          cursor: 'default',\n        },\n      },\n    }),\n\n    input: cx(\n      getFocusStyle(theme),\n      sharedInputStyle(theme, invalid),\n      css({\n        label: 'input-input',\n        position: 'relative',\n        zIndex: 0,\n        flexGrow: 1,\n        borderRadius: theme.shape.radius.default,\n        height: '100%',\n        width: '100%',\n      })\n    ),\n    inputDisabled: css({\n      backgroundColor: theme.colors.action.disabledBackground,\n      color: theme.colors.action.disabledText,\n      border: `1px solid ${theme.colors.action.disabledBackground}`,\n      '&:focus': {\n        boxShadow: 'none',\n      },\n    }),\n    addon: css({\n      label: 'input-addon',\n      display: 'flex',\n      justifyContent: 'center',\n      alignItems: 'center',\n      flexGrow: 0,\n      flexShrink: 0,\n      position: 'relative',\n\n      '&:first-child': {\n        borderTopRightRadius: 'unset',\n        borderBottomRightRadius: 'unset',\n        '> :last-child': {\n          borderTopRightRadius: 'unset',\n          borderBottomRightRadius: 'unset',\n        },\n      },\n\n      '&:last-child': {\n        borderTopLeftRadius: 'unset',\n        borderBottomLeftRadius: 'unset',\n        '> :first-child': {\n          borderTopLeftRadius: 'unset',\n          borderBottomLeftRadius: 'unset',\n        },\n      },\n      '> *:focus': {\n        /* we want anything that has focus and is an addon to be above input */\n        zIndex: 2,\n      },\n    }),\n    prefix: cx(\n      prefixSuffix,\n      css({\n        label: 'input-prefix',\n        paddingLeft: theme.spacing(1),\n        paddingRight: theme.spacing(0.5),\n        borderRight: 'none',\n        borderTopRightRadius: 'unset',\n        borderBottomRightRadius: 'unset',\n      })\n    ),\n    suffix: cx(\n      prefixSuffix,\n      css({\n        label: 'input-suffix',\n        paddingLeft: theme.spacing(1),\n        paddingRight: theme.spacing(1),\n        borderLeft: 'none',\n        borderTopLeftRadius: 'unset',\n        borderBottomLeftRadius: 'unset',\n        right: 0,\n      })\n    ),\n    loadingIndicator: css({\n      '& + *': {\n        marginLeft: theme.spacing(0.5),\n      },\n    }),\n  };\n});\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, ThemeSpacingTokens } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { AlignItems, Direction, FlexProps, JustifyContent, Wrap } from '../types';\nimport { ResponsiveProp, getResponsiveStyle } from '../utils/responsiveness';\nimport { getSizeStyles, SizeProps } from '../utils/styles';\n\ninterface StackProps extends FlexProps, SizeProps, Omit<React.HTMLAttributes<HTMLElement>, 'className' | 'style'> {\n  gap?: ResponsiveProp<ThemeSpacingTokens>;\n  rowGap?: ResponsiveProp<ThemeSpacingTokens>;\n  columnGap?: ResponsiveProp<ThemeSpacingTokens>;\n  alignItems?: ResponsiveProp<AlignItems>;\n  justifyContent?: ResponsiveProp<JustifyContent>;\n  direction?: ResponsiveProp<Direction>;\n  wrap?: ResponsiveProp<Wrap>;\n  children?: React.ReactNode;\n}\n\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>((props, ref) => {\n  const {\n    gap = 1,\n    rowGap,\n    columnGap,\n    alignItems,\n    justifyContent,\n    direction,\n    wrap,\n    children,\n    grow,\n    shrink,\n    basis,\n    flex,\n    width,\n    minWidth,\n    maxWidth,\n    height,\n    minHeight,\n    maxHeight,\n    ...rest\n  } = props;\n  const styles = useStyles2(\n    getStyles,\n    gap,\n    rowGap,\n    columnGap,\n    alignItems,\n    justifyContent,\n    direction,\n    wrap,\n    grow,\n    shrink,\n    basis,\n    flex\n  );\n  const sizeStyles = useStyles2(getSizeStyles, width, minWidth, maxWidth, height, minHeight, maxHeight);\n  return (\n    <div ref={ref} className={cx(styles.flex, sizeStyles)} {...rest}>\n      {children}\n    </div>\n  );\n});\n\nStack.displayName = 'Stack';\n\nconst getStyles = (\n  theme: GrafanaTheme2,\n  gap: StackProps['gap'],\n  rowGap: StackProps['rowGap'],\n  columnGap: StackProps['columnGap'],\n  alignItems: StackProps['alignItems'],\n  justifyContent: StackProps['justifyContent'],\n  direction: StackProps['direction'],\n  wrap: StackProps['wrap'],\n  grow: StackProps['grow'],\n  shrink: StackProps['shrink'],\n  basis: StackProps['basis'],\n  flex: StackProps['flex']\n) => {\n  return {\n    flex: css([\n      {\n        display: 'flex',\n      },\n      getResponsiveStyle(theme, direction, (val) => ({\n        flexDirection: val,\n      })),\n      getResponsiveStyle(theme, wrap, (val) => ({\n        flexWrap: typeof val === 'boolean' ? (val ? 'wrap' : 'nowrap') : val,\n      })),\n      getResponsiveStyle(theme, alignItems, (val) => ({\n        alignItems: val,\n      })),\n      getResponsiveStyle(theme, justifyContent, (val) => ({\n        justifyContent: val,\n      })),\n      getResponsiveStyle(theme, gap, (val) => ({\n        gap: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, rowGap, (val) => ({\n        rowGap: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, columnGap, (val) => ({\n        columnGap: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, grow, (val) => ({\n        flexGrow: val,\n      })),\n      getResponsiveStyle(theme, shrink, (val) => ({\n        flexShrink: val,\n      })),\n      getResponsiveStyle(theme, basis, (val) => ({\n        flexBasis: val,\n      })),\n      getResponsiveStyle(theme, flex, (val) => ({\n        flex: val,\n      })),\n    ]),\n  };\n};\n","import { components, InputProps } from 'react-select';\n\n/**\n * Custom input component for react-select to add data-testid attribute\n */\nexport const CustomInput = (props: InputProps) => {\n  let testId;\n\n  if ('data-testid' in props.selectProps && props.selectProps['data-testid']) {\n    testId = props.selectProps['data-testid'] + '-input';\n  }\n\n  return <components.Input {...props} data-testid={testId} />;\n};\n","import { DropdownIndicatorProps } from 'react-select';\n\nimport { Icon } from '../Icon/Icon';\nimport { Spinner } from '../Spinner/Spinner';\n\nexport function DropdownIndicator({ selectProps }: DropdownIndicatorProps) {\n  const isOpen = selectProps.menuIsOpen;\n  const icon = isOpen ? 'search' : 'angle-down';\n  const size = 'md';\n\n  if (selectProps.isLoading) {\n    return <Spinner inline />;\n  }\n\n  return <Icon name={icon} size={size} />;\n}\n","import { cx, css } from '@emotion/css';\nimport { forwardRef } from 'react';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { getInputStyles } from '../Input/Input';\n\nexport const IndicatorsContainer = forwardRef<HTMLDivElement, React.PropsWithChildren>((props, ref) => {\n  const { children } = props;\n  const theme = useTheme2();\n  const styles = getInputStyles({ theme, invalid: false });\n\n  return (\n    <div\n      className={cx(\n        styles.suffix,\n        css({\n          position: 'relative',\n        })\n      )}\n      ref={ref}\n    >\n      {children}\n    </div>\n  );\n});\n\nIndicatorsContainer.displayName = 'IndicatorsContainer';\n","import { css, cx } from '@emotion/css';\nimport { forwardRef } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { inputPadding } from '../Forms/commonStyles';\nimport { getInputStyles } from '../Input/Input';\n\ninterface InputControlProps {\n  /** Show an icon as a prefix in the input */\n  prefix?: JSX.Element | string | null;\n  focused: boolean;\n  invalid: boolean;\n  disabled: boolean;\n  innerProps: JSX.IntrinsicElements['div'];\n}\n\nexport const InputControl = forwardRef<HTMLDivElement, React.PropsWithChildren<InputControlProps>>(\n  function InputControl({ focused, invalid, disabled, children, innerProps, prefix, ...otherProps }, ref) {\n    const styles = useStyles2(getInputControlStyles, invalid, !!prefix);\n\n    return (\n      <div className={styles.input} {...innerProps} ref={ref}>\n        {prefix && <div className={cx(styles.prefix)}>{prefix}</div>}\n        {children}\n      </div>\n    );\n  }\n);\n\nconst getInputControlStyles = (theme: GrafanaTheme2, invalid: boolean, withPrefix: boolean) => {\n  const styles = getInputStyles({ theme, invalid });\n\n  return {\n    input: cx(\n      inputPadding(theme),\n      css({\n        width: '100%',\n        maxWidth: '100%',\n        display: 'flex',\n        flexDirection: 'row',\n        alignItems: 'center',\n        flexWrap: 'wrap',\n        justifyContent: 'space-between',\n        paddingRight: 0,\n        position: 'relative',\n        boxSizing: 'border-box',\n      }),\n      withPrefix &&\n        css({\n          paddingLeft: 0,\n        })\n    ),\n    prefix: cx(\n      styles.prefix,\n      css({\n        position: 'relative',\n      })\n    ),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, colorManipulator, deprecationWarning } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles, getMouseFocusStyles } from '../../themes/mixins';\nimport { IconName, IconSize, IconType } from '../../types/icon';\nimport { ComponentSize } from '../../types/size';\nimport { IconRenderer } from '../Button/Button';\nimport { getSvgSize } from '../Icon/utils';\nimport { Tooltip } from '../Tooltip/Tooltip';\nimport { PopoverContent, TooltipPlacement } from '../Tooltip/types';\n\nexport type IconButtonVariant = 'primary' | 'secondary' | 'destructive';\n\ntype LimitedIconSize = ComponentSize | 'xl';\n\ninterface BaseProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'aria-label'> {\n  /** Name of the icon **/\n  name: IconName;\n  /** Icon size - sizes xxl and xxxl are deprecated and when used being decreased to xl*/\n  size?: IconSize;\n  /** Type of the icon - mono or default */\n  iconType?: IconType;\n  /** Variant to change the color of the Icon */\n  variant?: IconButtonVariant;\n}\n\nexport interface BasePropsWithTooltip extends BaseProps {\n  /** Tooltip content to display on hover and as the aria-label */\n  tooltip: PopoverContent;\n  /** Position of the tooltip */\n  tooltipPlacement?: TooltipPlacement;\n}\n\ninterface BasePropsWithAriaLabel extends BaseProps {\n  /** @deprecated use aria-label instead*/\n  ariaLabel?: string;\n  /** Text available only for screen readers. No tooltip will be set in this case. */\n  ['aria-label']: string;\n}\n\nexport type Props = BasePropsWithTooltip | BasePropsWithAriaLabel;\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, Props>((props, ref) => {\n  const { size = 'md', variant = 'secondary' } = props;\n  let limitedIconSize: LimitedIconSize;\n\n  // very large icons (xl to xxxl) are unified to size xl\n  if (size === 'xxl' || size === 'xxxl') {\n    deprecationWarning('IconButton', 'size=\"xxl\" and size=\"xxxl\"', 'size=\"xl\"');\n    limitedIconSize = 'xl';\n  } else {\n    limitedIconSize = size;\n  }\n\n  const styles = useStyles2(getStyles, limitedIconSize, variant);\n\n  let ariaLabel: string | undefined;\n  let buttonRef: typeof ref | undefined;\n\n  if ('tooltip' in props) {\n    const { tooltip } = props;\n    ariaLabel = typeof tooltip === 'string' ? tooltip : undefined;\n  } else if ('ariaLabel' in props || 'aria-label' in props) {\n    const { ariaLabel: deprecatedAriaLabel, ['aria-label']: ariaLabelProp } = props;\n    ariaLabel = ariaLabelProp || deprecatedAriaLabel;\n    buttonRef = ref;\n  }\n\n  // When using tooltip, ref is forwarded to Tooltip component instead for https://github.com/grafana/grafana/issues/65632\n  if ('tooltip' in props) {\n    const { name, iconType, className, tooltip, tooltipPlacement, ...restProps } = props;\n    return (\n      <Tooltip ref={ref} content={tooltip} placement={tooltipPlacement}>\n        <button\n          {...restProps}\n          ref={buttonRef}\n          aria-label={ariaLabel}\n          className={cx(styles.button, className)}\n          type=\"button\"\n        >\n          <IconRenderer icon={name} size={limitedIconSize} className={styles.icon} iconType={iconType} />\n        </button>\n      </Tooltip>\n    );\n  } else {\n    const { name, iconType, className, ...restProps } = props;\n    return (\n      <button\n        {...restProps}\n        ref={buttonRef}\n        aria-label={ariaLabel}\n        className={cx(styles.button, className)}\n        type=\"button\"\n      >\n        <IconRenderer icon={name} size={limitedIconSize} className={styles.icon} iconType={iconType} />\n      </button>\n    );\n  }\n});\n\nIconButton.displayName = 'IconButton';\n\nconst getStyles = (theme: GrafanaTheme2, size: IconSize, variant: IconButtonVariant) => {\n  // overall size of the IconButton on hover\n  // theme.spacing.gridSize originates from 2*4px for padding and letting the IconSize generally decide on the hoverSize\n  const hoverSize = getSvgSize(size) + theme.spacing.gridSize;\n\n  let iconColor = theme.colors.text.primary;\n\n  if (variant === 'primary') {\n    iconColor = theme.colors.primary.text;\n  } else if (variant === 'destructive') {\n    iconColor = theme.colors.error.text;\n  }\n\n  return {\n    button: css({\n      zIndex: 0,\n      position: 'relative',\n      margin: `0 ${theme.spacing.x0_5} 0 0`,\n      boxShadow: 'none',\n      border: 'none',\n      display: 'inline-flex',\n      background: 'transparent',\n      justifyContent: 'center',\n      alignItems: 'center',\n      padding: 0,\n      color: iconColor,\n\n      '&[disabled], &:disabled': {\n        cursor: 'not-allowed',\n        color: theme.colors.action.disabledText,\n        opacity: 0.65,\n      },\n\n      '&:before': {\n        zIndex: -1,\n        position: 'absolute',\n        opacity: 0,\n        width: `${hoverSize}px`,\n        height: `${hoverSize}px`,\n        borderRadius: theme.shape.radius.default,\n        content: '\"\"',\n        [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n          transitionDuration: '0.2s',\n          transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\n          transitionProperty: 'opacity',\n        },\n      },\n\n      '&:focus, &:focus-visible': getFocusStyles(theme),\n\n      '&:focus:not(:focus-visible)': getMouseFocusStyles(theme),\n\n      '&:hover': {\n        '&:before': {\n          backgroundColor:\n            variant === 'secondary' ? theme.colors.action.hover : colorManipulator.alpha(iconColor, 0.12),\n          opacity: 1,\n        },\n      },\n    }),\n    icon: css({\n      verticalAlign: 'baseline',\n    }),\n  };\n};\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { stylesFactory } from '../../themes/stylesFactory';\n\nexport const getSelectStyles = stylesFactory((theme: GrafanaTheme2) => {\n  return {\n    menu: css({\n      label: 'grafana-select-menu',\n      background: theme.components.dropdown.background,\n      borderRadius: theme.shape.radius.default,\n      boxShadow: theme.shadows.z3,\n      position: 'relative',\n      minWidth: '100%',\n      overflow: 'hidden',\n      zIndex: 1,\n    }),\n    option: css({\n      label: 'grafana-select-option',\n      padding: '8px',\n      position: 'relative',\n      display: 'flex',\n      alignItems: 'center',\n      flexDirection: 'row',\n      flexShrink: 0,\n      whiteSpace: 'nowrap',\n      cursor: 'pointer',\n      borderLeft: '2px solid transparent',\n      borderRadius: theme.shape.radius.default,\n\n      '&:hover': {\n        background: theme.colors.action.hover,\n        '@media (forced-colors: active), (prefers-contrast: more)': {\n          border: `1px solid ${theme.colors.primary.border}`,\n        },\n      },\n    }),\n    optionIcon: css({\n      marginRight: theme.spacing(1),\n    }),\n    optionImage: css({\n      label: 'grafana-select-option-image',\n      width: '16px',\n      marginRight: '10px',\n    }),\n    optionDescription: css({\n      label: 'grafana-select-option-description',\n      fontWeight: 'normal',\n      fontSize: theme.typography.size.sm,\n      color: theme.colors.text.secondary,\n      whiteSpace: 'normal',\n      lineHeight: theme.typography.body.lineHeight,\n    }),\n    optionBody: css({\n      label: 'grafana-select-option-body',\n      display: 'flex',\n      fontWeight: theme.typography.fontWeightMedium,\n      flexDirection: 'column',\n      flexGrow: 1,\n    }),\n    optionFocused: css({\n      label: 'grafana-select-option-focused',\n      background: theme.colors.action.focus,\n      '@media (forced-colors: active), (prefers-contrast: more)': {\n        border: `1px solid ${theme.colors.primary.border}`,\n      },\n    }),\n    optionSelected: css({\n      background: theme.colors.action.selected,\n      '&::before': {\n        backgroundImage: theme.colors.gradients.brandVertical,\n        borderRadius: theme.shape.radius.default,\n        content: '\" \"',\n        display: 'block',\n        height: '100%',\n        position: 'absolute',\n        transform: 'translateX(-50%)',\n        width: theme.spacing(0.5),\n        left: 0,\n      },\n    }),\n    optionDisabled: css({\n      label: 'grafana-select-option-disabled',\n      backgroundColor: theme.colors.action.disabledBackground,\n      color: theme.colors.action.disabledText,\n      cursor: 'not-allowed',\n    }),\n    singleValue: css({\n      label: 'grafana-select-single-value',\n      color: theme.components.input.text,\n      gridArea: '1 / 1 / 2 / 3',\n      whiteSpace: 'nowrap',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      boxSizing: 'border-box',\n      maxWidth: '100%',\n    }),\n    valueContainer: css({\n      label: 'grafana-select-value-container',\n      alignItems: 'center',\n      display: 'grid',\n      position: 'relative',\n      boxSizing: 'border-box',\n      flex: '1 1 0%',\n      outline: 'none',\n      overflow: 'hidden',\n    }),\n    valueContainerMulti: css({\n      label: 'grafana-select-value-container-multi',\n      flexWrap: 'wrap',\n      display: 'flex',\n    }),\n    valueContainerMultiNoWrap: css({\n      display: 'grid',\n      gridAutoFlow: 'column',\n    }),\n    loadingMessage: css({\n      label: 'grafana-select-loading-message',\n      padding: theme.spacing(1),\n      textAlign: 'center',\n      width: '100%',\n    }),\n    multiValueContainer: css({\n      label: 'grafana-select-multi-value-container',\n      display: 'flex',\n      alignItems: 'center',\n      lineHeight: 1,\n      background: theme.colors.background.secondary,\n      borderRadius: theme.shape.radius.default,\n      margin: theme.spacing(0.25, 1, 0.25, 0),\n      padding: theme.spacing(0.25, 0, 0.25, 1),\n      color: theme.colors.text.primary,\n      fontSize: theme.typography.size.sm,\n      overflow: 'hidden',\n      whiteSpace: 'nowrap',\n\n      '&:hover': {\n        background: theme.colors.emphasize(theme.colors.background.secondary),\n      },\n    }),\n    multiValueRemove: css({\n      label: 'grafana-select-multi-value-remove',\n      margin: theme.spacing(0, 0.5),\n      cursor: 'pointer',\n      svg: {\n        marginBottom: 0,\n      },\n    }),\n    singleValueRemove: css({\n      cursor: 'pointer',\n      '&:hover': {\n        color: theme.colors.text.primary,\n      },\n    }),\n    groupHeader: css({\n      padding: theme.spacing(1, 1, 1, 0.75),\n      borderLeft: '2px solid transparent',\n    }),\n    group: css({\n      '&:not(:first-child)': {\n        borderTop: `1px solid ${theme.colors.border.weak}`,\n      },\n      // ensure there's a bottom border if there are options following the group\n      ':has(+ [role=\"option\"])': {\n        borderBottom: `1px solid ${theme.colors.border.weak}`,\n      },\n    }),\n    toggleAllButton: css({\n      width: '100%',\n      border: 0,\n      padding: 0,\n      textAlign: 'left',\n    }),\n  };\n});\n","import * as React from 'react';\n\nimport { t } from '@grafana/i18n';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { IconButton, Props as IconButtonProps } from '../IconButton/IconButton';\n\nimport { getSelectStyles } from './getSelectStyles';\n\ninterface MultiValueContainerProps {\n  innerProps: JSX.IntrinsicElements['div'];\n}\n\nexport const MultiValueContainer = ({ innerProps, children }: React.PropsWithChildren<MultiValueContainerProps>) => {\n  const theme = useTheme2();\n  const styles = getSelectStyles(theme);\n\n  return (\n    <div {...innerProps} className={styles.multiValueContainer}>\n      {children}\n    </div>\n  );\n};\n\nexport type MultiValueRemoveProps = {\n  innerProps: IconButtonProps;\n};\n\nexport const MultiValueRemove = ({ children, innerProps }: React.PropsWithChildren<MultiValueRemoveProps>) => {\n  const theme = useTheme2();\n  const styles = getSelectStyles(theme);\n  return (\n    <IconButton\n      {...innerProps}\n      name=\"times\"\n      size=\"sm\"\n      className={styles.multiValueRemove}\n      tooltip={t('grafana-ui.select.multi-value-remove', 'Remove')}\n    />\n  );\n};\n","import { css, cx } from '@emotion/css';\nimport { components, ContainerProps as BaseContainerProps, GroupBase } from 'react-select';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { sharedInputStyle } from '../Forms/commonStyles';\nimport { getInputStyles } from '../Input/Input';\n\nimport { CustomComponentProps } from './types';\n\n// prettier-ignore\nexport type SelectContainerProps<Option, isMulti extends boolean, Group extends GroupBase<Option>> =\n  BaseContainerProps<Option, isMulti, Group> & CustomComponentProps<Option, isMulti, Group>;\n\nexport const SelectContainer = <Option, isMulti extends boolean, Group extends GroupBase<Option>>(\n  props: SelectContainerProps<Option, isMulti, Group>\n) => {\n  const {\n    isDisabled,\n    isFocused,\n    children,\n    selectProps: { invalid = false },\n  } = props;\n\n  const styles = useStyles2(getSelectContainerStyles, isFocused, isDisabled, invalid);\n\n  return (\n    <components.SelectContainer {...props} className={cx(styles.wrapper, props.className)}>\n      {children}\n    </components.SelectContainer>\n  );\n};\n\nconst getSelectContainerStyles = (theme: GrafanaTheme2, focused: boolean, disabled: boolean, invalid: boolean) => {\n  const styles = getInputStyles({ theme, invalid });\n\n  return {\n    wrapper: cx(\n      styles.wrapper,\n      sharedInputStyle(theme, invalid),\n      focused && css(getFocusStyles(theme)),\n      disabled && styles.inputDisabled,\n      css({\n        position: 'relative',\n        boxSizing: 'border-box',\n        /* The display property is set by the styles prop in SelectBase because it's dependant on the width prop  */\n        flexDirection: 'row',\n        flexWrap: 'wrap',\n        alignItems: 'stretch',\n        justifyContent: 'space-between',\n        minHeight: theme.spacing(theme.components.height.md),\n        height: 'auto',\n        maxWidth: '100%',\n\n        /* Input padding is applied to the InputControl so the menu is aligned correctly */\n        padding: 0,\n        cursor: disabled ? 'not-allowed' : 'pointer',\n      })\n    ),\n  };\n};\n","import * as React from 'react';\nimport {\n  ActionMeta as SelectActionMeta,\n  CommonProps as ReactSelectCommonProps,\n  GroupBase,\n  OptionsOrGroups,\n} from 'react-select';\n\nimport { SelectableValue } from '@grafana/data';\n\nexport type SelectValue<T> = T | SelectableValue<T> | T[] | Array<SelectableValue<T>>;\nexport type ActionMeta = SelectActionMeta<{}>;\nexport type InputActionMeta = {\n  action: 'set-value' | 'input-change' | 'input-blur' | 'menu-close';\n};\nexport type LoadOptionsCallback<T> = (options: Array<SelectableValue<T>>) => void;\n\nexport enum ToggleAllState {\n  allSelected = 'allSelected',\n  indeterminate = 'indeterminate',\n  noneSelected = 'noneSelected',\n}\n\nexport interface SelectCommonProps<T> {\n  /** Aria label applied to the input field */\n  ['aria-label']?: string;\n  ['data-testid']?: string;\n  allowCreateWhileLoading?: boolean;\n  allowCustomValue?: boolean;\n  /** Focus is set to the Select when rendered*/\n  autoFocus?: boolean;\n  backspaceRemovesValue?: boolean;\n  blurInputOnSelect?: boolean;\n  captureMenuScroll?: boolean;\n  className?: string;\n  closeMenuOnSelect?: boolean;\n  /** Used for custom components. For more information, see `react-select` */\n  components?: any;\n  /** Sets the position of the createOption element in your options list. Defaults to 'last' */\n  createOptionPosition?: 'first' | 'last';\n  defaultValue?: any;\n  disabled?: boolean;\n  filterOption?: (option: SelectableValue<T>, searchQuery: string) => boolean;\n  formatOptionLabel?: (item: SelectableValue<T>, formatOptionMeta: FormatOptionLabelMeta<T>) => React.ReactNode;\n  /** Function for formatting the text that is displayed when creating a new value*/\n  formatCreateLabel?: (input: string) => React.ReactNode;\n  getOptionLabel?: (item: SelectableValue<T>) => React.ReactNode;\n  getOptionValue?: (item: SelectableValue<T>) => T | undefined;\n  hideSelectedOptions?: boolean;\n  inputValue?: string;\n  invalid?: boolean;\n  isClearable?: boolean;\n  /** The id to set on the SelectContainer component. To set the id for a label (with htmlFor), @see inputId instead */\n  id?: string;\n  isLoading?: boolean;\n  isMulti?: boolean;\n  /** The id of the search input. Use this to set a matching label with htmlFor */\n  inputId?: string;\n  isOpen?: boolean;\n  /** Disables the possibility to type into the input*/\n  isSearchable?: boolean;\n  showAllSelectedWhenOpen?: boolean;\n  maxMenuHeight?: number;\n  minMenuHeight?: number;\n  maxVisibleValues?: number;\n  menuPlacement?: 'auto' | 'bottom' | 'top';\n  menuPosition?: 'fixed' | 'absolute';\n  /**\n   * Setting to false will prevent the menu from portalling to the body.\n   */\n  menuShouldPortal?: boolean;\n  /** The message to display when no options could be found */\n  noOptionsMessage?: string;\n  onBlur?: () => void;\n  onChange: (value: SelectableValue<T>, actionMeta: ActionMeta) => {} | void;\n  onCloseMenu?: () => void;\n  /** allowCustomValue must be enabled. Function decides what to do with that custom value. */\n  onCreateOption?: (value: string) => void;\n  onInputChange?: (value: string, actionMeta: InputActionMeta) => void;\n  onKeyDown?: (event: React.KeyboardEvent) => void;\n  /** Callback which fires when the user scrolls to the bottom of the menu */\n  onMenuScrollToBottom?: (event: WheelEvent | TouchEvent) => void;\n  /** Callback which fires when the user scrolls to the top of the menu */\n  onMenuScrollToTop?: (event: WheelEvent | TouchEvent) => void;\n  onOpenMenu?: () => void;\n  onFocus?: () => void;\n  toggleAllOptions?: {\n    enabled: boolean;\n    optionsFilter?: (v: SelectableValue<T>) => boolean;\n    determineToggleAllState?: (\n      selectedValues: Array<SelectableValue<T>>,\n      options: Array<SelectableValue<T>>\n    ) => ToggleAllState;\n  };\n  openMenuOnFocus?: boolean;\n  options?: Array<SelectableValue<T>>;\n  placeholder?: string;\n  /** item to be rendered in front of the input */\n  prefix?: JSX.Element | string | null;\n  /** Use a custom element to control Select. A proper ref to the renderControl is needed if 'portal' isn't set to null*/\n  renderControl?: ControlComponent<T>;\n  tabSelectsValue?: boolean;\n  value?: T | SelectValue<T> | null;\n  /** Will wrap the MenuList in a react-window FixedSizeVirtualList for improved performance, does not support options with \"description\" properties */\n  virtualized?: boolean;\n  /** Sets the width to a multiple of 8px. Should only be used with inline forms. Setting width of the container is preferred in other cases.*/\n  width?: number | 'auto';\n  isOptionDisabled?: (option: SelectableValue<T>) => boolean;\n  /** allowCustomValue must be enabled. Determines whether the \"create new\" option should be displayed based on the current input value, select value and options array. */\n  isValidNewOption?: (\n    inputValue: string,\n    value: SelectableValue<T> | null,\n    options: OptionsOrGroups<SelectableValue<T>, GroupBase<SelectableValue<T>>>\n  ) => boolean;\n  /** Message to display isLoading=true*/\n  loadingMessage?: string;\n  /** Disables wrapping of multi value values when closed */\n  noMultiValueWrap?: boolean;\n  /** Use a custom ref because generic component as output of React.forwardRef is not directly possible */\n  selectRef?: React.Ref<HTMLElement>;\n}\n\nexport interface SelectAsyncProps<T> {\n  /** When specified as boolean the loadOptions will execute when component is mounted */\n  defaultOptions?: boolean | Array<SelectableValue<T>>;\n\n  /** Asynchronously load select options */\n  loadOptions?: (query: string, cb?: LoadOptionsCallback<T>) => Promise<Array<SelectableValue<T>>> | void;\n\n  /** If cacheOptions is true, then the loaded data will be cached. The cache will remain until cacheOptions changes value. */\n  cacheOptions?: boolean;\n  /** Message to display when options are loading */\n  loadingMessage?: string;\n}\n\n/** The VirtualizedSelect component uses a slightly different SelectableValue, description and other props are not supported */\nexport interface VirtualizedSelectProps<T> extends Omit<SelectCommonProps<T>, 'virtualized'> {\n  options?: Array<Pick<SelectableValue<T>, 'label' | 'value'>>;\n}\n\n/** The AsyncVirtualizedSelect component uses a slightly different SelectableValue, description and other props are not supported */\nexport interface VirtualizedSelectAsyncProps<T>\n  extends Omit<SelectCommonProps<T>, 'virtualized'>,\n    SelectAsyncProps<T> {}\n\nexport interface MultiSelectCommonProps<T> extends Omit<SelectCommonProps<T>, 'onChange' | 'isMulti' | 'value'> {\n  value?: Array<SelectableValue<T>> | T[];\n  onChange: (item: Array<SelectableValue<T>>, actionMeta: ActionMeta) => {} | void;\n}\n\n// This is the type of *our* SelectBase component, not ReactSelect's prop, although\n// they should be mostly compatible.\nexport interface SelectBaseProps<T> extends SelectCommonProps<T>, SelectAsyncProps<T> {\n  invalid?: boolean;\n}\n\n// This is used for the `renderControl` prop on *our* SelectBase component\nexport interface CustomControlProps<T> {\n  ref: React.Ref<any>;\n  isOpen: boolean;\n  /** Currently selected value */\n  value?: SelectableValue<T>;\n  /** onClick will be automatically passed to custom control allowing menu toggle */\n  onClick: () => void;\n  /** onBlur will be automatically passed to custom control closing the menu on element blur */\n  onBlur: () => void;\n  disabled: boolean;\n  invalid: boolean;\n}\n\nexport type ControlComponent<T> = React.ComponentType<CustomControlProps<T>>;\n\nexport interface SelectableOptGroup<T = any> {\n  label: string;\n  options: Array<SelectableValue<T>>;\n\n  [key: string]: any;\n}\n\nexport type SelectOptions<T = any> =\n  | SelectableValue<T>\n  | Array<SelectableValue<T> | SelectableOptGroup<T> | Array<SelectableOptGroup<T>>>;\n\nexport type FormatOptionLabelMeta<T> = { context: string; inputValue: string; selectValue: Array<SelectableValue<T>> };\n\n// This is the type of `selectProps` our custom components (like SelectContainer, etc) recieve\n// It's slightly different to the base react select props because we pass in additional props directly to\n// react select\nexport type ReactSelectProps<Option, IsMulti extends boolean, Group extends GroupBase<Option>> = ReactSelectCommonProps<\n  Option,\n  IsMulti,\n  Group\n>['selectProps'] &\n  SelectCommonProps<Option> & {\n    autoWidth: boolean;\n  };\n\n// Use this type when implementing custom components for react select.\n// See SelectContainerProps in SelectContainer.tsx\nexport interface CustomComponentProps<Option, isMulti extends boolean, Group extends GroupBase<Option>> {\n  selectProps: ReactSelectProps<Option, isMulti, Group>;\n}\n","import { css, cx } from '@emotion/css';\nimport { max } from 'lodash';\nimport { RefCallback, useLayoutEffect, useMemo, useRef } from 'react';\nimport * as React from 'react';\nimport { FixedSizeList as List } from 'react-window';\n\nimport { SelectableValue, toIconName } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { clearButtonStyles } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\nimport { ScrollContainer } from '../ScrollContainer/ScrollContainer';\n\nimport { getSelectStyles } from './getSelectStyles';\nimport { ToggleAllState } from './types';\n\nexport interface ToggleAllOptions {\n  state: ToggleAllState;\n  selectAllClicked: () => void;\n  selectedCount?: number;\n}\n\ninterface SelectMenuProps {\n  maxHeight: number;\n  innerRef: RefCallback<HTMLDivElement>;\n  innerProps: {};\n  selectProps: {\n    toggleAllOptions?: ToggleAllOptions;\n    components?: { Option?: (props: React.PropsWithChildren<SelectMenuOptionProps<unknown>>) => JSX.Element };\n  };\n}\n\nexport const SelectMenu = ({\n  children,\n  maxHeight,\n  innerRef,\n  innerProps,\n  selectProps,\n}: React.PropsWithChildren<SelectMenuProps>) => {\n  const theme = useTheme2();\n  const styles = getSelectStyles(theme);\n\n  const { toggleAllOptions, components } = selectProps;\n\n  const optionsElement = components?.Option ?? SelectMenuOptions;\n\n  return (\n    <div\n      {...innerProps}\n      data-testid={selectors.components.Select.menu}\n      className={styles.menu}\n      style={{ maxHeight }}\n      aria-label={t('grafana-ui.select.menu-label', 'Select options menu')}\n    >\n      <ScrollContainer ref={innerRef} maxHeight=\"inherit\" overflowX=\"hidden\" showScrollIndicators padding={0.5}>\n        {toggleAllOptions && (\n          <ToggleAllOption\n            state={toggleAllOptions.state}\n            optionComponent={optionsElement}\n            selectedCount={toggleAllOptions.selectedCount}\n            onClick={toggleAllOptions.selectAllClicked}\n          ></ToggleAllOption>\n        )}\n        {children}\n      </ScrollContainer>\n    </div>\n  );\n};\n\nSelectMenu.displayName = 'SelectMenu';\n\nconst VIRTUAL_LIST_ITEM_HEIGHT = 37;\nconst VIRTUAL_LIST_WIDTH_ESTIMATE_MULTIPLIER = 8;\nconst VIRTUAL_LIST_PADDING = 8;\n// Some list items have icons or checkboxes so we need some extra width\nconst VIRTUAL_LIST_WIDTH_EXTRA = 58;\n\n// A virtualized version of the SelectMenu, descriptions for SelectableValue options not supported since those are of a variable height.\n//\n// To support the virtualized list we have to \"guess\" the width of the menu container based on the longest available option.\n// the reason for this is because all of the options will be positioned absolute, this takes them out of the document and no space\n// is created for them, thus the container can't grow to accomodate.\n//\n// VIRTUAL_LIST_ITEM_HEIGHT and WIDTH_ESTIMATE_MULTIPLIER are both magic numbers.\n// Some characters (such as emojis and other unicode characters) may consist of multiple code points in which case the width would be inaccurate (but larger than needed).\ninterface VirtualSelectMenuProps<T> {\n  children: React.ReactNode;\n  innerRef: React.Ref<HTMLDivElement>;\n  focusedOption: T;\n  innerProps: JSX.IntrinsicElements['div'];\n  options: T[];\n  maxHeight: number;\n  selectProps: {\n    toggleAllOptions?: ToggleAllOptions;\n    components?: { Option?: (props: React.PropsWithChildren<SelectMenuOptionProps<unknown>>) => JSX.Element };\n  };\n}\n\nexport const VirtualizedSelectMenu = ({\n  children,\n  maxHeight,\n  innerRef: scrollRef,\n  options,\n  selectProps,\n  focusedOption,\n}: VirtualSelectMenuProps<SelectableValue>) => {\n  const theme = useTheme2();\n  const styles = getSelectStyles(theme);\n  const listRef = useRef<List>(null);\n  const { toggleAllOptions, components } = selectProps;\n\n  const optionComponent = components?.Option ?? SelectMenuOptions;\n\n  // we need to check for option groups (categories)\n  // these are top level options with child options\n  // if they exist, flatten the list of options\n  const flattenedOptions = useMemo(\n    () => options.flatMap((option) => (option.options ? [option, ...option.options] : [option])),\n    [options]\n  );\n\n  // scroll the focused option into view when navigating with keyboard\n  const focusedIndex = flattenedOptions.findIndex(\n    (option: SelectableValue<unknown>) => option.value === focusedOption?.value\n  );\n  useLayoutEffect(() => {\n    listRef.current?.scrollToItem(focusedIndex);\n  }, [focusedIndex]);\n\n  if (!Array.isArray(children)) {\n    return null;\n  }\n\n  // flatten the children to account for any categories\n  // these will have array children that are the individual options\n  const flattenedChildren = children.flatMap((child, index) => {\n    if (hasArrayChildren(child)) {\n      // need to remove the children from the category else they end up in the DOM twice\n      const childWithoutChildren = React.cloneElement(child, {\n        children: null,\n      });\n      return [\n        childWithoutChildren,\n        ...child.props.children.slice(0, -1),\n        // add a bottom divider to the last item in the category\n        React.cloneElement(child.props.children.at(-1), {\n          innerProps: {\n            ...child.props.children.at(-1).props.innerProps,\n            style: {\n              borderBottom: `1px solid ${theme.colors.border.weak}`,\n              height: VIRTUAL_LIST_ITEM_HEIGHT,\n            },\n          },\n        }),\n      ];\n    }\n    return [child];\n  });\n\n  if (toggleAllOptions) {\n    flattenedChildren.unshift(\n      <ToggleAllOption\n        optionComponent={optionComponent}\n        state={toggleAllOptions.state}\n        selectedCount={toggleAllOptions.selectedCount}\n        onClick={toggleAllOptions.selectAllClicked}\n      ></ToggleAllOption>\n    );\n  }\n\n  let longestOption = max(flattenedOptions.map((option) => option.label?.length)) ?? 0;\n  if (toggleAllOptions && longestOption < 12) {\n    longestOption = 12;\n  }\n  const widthEstimate =\n    longestOption * VIRTUAL_LIST_WIDTH_ESTIMATE_MULTIPLIER + VIRTUAL_LIST_PADDING * 2 + VIRTUAL_LIST_WIDTH_EXTRA;\n  const heightEstimate = Math.min(flattenedChildren.length * VIRTUAL_LIST_ITEM_HEIGHT, maxHeight);\n\n  return (\n    <List\n      outerRef={scrollRef}\n      ref={listRef}\n      className={styles.menu}\n      height={heightEstimate}\n      width={widthEstimate}\n      aria-label={t('grafana-ui.select.menu-label', 'Select options menu')}\n      itemCount={flattenedChildren.length}\n      itemSize={VIRTUAL_LIST_ITEM_HEIGHT}\n    >\n      {({ index, style }) => <div style={{ ...style, overflow: 'hidden' }}>{flattenedChildren[index]}</div>}\n    </List>\n  );\n};\n\n// check if a child has array children (and is therefore a react-select group)\n// we need to flatten these so the correct count and elements are passed to the virtualized list\nconst hasArrayChildren = (child: React.ReactNode) => {\n  return React.isValidElement(child) && Array.isArray(child.props.children);\n};\n\nVirtualizedSelectMenu.displayName = 'VirtualizedSelectMenu';\n\ninterface SelectMenuOptionProps<T> {\n  isDisabled: boolean;\n  isFocused: boolean;\n  isSelected: boolean;\n  indeterminate?: boolean;\n  innerProps: JSX.IntrinsicElements['div'];\n  innerRef: RefCallback<HTMLDivElement>;\n  renderOptionLabel?: (value: SelectableValue<T>) => JSX.Element;\n  data: SelectableValue<T>;\n}\n\nconst ToggleAllOption = ({\n  state,\n  onClick,\n  selectedCount,\n  optionComponent,\n}: {\n  state: ToggleAllState;\n  onClick: () => void;\n  selectedCount?: number;\n  optionComponent: (props: React.PropsWithChildren<SelectMenuOptionProps<unknown>>) => JSX.Element;\n}) => {\n  const theme = useTheme2();\n  const styles = getSelectStyles(theme);\n\n  return (\n    <button\n      data-testid={selectors.components.Select.toggleAllOptions}\n      className={css(clearButtonStyles(theme), styles.toggleAllButton, {\n        height: VIRTUAL_LIST_ITEM_HEIGHT,\n      })}\n      onClick={onClick}\n    >\n      {optionComponent({\n        isDisabled: false,\n        isSelected: state === ToggleAllState.allSelected,\n        isFocused: false,\n        data: {},\n        indeterminate: state === ToggleAllState.indeterminate,\n        innerRef: () => {},\n        innerProps: {},\n        children: (\n          <>\n            <Trans i18nKey=\"select.select-menu.selected-count\">Selected </Trans>\n            {`(${selectedCount ?? 0})`}\n          </>\n        ),\n      })}\n    </button>\n  );\n};\n\nexport const SelectMenuOptions = ({\n  children,\n  data,\n  innerProps,\n  innerRef,\n  isFocused,\n  isSelected,\n  renderOptionLabel,\n}: React.PropsWithChildren<SelectMenuOptionProps<unknown>>) => {\n  const theme = useTheme2();\n  const styles = getSelectStyles(theme);\n  const icon = data.icon ? toIconName(data.icon) : undefined;\n  // We are removing onMouseMove and onMouseOver from innerProps because they cause the whole\n  // list to re-render everytime the user hovers over an option. This is a performance issue.\n  // See https://github.com/JedWatson/react-select/issues/3128#issuecomment-451936743\n  const { onMouseMove, onMouseOver, ...rest } = innerProps;\n\n  return (\n    <div\n      ref={innerRef}\n      className={cx(\n        styles.option,\n        isFocused && styles.optionFocused,\n        isSelected && styles.optionSelected,\n        data.isDisabled && styles.optionDisabled\n      )}\n      {...rest}\n      data-testid={selectors.components.Select.option}\n      title={data.title}\n    >\n      {icon && <Icon name={icon} className={styles.optionIcon} />}\n      {data.imgUrl && <img className={styles.optionImage} src={data.imgUrl} alt={data.label || String(data.value)} />}\n      <div className={styles.optionBody}>\n        <span>{renderOptionLabel ? renderOptionLabel(data) : children}</span>\n        {data.description && <div className={styles.optionDescription}>{data.description}</div>}\n        {data.component && <data.component />}\n      </div>\n    </div>\n  );\n};\n\nSelectMenuOptions.displayName = 'SelectMenuOptions';\n","import { GroupProps } from 'react-select';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { getSelectStyles } from './getSelectStyles';\n\nexport const SelectOptionGroup = ({\n  children,\n  cx,\n  getClassNames,\n  getStyles,\n  Heading,\n  headingProps,\n  label,\n  selectProps,\n  theme,\n}: GroupProps) => {\n  const styles = useStyles2(getSelectStyles);\n  return (\n    <div className={styles.group}>\n      <Heading\n        cx={cx}\n        getClassNames={getClassNames}\n        getStyles={getStyles}\n        selectProps={selectProps}\n        theme={theme}\n        {...headingProps}\n      >\n        {label}\n      </Heading>\n      {children}\n    </div>\n  );\n};\n","import { useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport * as React from 'react';\nimport ReactDOMServer from 'react-dom/server';\n\nimport { Tooltip } from '../Tooltip/Tooltip';\n\ninterface TruncatedTextProps {\n  childElement: (ref: React.ForwardedRef<HTMLElement> | undefined) => React.ReactElement;\n  children: NonNullable<React.ReactNode>;\n}\n\nexport const TruncatedText = React.forwardRef<HTMLElement, TruncatedTextProps>(({ childElement, children }, ref) => {\n  const [isOverflowing, setIsOverflowing] = useState(false);\n  const internalRef = useRef<HTMLElement>(null);\n\n  // Wire up the forwarded ref to the internal ref\n  useImperativeHandle<HTMLElement | null, HTMLElement | null>(ref, () => internalRef.current);\n\n  const resizeObserver = useMemo(\n    () =>\n      new ResizeObserver((entries) => {\n        for (const entry of entries) {\n          if (entry.target.clientWidth && entry.target.scrollWidth) {\n            if (entry.target.scrollWidth > entry.target.clientWidth) {\n              setIsOverflowing(true);\n            }\n            if (entry.target.scrollWidth <= entry.target.clientWidth) {\n              setIsOverflowing(false);\n            }\n          }\n        }\n      }),\n    []\n  );\n\n  useEffect(() => {\n    const { current } = internalRef;\n    if (current) {\n      resizeObserver.observe(current);\n    }\n    return () => {\n      resizeObserver.disconnect();\n    };\n  }, [setIsOverflowing, resizeObserver]);\n\n  const getTooltipText = (children: NonNullable<React.ReactNode>) => {\n    if (typeof children === 'string') {\n      return children;\n    }\n    const html = ReactDOMServer.renderToStaticMarkup(<>{children}</>);\n    return html.replace(/(<([^>]+)>)/gi, '');\n  };\n\n  if (isOverflowing) {\n    return (\n      <Tooltip ref={internalRef} content={getTooltipText(children)}>\n        {childElement(undefined)}\n      </Tooltip>\n    );\n  } else {\n    return childElement(internalRef);\n  }\n});\n\nTruncatedText.displayName = 'TruncatedText';\n","import { GrafanaTheme2, ThemeTypographyVariantTypes } from '@grafana/data';\n\nimport { TextProps } from './Text';\n\nexport const customWeight = (weight: TextProps['weight'], theme: GrafanaTheme2): number => {\n  switch (weight) {\n    case 'bold':\n      return theme.typography.fontWeightBold;\n    case 'medium':\n      return theme.typography.fontWeightMedium;\n    case 'light':\n      return theme.typography.fontWeightLight;\n    case 'regular':\n    case undefined:\n      return theme.typography.fontWeightRegular;\n  }\n};\n\nexport const customColor = (color: TextProps['color'], theme: GrafanaTheme2): string | undefined => {\n  switch (color) {\n    case 'error':\n      return theme.colors.error.text;\n    case 'success':\n      return theme.colors.success.text;\n    case 'info':\n      return theme.colors.info.text;\n    case 'warning':\n      return theme.colors.warning.text;\n    default:\n      return color ? theme.colors.text[color] : undefined;\n  }\n};\n\nexport const customVariant = (\n  theme: GrafanaTheme2,\n  element: TextProps['element'],\n  variant?: keyof ThemeTypographyVariantTypes\n) => {\n  if (variant) {\n    return theme.typography[variant];\n  }\n  switch (element) {\n    //Span elements does not have a default variant to be able to take the parents style\n    case 'span':\n      return;\n    case 'h1':\n      return theme.typography.h1;\n    case 'h2':\n      return theme.typography.h2;\n    case 'h3':\n      return theme.typography.h3;\n    case 'h4':\n      return theme.typography.h4;\n    case 'h5':\n      return theme.typography.h5;\n    case 'h6':\n      return theme.typography.h6;\n    default:\n      return theme.typography.body;\n  }\n};\n","import { css } from '@emotion/css';\nimport { createElement, CSSProperties } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, ThemeTypographyVariantTypes } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { TruncatedText } from './TruncatedText';\nimport { customWeight, customColor, customVariant } from './utils';\n\nexport interface TextProps extends Omit<React.HTMLAttributes<HTMLElement>, 'className' | 'style'> {\n  /** Defines what HTML element is defined underneath. \"span\" by default */\n  element?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span' | 'p' | 'li';\n  /** What typograpy variant should be used for the component. Only use if default variant for the defined element is not what is needed */\n  variant?: keyof ThemeTypographyVariantTypes;\n  /** Override the default weight for the used variant */\n  weight?: 'light' | 'regular' | 'medium' | 'bold';\n  /** Color to use for text */\n  color?: keyof GrafanaTheme2['colors']['text'] | 'error' | 'success' | 'warning' | 'info';\n  /** Use to cut the text off with ellipsis if there isn't space to show all of it. On hover shows the rest of the text */\n  truncate?: boolean;\n  /** If true, show the text as italic. False by default */\n  italic?: boolean;\n  /** If true, numbers will have fixed width, useful for displaying tabular data. False by default */\n  tabular?: boolean;\n  /** Whether to align the text to left, center or right */\n  textAlignment?: CSSProperties['textAlign'];\n  children: NonNullable<React.ReactNode>;\n}\n\nexport const Text = React.forwardRef<HTMLElement, TextProps>(\n  (\n    { element = 'span', variant, weight, color, truncate, italic, textAlignment, children, tabular, ...restProps },\n    ref\n  ) => {\n    const styles = useStyles2(getTextStyles, element, variant, color, weight, truncate, italic, textAlignment, tabular);\n\n    const childElement = (ref: React.ForwardedRef<HTMLElement> | undefined) => {\n      return createElement(\n        element,\n        {\n          ...restProps,\n          style: undefined, // Remove the style prop to avoid overriding the styles\n          className: styles,\n          // When overflowing, the internalRef is passed to the tooltip, which forwards it to the child element\n          ref,\n        },\n        children\n      );\n    };\n\n    // A 'span' is an inline element, so it can't be truncated\n    // and it should be wrapped in a parent element that will show the tooltip\n    if (!truncate || element === 'span') {\n      return childElement(undefined);\n    }\n\n    return (\n      <TruncatedText\n        childElement={childElement}\n        // eslint-disable-next-line react/no-children-prop\n        children={children}\n        ref={ref}\n      />\n    );\n  }\n);\n\nText.displayName = 'Text';\n\nconst getTextStyles = (\n  theme: GrafanaTheme2,\n  element?: TextProps['element'],\n  variant?: keyof ThemeTypographyVariantTypes,\n  color?: TextProps['color'],\n  weight?: TextProps['weight'],\n  truncate?: TextProps['truncate'],\n  italic?: TextProps['italic'],\n  textAlignment?: TextProps['textAlignment'],\n  tabular?: TextProps['tabular']\n) => {\n  return css([\n    {\n      margin: 0,\n      padding: 0,\n      ...customVariant(theme, element, variant),\n    },\n    variant && {\n      ...theme.typography[variant],\n    },\n    color && {\n      color: customColor(color, theme),\n    },\n    weight && {\n      fontWeight: customWeight(weight, theme),\n    },\n    truncate && {\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      whiteSpace: 'nowrap',\n    },\n    italic && {\n      fontStyle: 'italic',\n    },\n    textAlignment && {\n      textAlign: textAlignment,\n    },\n    tabular && {\n      fontFeatureSettings: '\"tnum\"',\n    },\n  ]);\n};\n","import { GroupHeadingProps } from 'react-select';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Text } from '../Text/Text';\n\nimport { getSelectStyles } from './getSelectStyles';\n\nexport const SelectOptionGroupHeader = (props: GroupHeadingProps) => {\n  const styles = useStyles2(getSelectStyles);\n\n  return (\n    <div className={styles.groupHeader}>\n      <Text weight=\"bold\" variant=\"bodySmall\" color=\"secondary\">\n        {props.children ?? ''}\n      </Text>\n    </div>\n  );\n};\n","import { cx } from '@emotion/css';\nimport { isEqual } from 'lodash';\nimport { Component, createRef, ReactNode } from 'react';\nimport { ValueContainerProps as BaseValueContainerProps, type GroupBase } from 'react-select';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { withTheme2 } from '../../themes/ThemeContext';\n\nimport { getSelectStyles } from './getSelectStyles';\nimport type { CustomComponentProps } from './types';\n\ntype ValueContainerProps<Option, isMulti extends boolean, Group extends GroupBase<Option>> = BaseValueContainerProps<\n  Option,\n  isMulti,\n  Group\n> &\n  CustomComponentProps<Option, isMulti, Group>;\n\nclass UnthemedValueContainer<Option, isMulti extends boolean, Group extends GroupBase<Option>> extends Component<\n  ValueContainerProps<Option, isMulti, Group> & { theme: GrafanaTheme2 }\n> {\n  private ref = createRef<HTMLDivElement>();\n\n  componentDidUpdate(prevProps: ValueContainerProps<Option, isMulti, Group>) {\n    if (\n      this.ref.current &&\n      this.props.selectProps.autoWidth &&\n      !isEqual(prevProps.selectProps.value, this.props.selectProps.value)\n    ) {\n      // Reset in order to measure the new width\n      this.ref.current.style.minWidth = '0px';\n\n      const width = this.ref.current.offsetWidth;\n\n      this.ref.current.style.minWidth = `${width}px`;\n    }\n  }\n\n  render() {\n    const { children } = this.props;\n    const { selectProps } = this.props;\n\n    if (\n      selectProps &&\n      Array.isArray(children) &&\n      Array.isArray(children[0]) &&\n      selectProps.maxVisibleValues !== undefined &&\n      !(selectProps.showAllSelectedWhenOpen && selectProps.menuIsOpen)\n    ) {\n      const [valueChildren, ...otherChildren] = children;\n      const truncatedValues = valueChildren.slice(0, selectProps.maxVisibleValues);\n\n      return this.renderContainer([truncatedValues, ...otherChildren]);\n    }\n\n    return this.renderContainer(children);\n  }\n\n  renderContainer(children?: ReactNode) {\n    const { isMulti, theme, selectProps } = this.props;\n    const noWrap = this.props.selectProps?.noMultiValueWrap && !this.props.selectProps?.menuIsOpen;\n    const styles = getSelectStyles(theme);\n    const dataTestid = selectProps['data-testid'];\n    const className = cx(styles.valueContainer, {\n      [styles.valueContainerMulti]: isMulti && !noWrap,\n      [styles.valueContainerMultiNoWrap]: isMulti && noWrap,\n    });\n\n    return (\n      <div ref={this.ref} data-testid={dataTestid} className={className}>\n        {children}\n      </div>\n    );\n  }\n}\n\nexport const ValueContainer = withTheme2(UnthemedValueContainer);\n","import { SelectableValue } from '@grafana/data';\n\nimport { SelectableOptGroup } from './types';\n\n/**\n * Normalize the value format to SelectableValue[] | []. Only used for single select\n */\nexport const cleanValue = (\n  value: unknown,\n  options: Array<SelectableValue | SelectableOptGroup | SelectableOptGroup[]>\n) => {\n  if (Array.isArray(value)) {\n    const filtered = value.filter(Boolean);\n    return filtered?.length ? filtered : undefined;\n  }\n  if (typeof value === 'object') {\n    // we want to allow null through into here, so the Select value can be unset\n    return [value];\n  }\n  if (typeof value === 'string' || typeof value === 'number') {\n    const selectedValue = findSelectedValue(value, options);\n    if (selectedValue) {\n      return [selectedValue];\n    }\n  }\n  return undefined;\n};\n\n/**\n * Find the label for a string|number value inside array of options or optgroups\n */\nexport const findSelectedValue = (\n  value: string | number,\n  options: Array<SelectableValue | SelectableOptGroup | SelectableOptGroup[]>\n): SelectableValue | null => {\n  for (const option of options) {\n    if ('options' in option) {\n      let found = findSelectedValue(value, option.options);\n      if (found) {\n        return found;\n      }\n    } else if ('value' in option && option.value === value) {\n      return option;\n    }\n  }\n\n  return null;\n};\n\n/**\n * Omit descriptions from an array of options\n */\nexport const omitDescriptions = (options: SelectableValue[]): SelectableValue[] => {\n  return options.map(({ description, ...rest }) => rest);\n};\n","import { isArray, negate } from 'lodash';\nimport { ComponentProps, useCallback, useEffect, useRef, useState, useImperativeHandle } from 'react';\nimport * as React from 'react';\nimport {\n  default as ReactSelect,\n  IndicatorsContainerProps,\n  Props as ReactSelectProps,\n  ClearIndicatorProps,\n} from 'react-select';\nimport { default as ReactAsyncSelect } from 'react-select/async';\nimport { default as AsyncCreatable } from 'react-select/async-creatable';\nimport Creatable from 'react-select/creatable';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\n\nimport { CustomInput } from './CustomInput';\nimport { DropdownIndicator } from './DropdownIndicator';\nimport { IndicatorsContainer } from './IndicatorsContainer';\nimport { InputControl } from './InputControl';\nimport { MultiValueContainer, MultiValueRemove } from './MultiValue';\nimport { SelectContainer } from './SelectContainer';\nimport { SelectMenu, SelectMenuOptions, VirtualizedSelectMenu } from './SelectMenu';\nimport { SelectOptionGroup } from './SelectOptionGroup';\nimport { SelectOptionGroupHeader } from './SelectOptionGroupHeader';\nimport { Props, SingleValue } from './SingleValue';\nimport { ValueContainer } from './ValueContainer';\nimport { getSelectStyles } from './getSelectStyles';\nimport { useCustomSelectStyles } from './resetSelectStyles';\nimport { ActionMeta, InputActionMeta, SelectBaseProps, ToggleAllState } from './types';\nimport { cleanValue, findSelectedValue, omitDescriptions } from './utils';\n\nconst CustomControl = (props: any) => {\n  const {\n    children,\n    innerProps,\n    selectProps: { menuIsOpen, onMenuClose, onMenuOpen },\n    isFocused,\n    isMulti,\n    getValue,\n    innerRef,\n  } = props;\n  const selectProps = props.selectProps as SelectBaseProps<any>;\n\n  if (selectProps.renderControl) {\n    return React.createElement(selectProps.renderControl, {\n      isOpen: menuIsOpen,\n      value: isMulti ? getValue() : getValue()[0],\n      ref: innerRef,\n      onClick: menuIsOpen ? onMenuClose : onMenuOpen,\n      onBlur: onMenuClose,\n      disabled: !!selectProps.disabled,\n      invalid: !!selectProps.invalid,\n    });\n  }\n\n  return (\n    <InputControl\n      ref={innerRef}\n      innerProps={innerProps}\n      prefix={selectProps.prefix}\n      focused={isFocused}\n      invalid={!!selectProps.invalid}\n      disabled={!!selectProps.disabled}\n    >\n      {children}\n    </InputControl>\n  );\n};\n\ninterface SelectPropsWithExtras extends ReactSelectProps {\n  maxVisibleValues?: number | undefined;\n  showAllSelectedWhenOpen: boolean;\n  noMultiValueWrap?: boolean;\n}\n\nfunction determineToggleAllState(selectedValue: SelectableValue[], options: SelectableValue[]) {\n  if (options.length === selectedValue.length) {\n    return ToggleAllState.allSelected;\n  } else if (selectedValue.length === 0) {\n    return ToggleAllState.noneSelected;\n  } else {\n    return ToggleAllState.indeterminate;\n  }\n}\n\nexport function SelectBase<T, Rest = {}>({\n  allowCustomValue = false,\n  allowCreateWhileLoading = false,\n  'aria-label': ariaLabel,\n  'data-testid': dataTestid,\n  autoFocus = false,\n  backspaceRemovesValue = true,\n  blurInputOnSelect,\n  cacheOptions,\n  className,\n  closeMenuOnSelect = true,\n  components,\n  createOptionPosition = 'last',\n  defaultOptions,\n  defaultValue,\n  disabled = false,\n  filterOption,\n  formatCreateLabel,\n  getOptionLabel,\n  getOptionValue,\n  inputValue,\n  invalid,\n  isClearable = false,\n  id,\n  isLoading = false,\n  isMulti = false,\n  inputId,\n  isOpen,\n  isOptionDisabled,\n  isSearchable = true,\n  loadOptions,\n  loadingMessage = 'Loading options...',\n  maxMenuHeight = 300,\n  minMenuHeight,\n  maxVisibleValues,\n  menuPlacement = 'auto',\n  menuPosition,\n  menuShouldPortal = true,\n  noOptionsMessage = t('grafana-ui.select.no-options-label', 'No options found'),\n  onBlur,\n  onChange,\n  onCloseMenu,\n  onCreateOption,\n  onInputChange,\n  onKeyDown,\n  onMenuScrollToBottom,\n  onMenuScrollToTop,\n  onOpenMenu,\n  onFocus,\n  toggleAllOptions,\n  openMenuOnFocus = false,\n  options = [],\n  placeholder = t('grafana-ui.select.placeholder', 'Choose'),\n  prefix,\n  renderControl,\n  showAllSelectedWhenOpen = true,\n  tabSelectsValue = true,\n  value,\n  virtualized = false,\n  noMultiValueWrap,\n  width,\n  isValidNewOption,\n  formatOptionLabel,\n  hideSelectedOptions,\n  selectRef,\n  ...rest\n}: SelectBaseProps<T> & Rest) {\n  const theme = useTheme2();\n  const styles = getSelectStyles(theme);\n\n  const reactSelectRef = useRef<HTMLElement & { controlRef: HTMLElement }>(null);\n  const [closeToBottom, setCloseToBottom] = useState<boolean>(false);\n  const selectStyles = useCustomSelectStyles(theme, width);\n  const [hasInputValue, setHasInputValue] = useState<boolean>(!!inputValue);\n\n  useImperativeHandle(selectRef, () => reactSelectRef.current!, []);\n\n  // Infer the menu position for asynchronously loaded options. menuPlacement=\"auto\" doesn't work when the menu is\n  // automatically opened when the component is created (it happens in SegmentSelect by setting menuIsOpen={true}).\n  // We can remove this workaround when the bug in react-select is fixed: https://github.com/JedWatson/react-select/issues/4936\n  // Note: we use useEffect instead of hooking into onMenuOpen due to another bug: https://github.com/JedWatson/react-select/issues/3375\n  useEffect(() => {\n    if (\n      loadOptions &&\n      isOpen &&\n      reactSelectRef.current &&\n      reactSelectRef.current.controlRef &&\n      menuPlacement === 'auto'\n    ) {\n      const distance = window.innerHeight - reactSelectRef.current.controlRef.getBoundingClientRect().bottom;\n      setCloseToBottom(distance < maxMenuHeight);\n    }\n  }, [maxMenuHeight, menuPlacement, loadOptions, isOpen]);\n\n  const onChangeWithEmpty = useCallback(\n    (value: SelectableValue<T>, action: ActionMeta) => {\n      if (isMulti && (value === undefined || value === null)) {\n        return onChange([], action);\n      }\n      onChange(value, action);\n    },\n    [isMulti, onChange]\n  );\n\n  let ReactSelectComponent = ReactSelect;\n\n  const creatableProps: ComponentProps<typeof Creatable<SelectableValue<T>>> = {};\n  let asyncSelectProps: any = {};\n  let selectedValue;\n  if (isMulti && loadOptions) {\n    selectedValue = value as any;\n  } else {\n    // If option is passed as a plain value (value property from SelectableValue property)\n    // we are selecting the corresponding value from the options\n    if (isMulti && value && Array.isArray(value) && !loadOptions) {\n      selectedValue = value.map((v) => {\n        // @ts-ignore\n        const selectableValue = findSelectedValue(v.value ?? v, options);\n        // If the select allows custom values there likely won't be a selectableValue in options\n        // so we must return a new selectableValue\n        if (selectableValue) {\n          return selectableValue;\n        }\n        return typeof v === 'string' ? toOption(v) : v;\n      });\n    } else if (loadOptions) {\n      const hasValue = defaultValue || value;\n      selectedValue = hasValue ? [hasValue] : [];\n    } else {\n      selectedValue = cleanValue(value, options);\n    }\n  }\n\n  const commonSelectProps = {\n    'aria-label': ariaLabel,\n    'data-testid': dataTestid,\n    autoFocus,\n    backspaceRemovesValue,\n    blurInputOnSelect,\n    captureMenuScroll: onMenuScrollToBottom || onMenuScrollToTop,\n    closeMenuOnSelect,\n    // We don't want to close if we're actually scrolling the menu\n    // So only close if none of the parents are the select menu itself\n    defaultValue,\n    // Also passing disabled, as this is the new Select API, and I want to use this prop instead of react-select's one\n    disabled,\n    // react-select always tries to filter the options even at first menu open, which is a problem for performance\n    // in large lists. So we set it to not try to filter the options if there is no input value.\n    filterOption: hasInputValue ? filterOption : null,\n    getOptionLabel,\n    getOptionValue,\n    hideSelectedOptions,\n    inputValue,\n    invalid,\n    isClearable,\n    id,\n    // Passing isDisabled as react-select accepts this prop\n    isDisabled: disabled,\n    isLoading,\n    isMulti,\n    inputId,\n    isOptionDisabled,\n    isSearchable,\n    maxMenuHeight,\n    minMenuHeight,\n    maxVisibleValues,\n    menuIsOpen: isOpen,\n    menuPlacement: menuPlacement === 'auto' && closeToBottom ? 'top' : menuPlacement,\n    menuPosition,\n    menuShouldBlockScroll: true,\n    menuPortalTarget: menuShouldPortal && typeof document !== 'undefined' ? document.body : undefined,\n    menuShouldScrollIntoView: false,\n    onBlur,\n    onChange: onChangeWithEmpty,\n    onInputChange: (val: string, actionMeta: InputActionMeta) => {\n      const newValue = onInputChange?.(val, actionMeta) ?? val;\n      const newHasValue = !!newValue;\n      if (newHasValue !== hasInputValue) {\n        setHasInputValue(newHasValue);\n      }\n\n      return newValue;\n    },\n    onKeyDown,\n    onMenuClose: onCloseMenu,\n    onMenuOpen: onOpenMenu,\n    onMenuScrollToBottom: onMenuScrollToBottom,\n    onMenuScrollToTop: onMenuScrollToTop,\n    onFocus,\n    formatOptionLabel,\n    openMenuOnFocus,\n    options: virtualized ? omitDescriptions(options) : options,\n    placeholder,\n    prefix,\n    renderControl,\n    showAllSelectedWhenOpen,\n    tabSelectsValue,\n    value: isMulti ? selectedValue : selectedValue?.[0],\n    noMultiValueWrap,\n  };\n\n  if (allowCustomValue) {\n    ReactSelectComponent = Creatable;\n    creatableProps.allowCreateWhileLoading = allowCreateWhileLoading;\n    creatableProps.formatCreateLabel = formatCreateLabel ?? defaultFormatCreateLabel;\n    creatableProps.onCreateOption = onCreateOption;\n    creatableProps.createOptionPosition = createOptionPosition;\n    creatableProps.isValidNewOption = isValidNewOption;\n  }\n\n  // Instead of having AsyncSelect, as a separate component we render ReactAsyncSelect\n  if (loadOptions) {\n    ReactSelectComponent = allowCustomValue ? AsyncCreatable : ReactAsyncSelect;\n    asyncSelectProps = {\n      loadOptions,\n      cacheOptions,\n      defaultOptions,\n    };\n  }\n\n  const SelectMenuComponent = virtualized ? VirtualizedSelectMenu : SelectMenu;\n\n  let toggleAllState = ToggleAllState.noneSelected;\n  if (toggleAllOptions?.enabled && isArray(selectedValue)) {\n    if (toggleAllOptions?.determineToggleAllState) {\n      toggleAllState = toggleAllOptions.determineToggleAllState(selectedValue, options);\n    } else {\n      toggleAllState = determineToggleAllState(selectedValue, options);\n    }\n  }\n\n  const toggleAll = useCallback(() => {\n    let toSelect = toggleAllState === ToggleAllState.noneSelected ? options : [];\n    if (toggleAllOptions?.optionsFilter) {\n      toSelect =\n        toggleAllState === ToggleAllState.noneSelected\n          ? options.filter(toggleAllOptions.optionsFilter)\n          : options.filter(negate(toggleAllOptions.optionsFilter));\n    }\n\n    onChange(toSelect, {\n      action: 'select-option',\n      option: {},\n    });\n  }, [options, toggleAllOptions, onChange, toggleAllState]);\n\n  return (\n    <>\n      <ReactSelectComponent\n        ref={reactSelectRef}\n        components={{\n          MenuList: SelectMenuComponent,\n          Group: SelectOptionGroup,\n          GroupHeading: SelectOptionGroupHeader,\n          ValueContainer,\n          IndicatorsContainer: CustomIndicatorsContainer,\n          IndicatorSeparator: IndicatorSeparator,\n          Control: CustomControl,\n          Option: SelectMenuOptions,\n          ClearIndicator(props: ClearIndicatorProps) {\n            const { clearValue } = props;\n            return (\n              <Icon\n                name=\"times\"\n                role=\"button\"\n                aria-label={t('grafana-ui.select.clear-value', 'Clear value')}\n                className={styles.singleValueRemove}\n                onMouseDown={(e) => {\n                  e.preventDefault();\n                  e.stopPropagation();\n                  clearValue();\n                }}\n              />\n            );\n          },\n          LoadingIndicator() {\n            // Handled with DropdownIndicator, to avoid resize flickering with auto width\n            return null;\n          },\n          LoadingMessage() {\n            return <div className={styles.loadingMessage}>{loadingMessage}</div>;\n          },\n          NoOptionsMessage() {\n            return (\n              <div\n                className={styles.loadingMessage}\n                aria-label={t('grafana-ui.select.empty-options', 'No options provided')}\n              >\n                {noOptionsMessage}\n              </div>\n            );\n          },\n          DropdownIndicator: DropdownIndicator,\n          SingleValue(props: Props<T>) {\n            return <SingleValue {...props} isDisabled={disabled} />;\n          },\n          SelectContainer,\n          MultiValueContainer: MultiValueContainer,\n          MultiValueRemove: !disabled ? MultiValueRemove : () => null,\n          Input: CustomInput,\n          ...components,\n        }}\n        toggleAllOptions={\n          toggleAllOptions?.enabled && {\n            state: toggleAllState,\n            selectAllClicked: toggleAll,\n            selectedCount: isArray(selectedValue) ? selectedValue.length : undefined,\n          }\n        }\n        styles={selectStyles}\n        className={className}\n        autoWidth={width === 'auto'}\n        {...commonSelectProps}\n        {...creatableProps}\n        {...asyncSelectProps}\n        {...rest}\n      />\n    </>\n  );\n}\n\nfunction defaultFormatCreateLabel(input: string) {\n  return (\n    <div style={{ display: 'flex', gap: '8px', alignItems: 'center' }}>\n      <div>{input}</div>\n      <div style={{ flexGrow: 1 }} />\n      <div className=\"muted small\" style={{ display: 'flex', gap: '8px', alignItems: 'center' }}>\n        <Trans i18nKey=\"grafana-ui.select.default-create-label\">Hit enter to add</Trans>\n      </div>\n    </div>\n  );\n}\n\ntype CustomIndicatorsContainerProps = IndicatorsContainerProps & {\n  selectProps: SelectPropsWithExtras;\n  children: React.ReactNode;\n};\n\nfunction CustomIndicatorsContainer(props: CustomIndicatorsContainerProps) {\n  const { showAllSelectedWhenOpen, maxVisibleValues, menuIsOpen } = props.selectProps;\n\n  const value = props.getValue();\n\n  if (maxVisibleValues !== undefined && Array.isArray(props.children)) {\n    const selectedValuesCount = value.length;\n\n    if (selectedValuesCount > maxVisibleValues && !(showAllSelectedWhenOpen && menuIsOpen)) {\n      const indicatorChildren = [...props.children];\n      indicatorChildren.splice(\n        -1,\n        0,\n        <span key=\"excess-values\" id=\"excess-values\">\n          {`(+${selectedValuesCount - maxVisibleValues})`}\n        </span>\n      );\n\n      return <IndicatorsContainer {...props}>{indicatorChildren}</IndicatorsContainer>;\n    }\n  }\n\n  return <IndicatorsContainer {...props} />;\n}\n\nfunction IndicatorSeparator() {\n  return <></>;\n}\n","import { SelectableValue } from '@grafana/data';\n\nimport { SelectBase } from './SelectBase';\nimport { SelectContainer, SelectContainerProps } from './SelectContainer';\nimport {\n  SelectCommonProps,\n  MultiSelectCommonProps,\n  SelectAsyncProps,\n  VirtualizedSelectProps,\n  VirtualizedSelectAsyncProps,\n} from './types';\n\n/** @deprecated Use Combobox component instead */\nexport function Select<T, Rest = {}>(props: SelectCommonProps<T> & Rest) {\n  return <SelectBase {...props} />;\n}\n\nexport function MultiSelect<T, Rest = {}>(props: MultiSelectCommonProps<T> & Rest) {\n  // @ts-ignore\n  return <SelectBase {...props} isMulti />;\n}\n\nexport interface AsyncSelectProps<T> extends Omit<SelectCommonProps<T>, 'options'>, SelectAsyncProps<T> {\n  // AsyncSelect has options stored internally. We cannot enable plain values as we don't have access to the fetched options\n  value?: T | SelectableValue<T> | null;\n}\n\n/** @deprecated Use Combobox component instead */\nexport function AsyncSelect<T, Rest = {}>(props: AsyncSelectProps<T> & Rest) {\n  return <SelectBase {...props} />;\n}\n\n/** @deprecated Use Combobox component instead - it's virtualised by default! */\nexport function VirtualizedSelect<T, Rest = {}>(props: VirtualizedSelectProps<T> & Rest) {\n  return <SelectBase virtualized {...props} />;\n}\n\n/** @deprecated Use Combobox component instead - it's virtualised by default! */\nexport function AsyncVirtualizedSelect<T, Rest = {}>(props: VirtualizedSelectAsyncProps<T> & Rest) {\n  return <SelectBase virtualized {...props} />;\n}\n\ninterface AsyncMultiSelectProps<T> extends Omit<MultiSelectCommonProps<T>, 'options'>, SelectAsyncProps<T> {\n  // AsyncSelect has options stored internally. We cannot enable plain values as we don't have access to the fetched options\n  value?: Array<SelectableValue<T>>;\n}\n\nexport function AsyncMultiSelect<T, Rest = {}>(props: AsyncMultiSelectProps<T> & Rest) {\n  // @ts-ignore\n  return <SelectBase {...props} isMulti />;\n}\n\nexport { SelectContainer, type SelectContainerProps };\n","import { SelectableValue } from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport {\n  AxisPlacement,\n  BarAlignment,\n  GraphDrawStyle,\n  GraphGradientMode,\n  GraphThresholdsStyleMode,\n  LineInterpolation,\n  VisibilityMode,\n  StackingMode,\n} from '@grafana/schema';\n\nexport const getGraphFieldOptions: () => {\n  drawStyle: Array<SelectableValue<GraphDrawStyle>>;\n  lineInterpolation: Array<SelectableValue<LineInterpolation>>;\n  barAlignment: Array<SelectableValue<BarAlignment>>;\n  showPoints: Array<SelectableValue<VisibilityMode>>;\n  axisPlacement: Array<SelectableValue<AxisPlacement>>;\n  fillGradient: Array<SelectableValue<GraphGradientMode>>;\n  stacking: Array<SelectableValue<StackingMode>>;\n  thresholdsDisplayModes: Array<SelectableValue<GraphThresholdsStyleMode>>;\n} = () => ({\n  drawStyle: [\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.draw-style.label-lines', 'Lines'),\n      value: GraphDrawStyle.Line,\n    },\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.draw-style.label-bars', 'Bars'),\n      value: GraphDrawStyle.Bars,\n    },\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.draw-style.label-points', 'Points'),\n      value: GraphDrawStyle.Points,\n    },\n  ],\n\n  lineInterpolation: [\n    {\n      description: t(\n        'grafana-ui.u-plot.config.get-graph-field-options.line-interpolation.description-linear',\n        'Linear'\n      ),\n      value: LineInterpolation.Linear,\n      icon: 'gf-interpolation-linear',\n    },\n    {\n      description: t(\n        'grafana-ui.u-plot.config.get-graph-field-options.line-interpolation.description-smooth',\n        'Smooth'\n      ),\n      value: LineInterpolation.Smooth,\n      icon: 'gf-interpolation-smooth',\n    },\n    {\n      description: t(\n        'grafana-ui.u-plot.config.get-graph-field-options.line-interpolation.description-step-before',\n        'Step before'\n      ),\n      value: LineInterpolation.StepBefore,\n      icon: 'gf-interpolation-step-before',\n    },\n    {\n      description: t(\n        'grafana-ui.u-plot.config.get-graph-field-options.line-interpolation.description-step-after',\n        'Step after'\n      ),\n      value: LineInterpolation.StepAfter,\n      icon: 'gf-interpolation-step-after',\n    },\n  ],\n\n  barAlignment: [\n    {\n      description: t('grafana-ui.u-plot.config.get-graph-field-options.bar-alignment.description-before', 'Before'),\n      value: BarAlignment.Before,\n      icon: 'gf-bar-alignment-before',\n    },\n    {\n      description: t('grafana-ui.u-plot.config.get-graph-field-options.bar-alignment.description-center', 'Center'),\n      value: BarAlignment.Center,\n      icon: 'gf-bar-alignment-center',\n    },\n    {\n      description: t('grafana-ui.u-plot.config.get-graph-field-options.bar-alignment.description-after', 'After'),\n      value: BarAlignment.After,\n      icon: 'gf-bar-alignment-after',\n    },\n  ],\n\n  showPoints: [\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.show-points.label-auto', 'Auto'),\n      value: VisibilityMode.Auto,\n      description: t(\n        'grafana-ui.u-plot.config.get-graph-field-options.show-points.description-auto',\n        'Show points when the density is low'\n      ),\n    },\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.show-points.label-always', 'Always'),\n      value: VisibilityMode.Always,\n    },\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.show-points.label-never', 'Never'),\n      value: VisibilityMode.Never,\n    },\n  ],\n\n  axisPlacement: [\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.axis-placement.label-auto', 'Auto'),\n      value: AxisPlacement.Auto,\n      description: t(\n        'grafana-ui.u-plot.config.get-graph-field-options.axis-placement.description-auto',\n        'First field on the left, everything else on the right'\n      ),\n    },\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.axis-placement.label-left', 'Left'),\n      value: AxisPlacement.Left,\n    },\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.axis-placement.label-right', 'Right'),\n      value: AxisPlacement.Right,\n    },\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.axis-placement.label-hidden', 'Hidden'),\n      value: AxisPlacement.Hidden,\n    },\n  ],\n\n  fillGradient: [\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.fill-gradient.label-none', 'None'),\n      value: GraphGradientMode.None,\n    },\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.fill-gradient.label-opacity', 'Opacity'),\n      value: GraphGradientMode.Opacity,\n      description: t(\n        'grafana-ui.u-plot.config.get-graph-field-options.fill-gradient.description-opacity',\n        'Enable fill opacity gradient'\n      ),\n    },\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.fill-gradient.label-hue', 'Hue'),\n      value: GraphGradientMode.Hue,\n      description: t(\n        'grafana-ui.u-plot.config.get-graph-field-options.fill-gradient.description-hue',\n        'Small color hue gradient'\n      ),\n    },\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.fill-gradient.label-scheme', 'Scheme'),\n      value: GraphGradientMode.Scheme,\n      description: t(\n        'grafana-ui.u-plot.config.get-graph-field-options.fill-gradient.description-scheme',\n        'Use color scheme to define gradient'\n      ),\n    },\n  ],\n\n  stacking: [\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.stacking.label-off', 'Off'),\n      value: StackingMode.None,\n    },\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.stacking.label-normal', 'Normal'),\n      value: StackingMode.Normal,\n    },\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.stacking.label-100', '100%'),\n      value: StackingMode.Percent,\n    },\n  ],\n\n  thresholdsDisplayModes: [\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.thresholds-display-mode.label-off', 'Off'),\n      value: GraphThresholdsStyleMode.Off,\n    },\n    {\n      label: t('grafana-ui.u-plot.config.get-graph-field-options.thresholds-display-mode.label-lines', 'As lines'),\n      value: GraphThresholdsStyleMode.Line,\n    },\n    {\n      label: t(\n        'grafana-ui.u-plot.config.get-graph-field-options.thresholds-display-mode.label-dashed-lines',\n        'As lines (dashed)'\n      ),\n      value: GraphThresholdsStyleMode.Dashed,\n    },\n    {\n      label: t(\n        'grafana-ui.u-plot.config.get-graph-field-options.thresholds-display-mode.label-filled-regions',\n        'As filled regions'\n      ),\n      value: GraphThresholdsStyleMode.Area,\n    },\n    {\n      label: t(\n        'grafana-ui.u-plot.config.get-graph-field-options.thresholds-display-mode.label-filled-regions-and-lines',\n        'As filled regions and lines'\n      ),\n      value: GraphThresholdsStyleMode.LineAndArea,\n    },\n    {\n      label: t(\n        'grafana-ui.u-plot.config.get-graph-field-options.thresholds-display-mode.label-filled-regions-and-dashed-lines',\n        'As filled regions and lines (dashed)'\n      ),\n      value: GraphThresholdsStyleMode.DashedAndArea,\n    },\n  ],\n});\n\n/**\n * @deprecated Use `getGraphFieldOptions` instead so translations load correctly.\n */\nexport const graphFieldOptions = getGraphFieldOptions();\n","import {\n  FieldConfigEditorBuilder,\n  FieldType,\n  identityOverrideProcessor,\n  SelectableValue,\n  StandardEditorProps,\n} from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { AxisColorMode, AxisConfig, AxisPlacement, ScaleDistribution, ScaleDistributionConfig } from '@grafana/schema';\n\nimport { Field } from '../../components/Forms/Field';\nimport { RadioButtonGroup } from '../../components/Forms/RadioButtonGroup/RadioButtonGroup';\nimport { Input } from '../../components/Input/Input';\nimport { Stack } from '../../components/Layout/Stack/Stack';\nimport { Select } from '../../components/Select/Select';\nimport { getGraphFieldOptions } from '../../components/uPlot/config';\n\n/**\n * @alpha\n */\nexport function addAxisConfig(builder: FieldConfigEditorBuilder<AxisConfig>, defaultConfig: AxisConfig) {\n  // options for axis appearance\n  addAxisPlacement(builder);\n  const category = [t('grafana-ui.builder.axis.category-axis', 'Axis')];\n\n  builder.addTextInput({\n    path: 'axisLabel',\n    name: t('grafana-ui.builder.axis.name-label', 'Label'),\n    category,\n    defaultValue: '',\n    settings: {\n      placeholder: t('grafana-ui.builder.axis.placeholder-label', 'Optional text'),\n      expandTemplateVars: true,\n    },\n    showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n    // Do not apply default settings to time and string fields which are used as x-axis fields in Time series and Bar chart panels\n    shouldApply: (f) => f.type !== FieldType.time && f.type !== FieldType.string,\n  });\n\n  addAxisWidth(builder);\n\n  builder\n    .addRadio({\n      path: 'axisGridShow',\n      name: t('grafana-ui.builder.axis.name-grid-lines', 'Show grid lines'),\n      category,\n      defaultValue: undefined,\n      settings: {\n        options: [\n          { value: undefined, label: t('grafana-ui.builder.axis.grid-line-options.label-auto', 'Auto') },\n          { value: true, label: t('grafana-ui.builder.axis.grid-line-options.label-on', 'On') },\n          { value: false, label: t('grafana-ui.builder.axis.grid-line-options.label-off', 'Off') },\n        ],\n      },\n      showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n    })\n    .addRadio({\n      path: 'axisColorMode',\n      name: t('grafana-ui.builder.axis.color-label', 'Color'),\n      category,\n      defaultValue: AxisColorMode.Text,\n      settings: {\n        options: [\n          { value: AxisColorMode.Text, label: t('grafana-ui.builder.axis.color-options.label-text', 'Text') },\n          { value: AxisColorMode.Series, label: t('grafana-ui.builder.axis.color-options.label-series', 'Series') },\n        ],\n      },\n      showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n    })\n    .addBooleanSwitch({\n      path: 'axisBorderShow',\n      name: t('grafana-ui.builder.axis.name-show-border', 'Show border'),\n      category,\n      defaultValue: false,\n      showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n    });\n\n  // options for scale range\n  builder\n    .addCustomEditor<void, ScaleDistributionConfig>({\n      id: 'scaleDistribution',\n      path: 'scaleDistribution',\n      name: t('grafana-ui.builder.axis.name-scale', 'Scale'),\n      category,\n      editor: ScaleDistributionEditor,\n      override: ScaleDistributionEditor,\n      defaultValue: { type: ScaleDistribution.Linear },\n      shouldApply: (f) => f.type === FieldType.number,\n      process: identityOverrideProcessor,\n    })\n    .addBooleanSwitch({\n      path: 'axisCenteredZero',\n      name: t('grafana-ui.builder.axis.name-centered-zero', 'Centered zero'),\n      category,\n      defaultValue: false,\n      showIf: (c) => c.scaleDistribution?.type !== ScaleDistribution.Log,\n    })\n    .addNumberInput({\n      path: 'axisSoftMin',\n      name: t('grafana-ui.builder.axis.name-soft-min', 'Soft min'),\n      defaultValue: defaultConfig.axisSoftMin,\n      category,\n      settings: {\n        placeholder: t('grafana-ui.builder.axis.placeholder-soft-min', 'See: Standard options > Min'),\n      },\n    })\n    .addNumberInput({\n      path: 'axisSoftMax',\n      name: t('grafana-ui.builder.axis.name-soft-max', 'Soft max'),\n      defaultValue: defaultConfig.axisSoftMax,\n      category,\n      settings: {\n        placeholder: t('grafana-ui.builder.axis.placeholder-soft-max', 'See: Standard options > Max'),\n      },\n    });\n}\n\nconst LOG_DISTRIBUTION_OPTIONS: Array<SelectableValue<number>> = [\n  {\n    label: '2',\n    value: 2,\n  },\n  {\n    label: '10',\n    value: 10,\n  },\n];\n\n/**\n * @internal\n */\nexport const ScaleDistributionEditor = ({ value, onChange }: StandardEditorProps<ScaleDistributionConfig>) => {\n  const type = value?.type ?? ScaleDistribution.Linear;\n  const log = value?.log ?? 2;\n  const DISTRIBUTION_OPTIONS: Array<SelectableValue<ScaleDistribution>> = [\n    {\n      label: t('grafana-ui.builder.axis.scale-distribution-editor.distribution-options.label-linear', 'Linear'),\n      value: ScaleDistribution.Linear,\n    },\n    {\n      label: t('grafana-ui.builder.axis.scale-distribution-editor.distribution-options.label-log', 'Logarithmic'),\n      value: ScaleDistribution.Log,\n    },\n    {\n      label: t('grafana-ui.builder.axis.scale-distribution-editor.distribution-options.label-symlog', 'Symlog'),\n      value: ScaleDistribution.Symlog,\n    },\n  ];\n\n  return (\n    <Stack direction=\"column\" gap={2}>\n      <RadioButtonGroup\n        value={type}\n        options={DISTRIBUTION_OPTIONS}\n        onChange={(v) => {\n          onChange({\n            ...value,\n            type: v!,\n            log: v === ScaleDistribution.Linear ? undefined : log,\n          });\n        }}\n      />\n      {(type === ScaleDistribution.Log || type === ScaleDistribution.Symlog) && (\n        <Field label={t('grafana-ui.axis-builder.log-base', 'Log base')}>\n          <Select\n            options={LOG_DISTRIBUTION_OPTIONS}\n            value={log}\n            onChange={(v) => {\n              onChange({\n                ...value,\n                log: v.value!,\n              });\n            }}\n          />\n        </Field>\n      )}\n      {type === ScaleDistribution.Symlog && (\n        <Field label={t('grafana-ui.axis-builder.linear-threshold', 'Linear threshold')} style={{ marginBottom: 0 }}>\n          <Input\n            // eslint-disable-next-line @grafana/i18n/no-untranslated-strings\n            placeholder=\"1\"\n            value={value?.linearThreshold}\n            onChange={(v) => {\n              onChange({\n                ...value,\n                linearThreshold: Number(v.currentTarget.value),\n              });\n            }}\n          />\n        </Field>\n      )}\n    </Stack>\n  );\n};\n\n/** @internal */\nexport function addAxisWidth(builder: FieldConfigEditorBuilder<AxisConfig>) {\n  builder.addNumberInput({\n    path: 'axisWidth',\n    name: t('grafana-ui.builder.axis.name-width', 'Width'),\n    category: [t('grafana-ui.builder.axis.category-axis', 'Axis')],\n    settings: {\n      placeholder: t('grafana-ui.builder.axis.placeholder-width', 'Auto'),\n    },\n    showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n  });\n}\n\n/** @internal */\nexport function addAxisPlacement(\n  builder: FieldConfigEditorBuilder<AxisConfig>,\n  optionsFilter = (placement: AxisPlacement) => true\n) {\n  const graphFieldOptions = getGraphFieldOptions();\n  builder.addRadio({\n    path: 'axisPlacement',\n    name: t('grafana-ui.builder.axis.name-placement', 'Placement'),\n    category: [t('grafana-ui.builder.axis.category-axis', 'Axis')],\n    defaultValue: graphFieldOptions.axisPlacement[0].value,\n    settings: {\n      options: graphFieldOptions.axisPlacement.filter((placement) => optionsFilter(placement.value!)),\n    },\n  });\n}\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { IconName } from '../../types/icon';\nimport { clearButtonStyles } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\n\nexport interface FilterPillProps {\n  selected: boolean;\n  label: string;\n  onClick: React.MouseEventHandler<HTMLElement>;\n  icon?: IconName;\n}\n\nexport const FilterPill = ({ label, selected, onClick, icon = 'check' }: FilterPillProps) => {\n  const styles = useStyles2(getStyles);\n  const clearButton = useStyles2(clearButtonStyles);\n  return (\n    <button type=\"button\" className={cx(clearButton, styles.wrapper, selected && styles.selected)} onClick={onClick}>\n      <span>{label}</span>\n      {selected && <Icon name={icon} className={styles.icon} data-testid=\"filter-pill-icon\" />}\n    </button>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    wrapper: css({\n      background: theme.colors.background.secondary,\n      borderRadius: theme.shape.radius.pill,\n      padding: theme.spacing(0, 2),\n      fontSize: theme.typography.bodySmall.fontSize,\n      fontWeight: theme.typography.fontWeightMedium,\n      lineHeight: theme.typography.bodySmall.lineHeight,\n      color: theme.colors.text.secondary,\n      display: 'flex',\n      alignItems: 'center',\n      height: '32px',\n      position: 'relative',\n      border: `1px solid ${theme.colors.background.secondary}`,\n      whiteSpace: 'nowrap',\n\n      '&:hover': {\n        background: theme.colors.action.hover,\n        color: theme.colors.text.primary,\n      },\n    }),\n    selected: css({\n      color: theme.colors.text.primary,\n      background: theme.colors.action.selected,\n\n      '&:hover': {\n        background: theme.colors.action.focus,\n      },\n    }),\n    icon: css({\n      marginLeft: theme.spacing(0.5),\n    }),\n  };\n};\n","import { startCase } from 'lodash';\nimport { useCallback } from 'react';\n\nimport { FieldConfigEditorBuilder, StandardEditorProps } from '@grafana/data';\nimport { HideableFieldConfig, HideSeriesConfig } from '@grafana/schema';\n\nimport { FilterPill } from '../../components/FilterPill/FilterPill';\nimport { Stack } from '../../components/Layout/Stack/Stack';\n\nconst SeriesConfigEditor = ({ value, onChange }: StandardEditorProps<HideSeriesConfig, {}>) => {\n  const onChangeToggle = useCallback(\n    (prop: keyof HideSeriesConfig) => {\n      onChange({ ...value, [prop]: !value[prop] });\n    },\n    [value, onChange]\n  );\n\n  return (\n    <Stack gap={0.5}>\n      {Object.keys(value).map((k) => {\n        const key = k as keyof HideSeriesConfig;\n        return (\n          <FilterPill\n            icon={value[key] ? 'eye-slash' : 'eye'}\n            onClick={() => onChangeToggle(key)}\n            key={key}\n            label={startCase(key)}\n            selected={value[key]}\n          />\n        );\n      })}\n    </Stack>\n  );\n};\n\n/**\n * @alpha\n */\nexport function addHideFrom(builder: FieldConfigEditorBuilder<HideableFieldConfig>) {\n  builder.addCustomEditor({\n    id: 'hideFrom',\n    name: 'Hide in area',\n    category: ['Series'],\n    path: 'hideFrom',\n    defaultValue: {\n      tooltip: false,\n      viz: false,\n      legend: false,\n    },\n    editor: SeriesConfigEditor,\n    override: SeriesConfigEditor,\n    shouldApply: () => true,\n    hideFromDefaults: true,\n    process: (value) => value,\n  });\n}\n","import { PanelOptionsEditorBuilder, standardEditorsRegistry, StatsPickerConfigSettings } from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { LegendDisplayMode, OptionsWithLegend } from '@grafana/schema';\n\n/**\n * @alpha\n */\nexport function addLegendOptions<T extends OptionsWithLegend>(\n  builder: PanelOptionsEditorBuilder<T>,\n  includeLegendCalcs = true,\n  showLegend = true\n) {\n  const category = [t('grafana-ui.builder.legend.category', 'Legend')];\n  builder\n    .addBooleanSwitch({\n      path: 'legend.showLegend',\n      name: t('grafana-ui.builder.legend.name-visibility', 'Visibility'),\n      category,\n      description: '',\n      defaultValue: showLegend,\n    })\n    .addRadio({\n      path: 'legend.displayMode',\n      name: t('grafana-ui.builder.legend.name-mode', 'Mode'),\n      category,\n      description: '',\n      defaultValue: LegendDisplayMode.List,\n      settings: {\n        options: [\n          { value: LegendDisplayMode.List, label: t('grafana-ui.builder.legend.mode-options.label-list', 'List') },\n          { value: LegendDisplayMode.Table, label: t('grafana-ui.builder.legend.mode-options.label-table', 'Table') },\n        ],\n      },\n      showIf: (c) => c.legend.showLegend,\n    })\n    .addRadio({\n      path: 'legend.placement',\n      name: t('grafana-ui.builder.legend.name-placement', 'Placement'),\n      category,\n      description: '',\n      defaultValue: 'bottom',\n      settings: {\n        options: [\n          { value: 'bottom', label: t('grafana-ui.builder.legend.placement-options.label-bottom', 'Bottom') },\n          { value: 'right', label: t('grafana-ui.builder.legend.placement-options.label-right', 'Right') },\n        ],\n      },\n      showIf: (c) => c.legend.showLegend,\n    })\n    .addNumberInput({\n      path: 'legend.width',\n      name: t('grafana-ui.builder.legend.name-width', 'Width'),\n      category,\n      settings: {\n        placeholder: 'Auto',\n      },\n      showIf: (c) => c.legend.showLegend && c.legend.placement === 'right',\n    });\n\n  if (includeLegendCalcs) {\n    builder.addCustomEditor<StatsPickerConfigSettings, string[]>({\n      id: 'legend.calcs',\n      path: 'legend.calcs',\n      name: t('grafana-ui.builder.legend.name-values', 'Values'),\n      category,\n      description: t('grafana-ui.builder.legend.description-values', 'Select values or calculations to show in legend'),\n      editor: standardEditorsRegistry.get('stats-picker').editor,\n      defaultValue: [],\n      settings: {\n        allowMultiple: true,\n      },\n      showIf: (currentConfig) => currentConfig.legend.showLegend !== false,\n    });\n  }\n}\n","import { DataFrame, PanelOptionsEditorBuilder } from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { OptionsWithTooltip, TooltipDisplayMode, SortOrder } from '@grafana/schema';\n\n/** @internal */\nexport const optsWithHideZeros: OptionsWithTooltip = {\n  tooltip: {\n    mode: TooltipDisplayMode.Single,\n    sort: SortOrder.None,\n    hideZeros: false,\n  },\n};\n\nexport function addTooltipOptions<T extends OptionsWithTooltip>(\n  builder: PanelOptionsEditorBuilder<T>,\n  singleOnly = false,\n  setProximity = false,\n  defaultOptions?: Partial<OptionsWithTooltip>\n) {\n  const category = [t('grafana-ui.builder.tooltip.category', 'Tooltip')];\n  const modeOptions = singleOnly\n    ? [\n        { value: TooltipDisplayMode.Single, label: t('grafana-ui.builder.tooltip.modeOptions.label-single', 'Single') },\n        { value: TooltipDisplayMode.None, label: t('grafana-ui.builder.tooltip.modeOptions.label-hidden', 'Hidden') },\n      ]\n    : [\n        { value: TooltipDisplayMode.Single, label: t('grafana-ui.builder.tooltip.modeOptions.label-single', 'Single') },\n        { value: TooltipDisplayMode.Multi, label: t('grafana-ui.builder.tooltip.modeOptions.label-all', 'All') },\n        { value: TooltipDisplayMode.None, label: t('grafana-ui.builder.tooltip.modeOptions.label-hidden', 'Hidden') },\n      ];\n\n  const sortOptions = [\n    { value: SortOrder.None, label: t('grafana-ui.builder.tooltip.sortOptions.label-none', 'None') },\n    { value: SortOrder.Ascending, label: t('grafana-ui.builder.tooltip.sortOptions.label-ascending', 'Ascending') },\n    { value: SortOrder.Descending, label: t('grafana-ui.builder.tooltip.sortOptions.label-descending', 'Descending') },\n  ];\n\n  builder\n    .addRadio({\n      path: 'tooltip.mode',\n      name: t('grafana-ui.builder.tooltip.name-tooltip-mode', 'Tooltip mode'),\n      category,\n      defaultValue: defaultOptions?.tooltip?.mode ?? TooltipDisplayMode.Single,\n      settings: {\n        options: modeOptions,\n      },\n    })\n    .addRadio({\n      path: 'tooltip.sort',\n      name: t('grafana-ui.builder.tooltip.name-values-sort-order', 'Values sort order'),\n      category,\n      defaultValue: defaultOptions?.tooltip?.sort ?? SortOrder.None,\n      showIf: (options: T) => options.tooltip?.mode === TooltipDisplayMode.Multi,\n      settings: {\n        options: sortOptions,\n      },\n    })\n    .addBooleanSwitch({\n      path: 'tooltip.hideZeros',\n      name: t('grafana-ui.builder.tooltip.name-hide-zeros', 'Hide zeros'),\n      category,\n      defaultValue: false,\n      showIf: (options: T) =>\n        defaultOptions?.tooltip?.hideZeros !== undefined && options.tooltip?.mode === TooltipDisplayMode.Multi,\n    });\n\n  if (setProximity) {\n    builder.addNumberInput({\n      path: 'tooltip.hoverProximity',\n      name: t('grafana-ui.builder.tooltip.name-hover-proximity', 'Hover proximity'),\n      description: t(\n        'grafana-ui.builder.tooltip.description-hover-proximity',\n        'How close the cursor must be to a point to trigger the tooltip, in pixels'\n      ),\n      category,\n      settings: {\n        integer: true,\n      },\n      showIf: (options: T) => options.tooltip?.mode !== TooltipDisplayMode.None,\n    });\n  }\n\n  builder\n    .addNumberInput({\n      path: 'tooltip.maxWidth',\n      name: t('grafana-ui.builder.tooltip.name-max-width', 'Max width'),\n      category,\n      settings: {\n        integer: true,\n      },\n      showIf: (options: T) => options.tooltip?.mode !== TooltipDisplayMode.None,\n    })\n    .addNumberInput({\n      path: 'tooltip.maxHeight',\n      name: t('grafana-ui.builder.tooltip.name-max-height', 'Max height'),\n      category,\n      defaultValue: undefined,\n      settings: {\n        integer: true,\n      },\n      showIf: (options: T, data: DataFrame[] | undefined, annotations: DataFrame[] | undefined) => {\n        return (\n          options.tooltip?.mode === TooltipDisplayMode.Multi ||\n          annotations?.some((df) => {\n            return df.meta?.custom?.resultType === 'exemplar';\n          })\n        );\n      },\n    });\n}\n","import { PanelOptionsEditorBuilder } from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { OptionsWithTextFormatting } from '@grafana/schema';\n\n/**\n * Adds common text control options to a visualization options\n * @param builder\n * @param withTitle\n * @public\n */\nexport function addTextSizeOptions<T extends OptionsWithTextFormatting>(\n  builder: PanelOptionsEditorBuilder<T>,\n  withTitle = true\n) {\n  const category = [t('grafana-ui.builder.text.category-text-size', 'Text size')];\n  if (withTitle) {\n    builder.addNumberInput({\n      path: 'text.titleSize',\n      category,\n      name: t('grafana-ui.builder.text.name-title', 'Title'),\n      settings: {\n        placeholder: t('grafana-ui.builder.text.placeholder-title', 'Auto'),\n        integer: false,\n        min: 1,\n        max: 200,\n      },\n      defaultValue: undefined,\n    });\n  }\n\n  builder.addNumberInput({\n    path: 'text.valueSize',\n    category,\n    name: t('grafana-ui.builder.text.name-value', 'Value'),\n    settings: {\n      placeholder: t('grafana-ui.builder.text.placeholder-value', 'Auto'),\n      integer: false,\n      min: 1,\n      max: 200,\n    },\n    defaultValue: undefined,\n  });\n\n  builder.addNumberInput({\n    path: 'text.percentSize',\n    category,\n    name: t('grafana-ui.builder.text.name-percent-change', 'Percent change'),\n    settings: {\n      placeholder: t('grafana-ui.builder.text.placeholder-percent-change', 'Auto'),\n      integer: false,\n      min: 1,\n      max: 200,\n    },\n    defaultValue: undefined,\n  });\n}\n","import {\n  FieldConfigEditorBuilder,\n  StandardEditorProps,\n  FieldType,\n  identityOverrideProcessor,\n  SelectableValue,\n} from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { GraphFieldConfig, StackingConfig, StackingMode } from '@grafana/schema';\n\nimport { RadioButtonGroup } from '../../components/Forms/RadioButtonGroup/RadioButtonGroup';\nimport { IconButton } from '../../components/IconButton/IconButton';\nimport { Input } from '../../components/Input/Input';\nimport { Stack } from '../../components/Layout/Stack/Stack';\nimport { getGraphFieldOptions } from '../../components/uPlot/config';\n\nexport const StackingEditor = ({\n  value,\n  context,\n  onChange,\n  item,\n}: StandardEditorProps<StackingConfig, { options: Array<SelectableValue<StackingMode>> }>) => {\n  return (\n    <Stack>\n      <RadioButtonGroup\n        value={value?.mode || StackingMode.None}\n        options={item.settings?.options ?? []}\n        onChange={(v) => {\n          onChange({\n            ...value,\n            mode: v,\n          });\n        }}\n      />\n      {context.isOverride && value?.mode && value?.mode !== StackingMode.None && (\n        <Input\n          type=\"text\"\n          placeholder={t('grafana-ui.stacking-builder.group', 'Group')}\n          suffix={\n            <IconButton\n              name=\"question-circle\"\n              tooltip={t('grafana-ui.stacking-builder.group-tooltip', 'Name of the stacking group')}\n              tooltipPlacement=\"top\"\n            />\n          }\n          defaultValue={value?.group}\n          onChange={(v) => {\n            onChange({\n              ...value,\n              group: v.currentTarget.value.trim(),\n            });\n          }}\n        />\n      )}\n    </Stack>\n  );\n};\n\nexport function addStackingConfig(\n  builder: FieldConfigEditorBuilder<GraphFieldConfig>,\n  defaultConfig?: StackingConfig,\n  category = ['Graph styles']\n) {\n  const graphFieldOptions = getGraphFieldOptions();\n  builder.addCustomEditor({\n    id: 'stacking',\n    path: 'stacking',\n    name: t('grafana-ui.builder.stacking.name-stack-series', 'Stack series'),\n    category: category,\n    defaultValue: defaultConfig,\n    editor: StackingEditor,\n    override: StackingEditor,\n    settings: {\n      options: graphFieldOptions.stacking,\n    },\n    process: identityOverrideProcessor,\n    shouldApply: (f) => f.type === FieldType.number,\n  });\n}\n","import { PanelOptionsEditorBuilder } from '@grafana/data';\nimport { TimeCompareOptions } from '@grafana/schema';\n\n/**\n * Adds a generic time comparison option to the panel options editor.\n * Can be used by any panel that supports time comparison.\n */\nexport function addTimeCompareOption<T extends { timeCompare?: TimeCompareOptions }>(\n  builder: PanelOptionsEditorBuilder<T>,\n  defaultValue = false\n) {\n  builder.addBooleanSwitch({\n    path: 'timeCompare',\n    name: 'Enable',\n    category: ['Time Comparison'],\n    description: '',\n    defaultValue,\n  });\n}\n","// Node.closest() polyfill\nif (typeof window !== 'undefined' && 'Element' in window && !Element.prototype.closest) {\n  Element.prototype.closest = function (this: any, s: string) {\n    const matches = (this.document || this.ownerDocument).querySelectorAll(s);\n    let el = this;\n    let i;\n    // eslint-disable-next-line\n    do {\n      i = matches.length;\n      // eslint-disable-next-line\n      while (--i >= 0 && matches.item(i) !== el) {}\n      el = el.parentElement;\n    } while (i < 0 && el);\n    return el;\n  };\n}\n\nexport function getPreviousCousin(node: HTMLElement, selector: string) {\n  let sibling = node.parentElement?.previousSibling;\n  let el;\n  while (sibling) {\n    if (sibling instanceof HTMLElement) {\n      el = sibling.querySelector(selector);\n    }\n    if (el) {\n      return el;\n    }\n    sibling = sibling.previousSibling;\n  }\n  return undefined;\n}\n\nexport function getNextCharacter(global?: typeof globalThis) {\n  const selection = (global || window).getSelection();\n  if (!selection || !selection.anchorNode) {\n    return null;\n  }\n\n  const range = selection.getRangeAt(0);\n  const text = selection.anchorNode.textContent;\n  const offset = range.startOffset;\n  return text!.slice(offset, offset + 1);\n}\n","import { cx, css } from '@emotion/css';\nimport { ReactElement, useEffect, useRef, useState } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { ComponentSize } from '../../types/size';\nimport { Button, ButtonVariant } from '../Button/Button';\n\nexport interface Props {\n  /** Confirm action callback */\n  onConfirm(): void;\n  children: string | ReactElement;\n  /** Custom button styles */\n  className?: string;\n  /** Button size */\n  size?: ComponentSize;\n  /** Text for the Confirm button */\n  confirmText?: string;\n  /** Disable button click action */\n  disabled?: boolean;\n  /** Variant of the Confirm button */\n  confirmVariant?: ButtonVariant;\n  /** Hide confirm actions when after of them is clicked */\n  closeOnConfirm?: boolean;\n  /** Optional on click handler for the original button */\n  onClick?(): void;\n  /** Callback for the cancel action */\n  onCancel?(): void;\n}\n\nexport const ConfirmButton = ({\n  children,\n  className,\n  closeOnConfirm,\n  confirmText = 'Save',\n  confirmVariant = 'primary',\n  disabled = false,\n  onCancel,\n  onClick,\n  onConfirm,\n  size = 'md',\n}: Props) => {\n  const mainButtonRef = useRef<HTMLButtonElement>(null);\n  const confirmButtonRef = useRef<HTMLButtonElement>(null);\n  const [showConfirm, setShowConfirm] = useState(false);\n  const [shouldRestoreFocus, setShouldRestoreFocus] = useState(false);\n  const styles = useStyles2(getStyles);\n\n  useEffect(() => {\n    if (showConfirm) {\n      confirmButtonRef.current?.focus();\n      setShouldRestoreFocus(true);\n    } else {\n      if (shouldRestoreFocus) {\n        mainButtonRef.current?.focus();\n        setShouldRestoreFocus(false);\n      }\n    }\n  }, [shouldRestoreFocus, showConfirm]);\n\n  const onClickButton = (event: React.MouseEvent<HTMLButtonElement>) => {\n    if (event) {\n      event.preventDefault();\n    }\n\n    setShowConfirm(true);\n    onClick?.();\n  };\n\n  const onClickCancel = (event: React.MouseEvent<HTMLButtonElement>) => {\n    if (event) {\n      event.preventDefault();\n    }\n    setShowConfirm(false);\n    mainButtonRef.current?.focus();\n    onCancel?.();\n  };\n\n  const onClickConfirm = (event: React.MouseEvent<HTMLButtonElement>) => {\n    if (event) {\n      event.preventDefault();\n    }\n    onConfirm?.();\n    if (closeOnConfirm) {\n      setShowConfirm(false);\n    }\n  };\n\n  const buttonClass = cx(className, styles.mainButton, {\n    [styles.mainButtonHide]: showConfirm,\n  });\n  const confirmButtonClass = cx(styles.confirmButton, {\n    [styles.confirmButtonHide]: !showConfirm,\n  });\n  const confirmButtonContainerClass = cx(styles.confirmButtonContainer, {\n    [styles.confirmButtonContainerHide]: !showConfirm,\n  });\n\n  return (\n    <div className={styles.container}>\n      <span className={buttonClass}>\n        {typeof children === 'string' ? (\n          <Button disabled={disabled} size={size} fill=\"text\" onClick={onClickButton} ref={mainButtonRef}>\n            {children}\n          </Button>\n        ) : (\n          React.cloneElement(children, { disabled, onClick: onClickButton, ref: mainButtonRef })\n        )}\n      </span>\n      <div className={confirmButtonContainerClass}>\n        <span className={confirmButtonClass}>\n          <Button size={size} variant={confirmVariant} onClick={onClickConfirm} ref={confirmButtonRef}>\n            {confirmText}\n          </Button>\n          <Button size={size} fill=\"text\" onClick={onClickCancel}>\n            <Trans i18nKey=\"grafana-ui.confirm-button.cancel\">Cancel</Trans>\n          </Button>\n        </span>\n      </div>\n    </div>\n  );\n};\nConfirmButton.displayName = 'ConfirmButton';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      alignItems: 'center',\n      display: 'flex',\n      justifyContent: 'flex-end',\n      position: 'relative',\n    }),\n    mainButton: css({\n      opacity: 1,\n      [theme.transitions.handleMotion('no-preference')]: {\n        transition: theme.transitions.create(['opacity'], {\n          duration: theme.transitions.duration.shortest,\n          easing: theme.transitions.easing.easeOut,\n        }),\n      },\n      zIndex: 2,\n    }),\n    mainButtonHide: css({\n      opacity: 0,\n      [theme.transitions.handleMotion('no-preference')]: {\n        transition: theme.transitions.create(['opacity', 'visibility'], {\n          duration: theme.transitions.duration.shortest,\n          easing: theme.transitions.easing.easeIn,\n        }),\n      },\n      visibility: 'hidden',\n      zIndex: 0,\n    }),\n    confirmButtonContainer: css({\n      overflow: 'visible',\n      position: 'absolute',\n      pointerEvents: 'all',\n      right: 0,\n    }),\n    confirmButtonContainerHide: css({\n      overflow: 'hidden',\n      pointerEvents: 'none',\n    }),\n    confirmButton: css({\n      alignItems: 'flex-start',\n      background: theme.colors.background.primary,\n      display: 'flex',\n      opacity: 1,\n      transform: 'translateX(0)',\n      [theme.transitions.handleMotion('no-preference')]: {\n        transition: theme.transitions.create(['opacity', 'transform'], {\n          duration: theme.transitions.duration.shortest,\n          easing: theme.transitions.easing.easeOut,\n        }),\n      },\n      zIndex: 1,\n    }),\n    confirmButtonHide: css({\n      opacity: 0,\n      transform: 'translateX(100%)',\n      [theme.transitions.handleMotion('no-preference')]: {\n        transition: theme.transitions.create(['opacity', 'transform', 'visibility'], {\n          duration: theme.transitions.duration.shortest,\n          easing: theme.transitions.easing.easeIn,\n        }),\n      },\n      visibility: 'hidden',\n    }),\n  };\n};\n","import { t } from '@grafana/i18n';\n\nimport { ComponentSize } from '../../types/size';\nimport { Button } from '../Button/Button';\n\nimport { ConfirmButton } from './ConfirmButton';\n\nexport interface Props {\n  /** Confirm action callback */\n  onConfirm(): void;\n  /** Button size */\n  size?: ComponentSize;\n  /** Disable button click action */\n  disabled?: boolean;\n  'aria-label'?: string;\n  /** Close after delete button is clicked */\n  closeOnConfirm?: boolean;\n}\n\nexport const DeleteButton = ({ size, disabled, onConfirm, 'aria-label': ariaLabel, closeOnConfirm }: Props) => {\n  return (\n    <ConfirmButton\n      confirmText={t('grafana-ui.confirm-button.confirmText-delete', 'Delete')}\n      confirmVariant=\"destructive\"\n      size={size || 'md'}\n      disabled={disabled}\n      onConfirm={onConfirm}\n      closeOnConfirm={closeOnConfirm}\n    >\n      <Button\n        aria-label={ariaLabel ?? t('grafana-ui.confirm-button.aria-label-delete', 'Delete')}\n        variant=\"destructive\"\n        icon=\"times\"\n        size={size || 'sm'}\n      />\n    </ConfirmButton>\n  );\n};\n","import { Placement } from '@popperjs/core';\nimport { Component } from 'react';\n\nimport { PopoverContent } from './types';\n\ntype PopperControllerRenderProp = (\n  showPopper: () => void,\n  hidePopper: () => void,\n  popperProps: {\n    show: boolean;\n    placement: Placement;\n    content: PopoverContent;\n  }\n) => JSX.Element;\n\ninterface Props {\n  placement?: Placement;\n  content: PopoverContent;\n  className?: string;\n  children: PopperControllerRenderProp;\n  hideAfter?: number;\n}\n\ninterface State {\n  show: boolean;\n}\n\nclass PopoverController extends Component<Props, State> {\n  private hideTimeout: ReturnType<typeof setTimeout> | null = null;\n  state = { show: false };\n\n  showPopper = () => {\n    if (this.hideTimeout) {\n      clearTimeout(this.hideTimeout);\n    }\n    this.setState({ show: true });\n  };\n\n  hidePopper = () => {\n    this.hideTimeout = setTimeout(() => {\n      this.setState({ show: false });\n    }, this.props.hideAfter);\n  };\n\n  render() {\n    const { children, content, placement = 'auto' } = this.props;\n    const { show } = this.state;\n\n    return children(this.showPopper, this.hidePopper, {\n      show,\n      placement,\n      content,\n    });\n  }\n}\n\nexport { PopoverController };\n","import {\n  FloatingArrow,\n  arrow,\n  autoUpdate,\n  flip,\n  offset,\n  shift,\n  useFloating,\n  useTransitionStyles,\n} from '@floating-ui/react';\nimport { useLayoutEffect, useRef } from 'react';\nimport * as React from 'react';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { getPlacement } from '../../utils/tooltipUtils';\nimport { Portal } from '../Portal/Portal';\n\nimport { PopoverContent, TooltipPlacement } from './types';\n\ninterface Props extends Omit<React.HTMLAttributes<HTMLDivElement>, 'content'> {\n  show: boolean;\n  placement?: TooltipPlacement;\n  content: PopoverContent;\n  referenceElement: HTMLElement;\n  wrapperClassName?: string;\n  renderArrow?: boolean;\n  hidePopper?: () => void;\n  style?: React.CSSProperties;\n}\n\nexport function Popover({\n  content,\n  show,\n  placement,\n  className,\n  wrapperClassName,\n  referenceElement,\n  renderArrow,\n  hidePopper,\n  style: styleOverrides,\n  ...rest\n}: Props) {\n  const theme = useTheme2();\n  const arrowRef = useRef(null);\n\n  // the order of middleware is important!\n  // `arrow` should almost always be at the end\n  // see https://floating-ui.com/docs/arrow#order\n  const middleware = [\n    offset(8),\n    flip({\n      fallbackAxisSideDirection: 'end',\n      // see https://floating-ui.com/docs/flip#combining-with-shift\n      crossAxis: false,\n      boundary: document.body,\n    }),\n    shift(),\n  ];\n\n  if (renderArrow) {\n    middleware.push(\n      arrow({\n        element: arrowRef,\n      })\n    );\n  }\n\n  const { context, refs, floatingStyles } = useFloating({\n    open: show,\n    placement: getPlacement(placement),\n    middleware,\n    whileElementsMounted: autoUpdate,\n    strategy: 'fixed',\n  });\n\n  useLayoutEffect(() => {\n    refs.setReference(referenceElement);\n  }, [referenceElement, refs]);\n\n  const { styles: placementStyles } = useTransitionStyles(context, {\n    initial: () => ({\n      opacity: 0,\n    }),\n    duration: theme.transitions.duration.enteringScreen,\n  });\n\n  return show ? (\n    <Portal>\n      <div\n        ref={refs.setFloating}\n        style={{\n          ...floatingStyles,\n          ...placementStyles,\n          ...styleOverrides,\n        }}\n        className={wrapperClassName}\n        {...rest}\n      >\n        <div className={className}>\n          {renderArrow && <FloatingArrow fill={theme.colors.border.weak} ref={arrowRef} context={context} />}\n          {typeof content === 'string' && content}\n          {React.isValidElement(content) && React.cloneElement(content)}\n          {typeof content === 'function' && content({ hidePopper })}\n        </div>\n      </div>\n    </Portal>\n  ) : undefined;\n}\n","import { css, cx } from '@emotion/css';\nimport {\n  arrow,\n  autoUpdate,\n  flip,\n  FloatingArrow,\n  FloatingFocusManager,\n  offset,\n  shift,\n  useClick,\n  useDismiss,\n  useFloating,\n  useInteractions,\n} from '@floating-ui/react';\nimport { Placement } from '@popperjs/core';\nimport { memo, cloneElement, isValidElement, useRef, useState } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\nimport { buildTooltipTheme, getPlacement } from '../../utils/tooltipUtils';\nimport { IconButton } from '../IconButton/IconButton';\n\nimport { ToggletipContent } from './types';\n\nexport interface ToggletipProps {\n  /** The theme used to display the toggletip */\n  theme?: 'info' | 'error';\n  /** The title to be displayed on the header */\n  title?: JSX.Element | string;\n  /** determine whether to show or not the close button **/\n  closeButton?: boolean;\n  /** Callback function to be called when the toggletip is closed */\n  onClose?: () => void;\n  /** The preferred placement of the toggletip */\n  placement?: Placement;\n  /** The text or component that houses the content of the toggleltip */\n  content: ToggletipContent;\n  /** The text or component to be displayed on the toggletip's bottom */\n  footer?: JSX.Element | string;\n  /** The UI control users interact with to display toggletips */\n  children: JSX.Element;\n  /** Determine whether the toggletip should fit its content or not */\n  fitContent?: boolean;\n  /** Determine whether the toggletip should be shown or not */\n  show?: boolean;\n  /** Callback function to be called when the toggletip is opened */\n  onOpen?: () => void;\n}\n\nexport const Toggletip = memo(\n  ({\n    children,\n    theme = 'info',\n    placement = 'auto',\n    content,\n    title,\n    closeButton = true,\n    onClose,\n    footer,\n    fitContent = false,\n    onOpen,\n    show,\n  }: ToggletipProps) => {\n    const arrowRef = useRef(null);\n    const grafanaTheme = useTheme2();\n    const styles = useStyles2(getStyles);\n    const style = styles[theme];\n    const [controlledVisible, setControlledVisible] = useState(show);\n    const isOpen = show ?? controlledVisible;\n\n    // the order of middleware is important!\n    // `arrow` should almost always be at the end\n    // see https://floating-ui.com/docs/arrow#order\n    const middleware = [\n      offset(8),\n      flip({\n        fallbackAxisSideDirection: 'end',\n        // see https://floating-ui.com/docs/flip#combining-with-shift\n        crossAxis: false,\n        boundary: document.body,\n      }),\n      shift(),\n      arrow({\n        element: arrowRef,\n      }),\n    ];\n\n    const { context, refs, floatingStyles } = useFloating({\n      open: isOpen,\n      placement: getPlacement(placement),\n      onOpenChange: (open) => {\n        if (show === undefined) {\n          setControlledVisible(open);\n        }\n        if (!open) {\n          onClose?.();\n        } else {\n          onOpen?.();\n        }\n      },\n      middleware,\n      whileElementsMounted: autoUpdate,\n      strategy: 'fixed',\n    });\n\n    const click = useClick(context);\n    const dismiss = useDismiss(context);\n\n    const { getReferenceProps, getFloatingProps } = useInteractions([dismiss, click]);\n\n    return (\n      <>\n        {cloneElement(children, {\n          ref: refs.setReference,\n          tabIndex: 0,\n          'aria-expanded': isOpen,\n          ...getReferenceProps(),\n        })}\n        {isOpen && (\n          <FloatingFocusManager context={context} modal={false} closeOnFocusOut={false}>\n            <div\n              data-testid=\"toggletip-content\"\n              className={cx(style.container, {\n                [styles.fitContent]: fitContent,\n              })}\n              ref={refs.setFloating}\n              style={floatingStyles}\n              {...getFloatingProps()}\n            >\n              <FloatingArrow\n                strokeWidth={0.3}\n                stroke={grafanaTheme.colors.border.weak}\n                className={style.arrow}\n                ref={arrowRef}\n                context={context}\n              />\n              {Boolean(title) && <div className={style.header}>{title}</div>}\n              {closeButton && (\n                <div className={style.headerClose}>\n                  <IconButton\n                    aria-label={t('grafana-ui.toggletip.close', 'Close')}\n                    name=\"times\"\n                    data-testid=\"toggletip-header-close\"\n                    onClick={() => {\n                      setControlledVisible(false);\n                      onClose?.();\n                    }}\n                  />\n                </div>\n              )}\n              <div className={style.body}>\n                {(typeof content === 'string' || isValidElement(content)) && content}\n                {typeof content === 'function' && content({})}\n              </div>\n              {Boolean(footer) && <div className={style.footer}>{footer}</div>}\n            </div>\n          </FloatingFocusManager>\n        )}\n      </>\n    );\n  }\n);\n\nToggletip.displayName = 'Toggletip';\n\nexport const getStyles = (theme: GrafanaTheme2) => {\n  const info = buildTooltipTheme(\n    theme,\n    theme.colors.background.primary,\n    theme.colors.border.weak,\n    theme.components.tooltip.text,\n    { topBottom: 2, rightLeft: 2 }\n  );\n  const error = buildTooltipTheme(\n    theme,\n    theme.colors.error.main,\n    theme.colors.error.main,\n    theme.colors.error.contrastText,\n    { topBottom: 2, rightLeft: 2 }\n  );\n\n  return {\n    info,\n    error,\n    fitContent: css({\n      maxWidth: 'fit-content',\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { useEffect, useRef, useState } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport const ScrollIndicators = ({ children }: React.PropsWithChildren<{}>) => {\n  const [showScrollTopIndicator, setShowTopScrollIndicator] = useState(false);\n  const [showScrollBottomIndicator, setShowBottomScrollIndicator] = useState(false);\n  const scrollTopMarker = useRef<HTMLDivElement>(null);\n  const scrollBottomMarker = useRef<HTMLDivElement>(null);\n  const styles = useStyles2(getStyles);\n\n  // Here we observe the top and bottom markers to determine if we should show the scroll indicators\n  useEffect(() => {\n    const intersectionObserver = new IntersectionObserver((entries) => {\n      entries.forEach((entry) => {\n        if (entry.target === scrollTopMarker.current) {\n          setShowTopScrollIndicator(!entry.isIntersecting);\n        } else if (entry.target === scrollBottomMarker.current) {\n          setShowBottomScrollIndicator(!entry.isIntersecting);\n        }\n      });\n    });\n    [scrollTopMarker, scrollBottomMarker].forEach((ref) => {\n      if (ref.current) {\n        intersectionObserver.observe(ref.current);\n      }\n    });\n    return () => intersectionObserver.disconnect();\n  }, []);\n\n  return (\n    <>\n      <div\n        className={cx(styles.scrollIndicator, styles.scrollTopIndicator, {\n          [styles.scrollIndicatorVisible]: showScrollTopIndicator,\n        })}\n      />\n      <div className={styles.scrollContent}>\n        <div ref={scrollTopMarker} />\n        {children}\n        <div ref={scrollBottomMarker} />\n      </div>\n      <div\n        className={cx(styles.scrollIndicator, styles.scrollBottomIndicator, {\n          [styles.scrollIndicatorVisible]: showScrollBottomIndicator,\n        })}\n      />\n    </>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    scrollContent: css({\n      flex: 1,\n      position: 'relative',\n    }),\n    scrollIndicator: css({\n      height: theme.spacing(6),\n      left: 0,\n      opacity: 0,\n      pointerEvents: 'none',\n      position: 'absolute',\n      right: 0,\n      [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n        transition: theme.transitions.create('opacity'),\n      },\n      zIndex: 1,\n    }),\n    scrollTopIndicator: css({\n      background: `linear-gradient(0deg, transparent, ${theme.colors.background.canvas})`,\n      top: 0,\n    }),\n    scrollBottomIndicator: css({\n      background: `linear-gradient(180deg, transparent, ${theme.colors.background.canvas})`,\n      bottom: 0,\n    }),\n    scrollIndicatorVisible: css({\n      opacity: 1,\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { RefCallback, useCallback, useEffect, useRef } from 'react';\nimport * as React from 'react';\nimport Scrollbars, { positionValues } from 'react-custom-scrollbars-2';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { ScrollIndicators } from './ScrollIndicators';\n\nexport type ScrollbarPosition = positionValues;\n\ninterface Props {\n  className?: string;\n  testId?: string;\n  autoHide?: boolean;\n  autoHideTimeout?: number;\n  autoHeightMax?: string;\n  hideTracksWhenNotNeeded?: boolean;\n  hideHorizontalTrack?: boolean;\n  hideVerticalTrack?: boolean;\n  scrollRefCallback?: RefCallback<HTMLDivElement>;\n  scrollTop?: number;\n  setScrollTop?: (position: ScrollbarPosition) => void;\n  showScrollIndicators?: boolean;\n  autoHeightMin?: number | string;\n  updateAfterMountMs?: number;\n  onScroll?: React.UIEventHandler;\n  divId?: string;\n}\n\n/**\n * Wraps component into <Scrollbars> component from `react-custom-scrollbars`\n * @deprecated Use `ScrollContainer` from `@grafana/ui` instead. It uses native scrollbars and has a simpler API.\n */\nexport const CustomScrollbar = ({\n  autoHide = false,\n  autoHideTimeout = 200,\n  setScrollTop,\n  className,\n  testId,\n  autoHeightMin = '0',\n  autoHeightMax = '100%',\n  hideTracksWhenNotNeeded = false,\n  hideHorizontalTrack,\n  hideVerticalTrack,\n  scrollRefCallback,\n  showScrollIndicators = false,\n  updateAfterMountMs,\n  scrollTop,\n  onScroll,\n  children,\n  divId,\n}: React.PropsWithChildren<Props>) => {\n  const ref = useRef<Scrollbars & { view: HTMLDivElement; update: () => void }>(null);\n  const styles = useStyles2(getStyles);\n\n  useEffect(() => {\n    if (ref.current && scrollRefCallback) {\n      scrollRefCallback(ref.current.view);\n    }\n  }, [ref, scrollRefCallback]);\n\n  useScrollTop(ref.current, scrollTop);\n\n  /**\n   * Special logic for doing a update a few milliseconds after mount to check for\n   * updated height due to dynamic content\n   */\n  useEffect(() => {\n    if (!updateAfterMountMs) {\n      return;\n    }\n    setTimeout(() => {\n      const scrollbar = ref.current;\n      if (scrollbar?.update) {\n        scrollbar.update();\n      }\n    }, updateAfterMountMs);\n  }, [updateAfterMountMs]);\n\n  function renderTrack(className: string, hideTrack: boolean | undefined, passedProps: JSX.IntrinsicElements['div']) {\n    if (passedProps.style && hideTrack) {\n      passedProps.style.display = 'none';\n    }\n\n    return <div {...passedProps} className={className} />;\n  }\n\n  const renderTrackHorizontal = useCallback(\n    (passedProps: JSX.IntrinsicElements['div']) => {\n      return renderTrack('track-horizontal', hideHorizontalTrack, passedProps);\n    },\n    [hideHorizontalTrack]\n  );\n\n  const renderTrackVertical = useCallback(\n    (passedProps: JSX.IntrinsicElements['div']) => {\n      return renderTrack('track-vertical', hideVerticalTrack, passedProps);\n    },\n    [hideVerticalTrack]\n  );\n\n  const renderThumbHorizontal = useCallback((passedProps: JSX.IntrinsicElements['div']) => {\n    return <div {...passedProps} className=\"thumb-horizontal\" />;\n  }, []);\n\n  const renderThumbVertical = useCallback((passedProps: JSX.IntrinsicElements['div']) => {\n    return <div {...passedProps} className=\"thumb-vertical\" />;\n  }, []);\n\n  const renderView = useCallback(\n    (passedProps: JSX.IntrinsicElements['div']) => {\n      // fixes issues of visibility on safari and ios devices\n      if (passedProps.style && passedProps.style['WebkitOverflowScrolling'] === 'touch') {\n        passedProps.style['WebkitOverflowScrolling'] = 'auto';\n      }\n\n      return <div {...passedProps} className=\"scrollbar-view\" id={divId} />;\n    },\n    [divId]\n  );\n\n  const onScrollStop = useCallback(() => {\n    ref.current && setScrollTop && setScrollTop(ref.current.getValues());\n  }, [setScrollTop]);\n\n  return (\n    <Scrollbars\n      data-testid={testId}\n      ref={ref}\n      className={cx(styles.customScrollbar, className, {\n        [styles.scrollbarWithScrollIndicators]: showScrollIndicators,\n      })}\n      onScrollStop={onScrollStop}\n      autoHeight={true}\n      autoHide={autoHide}\n      autoHideTimeout={autoHideTimeout}\n      hideTracksWhenNotNeeded={hideTracksWhenNotNeeded}\n      // These autoHeightMin & autoHeightMax options affect firefox and chrome differently.\n      // Before these where set to inherit but that caused problems with cut of legends in firefox\n      autoHeightMax={autoHeightMax}\n      autoHeightMin={autoHeightMin}\n      renderTrackHorizontal={renderTrackHorizontal}\n      renderTrackVertical={renderTrackVertical}\n      renderThumbHorizontal={renderThumbHorizontal}\n      renderThumbVertical={renderThumbVertical}\n      renderView={renderView}\n      onScroll={onScroll}\n    >\n      {showScrollIndicators ? <ScrollIndicators>{children}</ScrollIndicators> : children}\n    </Scrollbars>\n  );\n};\n\nexport default CustomScrollbar;\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    customScrollbar: css({\n      // Fix for Firefox. For some reason sometimes .view container gets a height of its content, but in order to\n      // make scroll working it should fit outer container size (scroll appears only when inner container size is\n      // greater than outer one).\n      display: 'flex',\n      flexGrow: 1,\n      '.scrollbar-view': {\n        display: 'flex',\n        flexGrow: 1,\n        flexDirection: 'column',\n      },\n      '.track-vertical': {\n        borderRadius: theme.shape.borderRadius(2),\n        width: `${theme.spacing(1)} !important`,\n        right: 0,\n        bottom: theme.spacing(0.25),\n        top: theme.spacing(0.25),\n      },\n      '.track-horizontal': {\n        borderRadius: theme.shape.borderRadius(2),\n        height: `${theme.spacing(1)} !important`,\n        right: theme.spacing(0.25),\n        bottom: theme.spacing(0.25),\n        left: theme.spacing(0.25),\n      },\n      '.thumb-vertical': {\n        background: theme.colors.action.focus,\n        borderRadius: theme.shape.borderRadius(2),\n        opacity: 0,\n      },\n      '.thumb-horizontal': {\n        background: theme.colors.action.focus,\n        borderRadius: theme.shape.borderRadius(2),\n        opacity: 0,\n      },\n      '&:hover': {\n        '.thumb-vertical, .thumb-horizontal': {\n          opacity: 1,\n          transition: 'opacity 0.3s ease-in-out',\n        },\n      },\n    }),\n    // override the scroll container position so that the scroll indicators\n    // are positioned at the top and bottom correctly.\n    // react-custom-scrollbars doesn't provide any way for us to hook in nicely,\n    // so we have to override with !important. feelsbad.\n    scrollbarWithScrollIndicators: css({\n      '.scrollbar-view': {\n        // Need type assertion here due to the use of !important\n        // see https://github.com/frenic/csstype/issues/114#issuecomment-697201978\n        // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n        position: 'static !important' as 'static',\n      },\n    }),\n  };\n};\n\n/**\n * Calling scrollTop on a scrollbar ref in a useEffect can race with internal state in react-custom-scrollbars-2, causing scrollTop to get called on a stale reference, which prevents the element from scrolling as desired.\n * Adding the reference to the useEffect dependency array not notify react that the reference has changed (and is an eslint violation), so we create a custom hook so updates to the reference trigger another render, fixing the race condition bug.\n *\n * @param scrollBar\n * @param scrollTop\n */\nfunction useScrollTop(\n  scrollBar: (Scrollbars & { view: HTMLDivElement; update: () => void }) | null,\n  scrollTop?: number\n) {\n  useEffect(() => {\n    if (scrollBar && scrollTop != null) {\n      scrollBar.scrollTop(scrollTop);\n    }\n  }, [scrollTop, scrollBar]);\n}\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2, locale } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\ntype CounterVariant = 'primary' | 'secondary';\nexport interface CounterProps {\n  value: number;\n  variant?: CounterVariant;\n}\n\nexport const Counter = ({ value, variant = 'secondary' }: CounterProps) => {\n  const styles = useStyles2(getStyles, variant);\n\n  return <span className={styles.counter}>{locale(value, 0).text}</span>;\n};\n\nconst getStyles = (theme: GrafanaTheme2, variant: CounterVariant) => ({\n  counter: css({\n    label: 'counter',\n    marginLeft: theme.spacing(1),\n    borderRadius: theme.spacing(3),\n    backgroundColor: variant === 'primary' ? theme.colors.primary.main : theme.colors.action.hover,\n    padding: theme.spacing(0.25, 1),\n    color: theme.colors.text.secondary,\n    fontWeight: theme.typography.fontWeightMedium,\n    fontSize: theme.typography.size.sm,\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport { HTMLProps } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, NavModelItem } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { IconName } from '../../types/icon';\nimport { clearButtonStyles } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\nimport { Counter } from './Counter';\n\nexport interface TabProps extends HTMLProps<HTMLElement> {\n  label: string;\n  active?: boolean;\n  /** When provided, it is possible to use the tab as a hyperlink. Use in cases where the tabs update location. */\n  href?: string;\n  icon?: IconName;\n  onChangeTab?: (event: React.MouseEvent<HTMLElement>) => void;\n  /** A number rendered next to the text. Usually used to display the number of items in a tab's view. */\n  counter?: number | null;\n  /** Extra content, displayed after the tab label and counter */\n  suffix?: NavModelItem['tabSuffix'];\n  truncate?: boolean;\n  tooltip?: string;\n  /** When true, the tab will be disabled and not clickable */\n  disabled?: boolean;\n}\n\nexport const Tab = React.forwardRef<HTMLElement, TabProps>(\n  (\n    {\n      label,\n      active,\n      icon,\n      onChangeTab,\n      counter,\n      suffix: Suffix,\n      className,\n      href,\n      truncate,\n      tooltip,\n      disabled,\n      ...otherProps\n    },\n    ref\n  ) => {\n    const tabsStyles = useStyles2(getStyles);\n    const clearStyles = useStyles2(clearButtonStyles);\n\n    const content = () => (\n      <>\n        {icon && <Icon name={icon} data-testid={`tab-icon-${icon}`} />}\n        {label}\n        {typeof counter === 'number' && <Counter value={counter} />}\n        {Suffix && <Suffix className={tabsStyles.suffix} />}\n      </>\n    );\n\n    const linkClass = cx(\n      clearStyles,\n      tabsStyles.link,\n      active ? tabsStyles.activeStyle : tabsStyles.notActive,\n      truncate && tabsStyles.linkTruncate,\n      disabled && tabsStyles.disabled\n    );\n\n    const commonProps = {\n      className: linkClass,\n      'data-testid': selectors.components.Tab.title(label),\n      ...otherProps,\n      onClick: disabled ? undefined : onChangeTab,\n      role: 'tab',\n      'aria-selected': active,\n      'aria-disabled': disabled,\n      tabIndex: disabled ? -1 : undefined,\n      title: !!tooltip ? undefined : otherProps.title, // If tooltip is provided, don't set the title on the link or button, it looks weird\n    };\n\n    let tab = null;\n\n    if (href) {\n      tab = (\n        <div className={cx(tabsStyles.item, truncate && tabsStyles.itemTruncate, className)}>\n          <a\n            {...commonProps}\n            href={disabled ? undefined : href}\n            // don't think we can avoid the type assertion here :(\n            // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n            ref={ref as React.ForwardedRef<HTMLAnchorElement>}\n          >\n            {content()}\n          </a>\n        </div>\n      );\n    } else {\n      tab = (\n        <div className={cx(tabsStyles.item, truncate && tabsStyles.itemTruncate, className)}>\n          <button\n            {...commonProps}\n            type=\"button\"\n            // don't think we can avoid the type assertion here :(\n            // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n            ref={ref as React.ForwardedRef<HTMLButtonElement>}\n          >\n            {content()}\n          </button>\n        </div>\n      );\n    }\n\n    if (tooltip) {\n      return <Tooltip content={tooltip}>{tab}</Tooltip>;\n    }\n\n    return tab;\n  }\n);\n\nTab.displayName = 'Tab';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    item: css({\n      listStyle: 'none',\n      position: 'relative',\n      display: 'flex',\n      whiteSpace: 'nowrap',\n      padding: theme.spacing(0, 0.5),\n    }),\n    itemTruncate: css({\n      maxWidth: theme.spacing(40),\n    }),\n    link: css({\n      color: theme.colors.text.secondary,\n      padding: theme.spacing(1, 1.5, 1),\n      borderRadius: theme.shape.radius.default,\n\n      display: 'block',\n      height: '100%',\n\n      svg: {\n        marginRight: theme.spacing(1),\n      },\n\n      '&:focus-visible': getFocusStyles(theme),\n\n      '&::before': {\n        display: 'block',\n        content: '\" \"',\n        position: 'absolute',\n        left: 0,\n        right: 0,\n        height: '2px',\n        borderRadius: theme.shape.radius.default,\n        bottom: 0,\n      },\n    }),\n    linkTruncate: css({\n      textOverflow: 'ellipsis',\n      whiteSpace: 'nowrap',\n      wordBreak: 'break-word',\n      overflow: 'hidden',\n    }),\n    notActive: css({\n      'a:hover, &:hover, &:focus': {\n        color: theme.colors.text.primary,\n\n        '&::before': {\n          backgroundColor: theme.colors.action.hover,\n        },\n      },\n    }),\n    activeStyle: css({\n      label: 'activeTabStyle',\n      color: theme.colors.text.primary,\n      overflow: 'hidden',\n\n      '&::before': {\n        backgroundImage: theme.colors.gradients.brandHorizontal,\n      },\n    }),\n    suffix: css({\n      marginLeft: theme.spacing(1),\n    }),\n    disabled: css({\n      color: theme.colors.text.disabled,\n      cursor: 'not-allowed',\n\n      '&:hover, &:focus': {\n        color: theme.colors.text.disabled,\n\n        '&::before': {\n          backgroundColor: 'transparent',\n        },\n      },\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { HTMLAttributes, ReactNode } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\ninterface Props extends HTMLAttributes<HTMLDivElement> {\n  children: ReactNode;\n}\n\nexport const TabContent = ({ children, className, ...restProps }: Props) => {\n  const styles = useStyles2(getTabContentStyle);\n\n  return (\n    <div {...restProps} className={cx(styles.tabContent, className)}>\n      {children}\n    </div>\n  );\n};\n\nconst getTabContentStyle = (theme: GrafanaTheme2) => ({\n  tabContent: css({\n    background: theme.colors.background.primary,\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport { forwardRef, ReactNode } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport interface Props {\n  /** Children should be a single <Tab /> or an array of <Tab /> */\n  children: ReactNode;\n  className?: string;\n  /** For hiding the bottom border (on PageHeader for example) */\n  hideBorder?: boolean;\n}\n\nexport const TabsBar = forwardRef<HTMLDivElement, Props>(({ children, className, hideBorder = false }, ref) => {\n  const styles = useStyles2(getStyles);\n\n  return (\n    <div className={cx(styles.tabsWrapper, hideBorder && styles.noBorder, className)} ref={ref}>\n      <div className={styles.tabs} role=\"tablist\">\n        {children}\n      </div>\n    </div>\n  );\n});\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  tabsWrapper: css({\n    borderBottom: `1px solid ${theme.colors.border.weak}`,\n    overflowX: 'auto',\n  }),\n  noBorder: css({\n    borderBottom: 0,\n  }),\n  tabs: css({\n    position: 'relative',\n    display: 'flex',\n    alignItems: 'center',\n  }),\n});\n\nTabsBar.displayName = 'TabsBar';\n","import { css } from '@emotion/css';\nimport { useState } from 'react';\nimport * as React from 'react';\n\nimport { SelectableValue, GrafanaTheme2 } from '@grafana/data';\n\nimport { IconButton } from '../../components/IconButton/IconButton';\nimport { Tab } from '../../components/Tabs/Tab';\nimport { TabContent } from '../../components/Tabs/TabContent';\nimport { TabsBar } from '../../components/Tabs/TabsBar';\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { IconName } from '../../types/icon';\nimport { Box } from '../Layout/Box/Box';\nimport { ScrollContainer } from '../ScrollContainer/ScrollContainer';\n\nexport interface TabConfig {\n  label: string;\n  value: string;\n  content: React.ReactNode;\n  icon: IconName;\n}\n\nexport interface TabbedContainerProps {\n  tabs: TabConfig[];\n  defaultTab?: string;\n  closeIconTooltip?: string;\n  onClose: () => void;\n  testId?: string;\n}\n\nexport function TabbedContainer({ tabs, defaultTab, closeIconTooltip, onClose, testId }: TabbedContainerProps) {\n  const [activeTab, setActiveTab] = useState(tabs.some((tab) => tab.value === defaultTab) ? defaultTab : tabs[0].value);\n  const styles = useStyles2(getStyles);\n\n  const onSelectTab = (item: SelectableValue<string>) => {\n    setActiveTab(item.value!);\n  };\n\n  return (\n    <div className={styles.container} data-testid={testId}>\n      <TabsBar className={styles.tabs}>\n        {tabs.map((t) => (\n          <Tab\n            key={t.value}\n            label={t.label}\n            active={t.value === activeTab}\n            onChangeTab={() => onSelectTab(t)}\n            icon={t.icon}\n          />\n        ))}\n        <Box grow={1} display=\"flex\" justifyContent=\"flex-end\" paddingRight={1}>\n          <IconButton size=\"lg\" onClick={onClose} name=\"times\" tooltip={closeIconTooltip ?? 'Close'} />\n        </Box>\n      </TabsBar>\n      <ScrollContainer>\n        <TabContent className={styles.tabContent}>{tabs.find((t) => t.value === activeTab)?.content}</TabContent>\n      </ScrollContainer>\n    </div>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  container: css({\n    height: '100%',\n    display: 'flex',\n    flexDirection: 'column',\n    flex: '1 1 0',\n    minHeight: 0,\n  }),\n  tabContent: css({\n    padding: theme.spacing(2),\n    backgroundColor: theme.colors.background.primary,\n    flex: 1,\n  }),\n  tabs: css({\n    paddingTop: theme.spacing(0.5),\n    borderColor: theme.colors.border.weak,\n    ul: {\n      marginLeft: theme.spacing(2),\n    },\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport { autoUpdate, flip, offset, shift, Side, useFloating, useTransitionStyles } from '@floating-ui/react';\nimport { useLayoutEffect } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\nimport { IconName } from '../../types/icon';\nimport { Icon } from '../Icon/Icon';\nimport { Portal } from '../Portal/Portal';\n\nexport interface InlineToastProps {\n  children: React.ReactNode;\n  suffixIcon?: IconName;\n  referenceElement: HTMLElement | null;\n  placement: Side;\n  /**\n   * @deprecated\n   * Placement to use if there is not enough space to show the full toast with the original placement\n   * This is now done automatically.\n   */\n  alternativePlacement?: Side;\n}\n\nexport function InlineToast({ referenceElement, children, suffixIcon, placement }: InlineToastProps) {\n  const styles = useStyles2(getStyles);\n  const theme = useTheme2();\n\n  // the order of middleware is important!\n  // `arrow` should almost always be at the end\n  // see https://floating-ui.com/docs/arrow#order\n  const middleware = [\n    offset(8),\n    flip({\n      fallbackAxisSideDirection: 'end',\n      // see https://floating-ui.com/docs/flip#combining-with-shift\n      crossAxis: false,\n      boundary: document.body,\n    }),\n    shift(),\n  ];\n\n  const { context, refs, floatingStyles } = useFloating({\n    open: true,\n    placement,\n    middleware,\n    whileElementsMounted: autoUpdate,\n    strategy: 'fixed',\n  });\n\n  useLayoutEffect(() => {\n    refs.setReference(referenceElement);\n  }, [referenceElement, refs]);\n\n  const { styles: placementStyles } = useTransitionStyles(context, {\n    initial: ({ side }) => {\n      return {\n        opacity: 0,\n        transform: getInitialTransform(side, theme),\n      };\n    },\n    duration: theme.transitions.duration.shortest,\n  });\n\n  return (\n    <Portal>\n      <div style={{ display: 'inline-block', ...floatingStyles }} ref={refs.setFloating} aria-live=\"polite\">\n        <span className={cx(styles.root)} style={placementStyles}>\n          {children && <span>{children}</span>}\n          {suffixIcon && <Icon name={suffixIcon} />}\n        </span>\n      </div>\n    </Portal>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    root: css({\n      ...theme.typography.bodySmall,\n      willChange: 'transform',\n      background: theme.components.tooltip.background,\n      color: theme.components.tooltip.text,\n      padding: theme.spacing(0.5, 1.5), // get's an extra .5 of vertical padding to account for the rounded corners\n      borderRadius: theme.shape.radius.pill,\n      display: 'inline-flex',\n      gap: theme.spacing(0.5),\n      alignItems: 'center',\n    }),\n  };\n};\n\nconst getInitialTransform = (placement: InlineToastProps['placement'], theme: GrafanaTheme2) => {\n  const gap = 1;\n\n  switch (placement) {\n    case 'top':\n      return `translateY(${theme.spacing(gap)})`;\n    case 'bottom':\n      return `translateY(-${theme.spacing(gap)})`;\n    case 'left':\n      return `translateX(${theme.spacing(gap)})`;\n    case 'right':\n      return `translateX(-${theme.spacing(gap)})`;\n  }\n};\n","import { css, cx } from '@emotion/css';\nimport { useCallback, useRef, useState, useEffect } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Button, ButtonProps } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\nimport { InlineToast } from '../InlineToast/InlineToast';\n\nexport type Props = ButtonProps & {\n  /** A function that returns text to be copied */\n  getText(): string;\n  /** Callback when the text has been successfully copied */\n  onClipboardCopy?(copiedText: string): void;\n  /** Callback when there was an error copying the text */\n  onClipboardError?(copiedText: string, error: unknown): void;\n};\n\nconst SHOW_SUCCESS_DURATION = 2 * 1000;\n\nexport function ClipboardButton({\n  onClipboardCopy,\n  onClipboardError,\n  children,\n  getText,\n  icon,\n  variant,\n  ...buttonProps\n}: Props) {\n  const styles = useStyles2(getStyles);\n  const [showCopySuccess, setShowCopySuccess] = useState(false);\n\n  useEffect(() => {\n    let timeoutId: ReturnType<typeof setTimeout>;\n\n    if (showCopySuccess) {\n      timeoutId = setTimeout(() => {\n        setShowCopySuccess(false);\n      }, SHOW_SUCCESS_DURATION);\n    }\n\n    return () => {\n      window.clearTimeout(timeoutId);\n    };\n  }, [showCopySuccess]);\n\n  const buttonRef = useRef<null | HTMLButtonElement>(null);\n  const copyTextCallback = useCallback(async () => {\n    const textToCopy = getText();\n\n    try {\n      await copyText(textToCopy, buttonRef);\n      setShowCopySuccess(true);\n      onClipboardCopy?.(textToCopy);\n    } catch (e) {\n      onClipboardError?.(textToCopy, e);\n    }\n  }, [getText, onClipboardCopy, onClipboardError]);\n\n  const copiedText = t('clipboard-button.inline-toast.success', 'Copied');\n  return (\n    <>\n      {showCopySuccess && (\n        <InlineToast placement=\"top\" referenceElement={buttonRef.current}>\n          {copiedText}\n        </InlineToast>\n      )}\n\n      <Button\n        onClick={copyTextCallback}\n        icon={icon}\n        variant={showCopySuccess ? 'success' : variant}\n        {...buttonProps}\n        className={cx(styles.button, showCopySuccess && styles.successButton, buttonProps.className)}\n        ref={buttonRef}\n      >\n        {children}\n\n        {showCopySuccess && (\n          <div className={styles.successOverlay}>\n            <Icon name=\"check\" />\n          </div>\n        )}\n      </Button>\n    </>\n  );\n}\n\nconst copyText = async (text: string, buttonRef: React.MutableRefObject<HTMLButtonElement | null>) => {\n  if (navigator.clipboard && window.isSecureContext) {\n    return navigator.clipboard.writeText(text);\n  } else {\n    // Use a fallback method for browsers/contexts that don't support the Clipboard API.\n    // See https://web.dev/async-clipboard/#feature-detection.\n    // Use textarea so the user can copy multi-line content.\n    const textarea = document.createElement('textarea');\n    // Normally we'd append this to the body. However if we're inside a focus manager\n    // from react-aria, we can't focus anything outside of the managed area.\n    // Instead, let's append it to the button. Then we're guaranteed to be able to focus + copy.\n    buttonRef.current?.appendChild(textarea);\n    textarea.value = text;\n    textarea.focus();\n    textarea.select();\n    document.execCommand('copy');\n    textarea.remove();\n  }\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    button: css({\n      position: 'relative',\n    }),\n    successButton: css({\n      '> *': css({\n        visibility: 'hidden',\n      }),\n    }),\n    successOverlay: css({\n      position: 'absolute',\n      top: 0,\n      bottom: 0,\n      right: 0,\n      left: 0,\n      visibility: 'visible', // re-visible the overlay\n    }),\n  };\n};\n","import { BaseOptionType as RCCascaderOption, CascaderProps } from 'rc-cascader';\n\nimport { CascaderOption } from './Cascader';\n\ntype onChangeType = ((values: string[], options: CascaderOption[]) => void) | undefined;\n\nexport const onChangeCascader =\n  (onChanged: onChangeType): CascaderProps['onChange'] =>\n  (values, options) => {\n    if (onChanged) {\n      // map values to strings for backwards compatibility with Cascader components\n      onChanged(\n        values.map((value) => String(value)),\n        fromRCOptions(options)\n      );\n    }\n  };\n\ntype onLoadDataType = ((options: CascaderOption[]) => void) | undefined;\n\nexport const onLoadDataCascader = (onLoadData: onLoadDataType) => (options: RCCascaderOption[]) => {\n  if (onLoadData) {\n    onLoadData(fromRCOptions(options));\n  }\n};\n\nconst fromRCOptions = (options: RCCascaderOption[]): CascaderOption[] => {\n  return options.map(fromRCOption);\n};\n\nconst fromRCOption = (option: RCCascaderOption): CascaderOption => {\n  const value = option.value ? String(option.value) : '';\n  return {\n    value,\n    label: typeof option.label === 'string' ? option.label : value,\n  };\n};\n","import { css, keyframes } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { getIconPath } from '../Icon/utils';\n\nconst slideUpIn = keyframes({\n  '0%': {\n    opacity: 0,\n    transformOrigin: '0% 0%',\n    transform: 'scaleY(0.8)',\n  },\n\n  '100%': {\n    opacity: 1,\n    transformOrigin: '0% 0%',\n    transform: 'scaleY(1)',\n  },\n});\n\nconst slideUpOut = keyframes({\n  '0%': {\n    opacity: 1,\n    transformOrigin: '0% 0%',\n    transform: 'scaleY(1)',\n  },\n\n  '100%': {\n    opacity: 0,\n    transformOrigin: '0% 0%',\n    transform: 'scaleY(0.8)',\n  },\n});\n\nconst slideDownIn = keyframes({\n  '0%': {\n    opacity: 0,\n    transformOrigin: '0% 100%',\n    transform: 'scaleY(0.8)',\n  },\n\n  '100%': {\n    opacity: 1,\n    transformOrigin: '0% 100%',\n    transform: 'scaleY(1)',\n  },\n});\n\nconst slideDownOut = keyframes({\n  '0%': {\n    opacity: 1,\n    transformOrigin: '0% 100%',\n    transform: 'scaleY(1)',\n  },\n\n  '100%': {\n    opacity: 0,\n    transformOrigin: '0% 100%',\n    transform: 'scaleY(0.8)',\n  },\n});\n\nexport const getCascaderStyles = (theme: GrafanaTheme2) => {\n  const iconPath = getIconPath('angle-right');\n  return {\n    dropdown: css({\n      '&.rc-cascader-dropdown': {\n        position: 'absolute',\n        // Required, otherwise the portal that the popup is shown in will render under other components\n        zIndex: 9999,\n\n        '&-hidden': {\n          display: 'none',\n        },\n      },\n      '.rc-cascader': {\n        '&-menus': {\n          overflow: 'hidden',\n          background: theme.colors.background.elevated,\n          border: `none`,\n          borderRadius: theme.shape.radius.default,\n          boxShadow: theme.shadows.z3,\n          whiteSpace: 'nowrap',\n\n          '&.slide-up-enter, &.slide-up-appear': {\n            animationDuration: '0.3s',\n            animationFillMode: 'both',\n            transformOrigin: '0 0',\n            opacity: 0,\n            animationTimingFunction: 'cubic-bezier(0.08, 0.82, 0.17, 1)',\n            animationPlayState: 'paused',\n          },\n\n          '&.slide-up-enter.slide-up-enter-active.rc-cascader-menus-placement, &.slide-up-appear.slide-up-appear-active.rc-cascader-menus-placement':\n            {\n              '&-bottomLeft': {\n                animationName: slideUpIn,\n                animationPlayState: 'running',\n              },\n\n              '&-topLeft': {\n                animationName: slideDownIn,\n                animationPlayState: 'running',\n              },\n            },\n\n          '&.slide-up-leave': {\n            animationDuration: '0.3s',\n            animationFillMode: 'both',\n            transformOrigin: '0 0',\n            opacity: 1,\n            animationTimingFunction: 'cubic-bezier(0.6, 0.04, 0.98, 0.34)',\n            animationPlayState: 'paused',\n\n            '&.slide-up-leave-active.rc-cascader-menus-placement': {\n              '&-bottomLeft': {\n                animationName: slideUpOut,\n                animationPlayState: 'running',\n              },\n\n              '&-topLeft': {\n                animationName: slideDownOut,\n                animationPlayState: 'running',\n              },\n            },\n          },\n        },\n\n        '&-menu': {\n          display: 'inline-block',\n          maxWidth: '50vw',\n          height: '192px',\n          listStyle: 'none',\n          margin: 0,\n          padding: theme.spacing(0.5),\n          borderRight: `1px solid ${theme.colors.border.weak}`,\n          overflow: 'auto',\n\n          '&:last-child': {\n            borderRight: 0,\n          },\n\n          '&-item': {\n            height: theme.spacing(4),\n            lineHeight: theme.spacing(4),\n            padding: theme.spacing(0, 4, 0, 2),\n            borderRadius: theme.shape.radius.default,\n            cursor: 'pointer',\n            whiteSpace: 'nowrap',\n            overflow: 'hidden',\n            textOverflow: 'ellipsis',\n            transition: 'all 0.3s ease',\n            position: 'relative',\n\n            '&:hover': {\n              background: theme.colors.action.hover,\n            },\n\n            '&-disabled': {\n              cursor: 'not-allowed',\n              color: theme.colors.text.disabled,\n\n              '&:hover': {\n                background: 'transparent',\n              },\n\n              '&:after': {\n                position: 'absolute',\n                right: '12px',\n                content: \"'loading'\",\n                color: theme.colors.text.disabled,\n                fontStyle: 'italic',\n              },\n            },\n\n            '&-active': {\n              color: theme.colors.text.maxContrast,\n              background: theme.colors.background.secondary,\n\n              '&:hover': {\n                background: theme.colors.action.hover,\n              },\n            },\n\n            '&-expand': {\n              position: 'relative',\n\n              '&:after': {\n                background: theme.colors.text.primary,\n                content: \"''\",\n                height: theme.spacing(3),\n                mask: `url(${iconPath})`,\n                maskType: 'luminance',\n                position: 'absolute',\n                right: 0,\n                top: theme.spacing(0.5),\n                width: theme.spacing(3),\n              },\n            },\n          },\n        },\n      },\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport memoize from 'micro-memoize';\nimport RCCascader from 'rc-cascader';\nimport { PureComponent } from 'react';\nimport * as React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { withTheme2 } from '../../themes/ThemeContext';\nimport { Themeable2 } from '../../types/theme';\nimport { Icon } from '../Icon/Icon';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Input } from '../Input/Input';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { Select } from '../Select/Select';\n\nimport { onChangeCascader } from './optionMappings';\nimport { getCascaderStyles } from './styles';\n\nexport interface CascaderProps extends Themeable2 {\n  /** The separator between levels in the search */\n  separator?: string;\n  placeholder?: string;\n  /** As the onSelect handler reports only the leaf node selected, the leaf nodes should have unique value. */\n  options: CascaderOption[];\n  /** Changes the value for every selection, including branch nodes. Defaults to true. */\n  changeOnSelect?: boolean;\n  onSelect(val: string): void;\n  /** Sets the width to a multiple of 8px. Should only be used with inline forms. Setting width of the container is preferred in other cases.*/\n  width?: number;\n  /** Single string that needs to be the same as value of the last item in the selection chain. */\n  initialValue?: string;\n  allowCustomValue?: boolean;\n  /** A function for formatting the message for custom value creation. Only applies when allowCustomValue is set to true*/\n  formatCreateLabel?: (val: string) => string;\n  /** If true all levels are shown in the input by simple concatenating the labels */\n  displayAllSelectedLevels?: boolean;\n  onBlur?: () => void;\n  /** When mounted focus automatically on the input */\n  autoFocus?: boolean;\n  /** Keep the dropdown open all the time, useful in case whole cascader visibility is controlled by the parent */\n  alwaysOpen?: boolean;\n  /** Don't show what is selected in the cascader input/search. Useful when input is used just as search and the\n      cascader is hidden after selection. */\n  hideActiveLevelLabel?: boolean;\n  disabled?: boolean;\n  /** ID for the underlying Select/Cascader component */\n  id?: string;\n  /** Whether you can clear the selected value or not */\n  isClearable?: boolean;\n}\n\ninterface CascaderState {\n  isSearching: boolean;\n  focusCascade: boolean;\n  //Array for cascade navigation\n  rcValue: SelectableValue<string[]>;\n  activeLabel: string;\n  inputValue: string;\n}\n\nexport interface CascaderOption {\n  /**\n   *  The value used under the hood\n   */\n  value: string;\n  /**\n   *  The label to display in the UI\n   */\n  label: string;\n  /** Items will be just flattened into the main list of items recursively. */\n  items?: CascaderOption[];\n  disabled?: boolean;\n  /** Avoid using */\n  title?: string;\n  /**  Children will be shown in a submenu. Use 'items' instead, as 'children' exist to ensure backwards compatibility.*/\n  children?: CascaderOption[];\n}\n\nconst disableDivFocus = css({\n  '&:focus': {\n    outline: 'none',\n  },\n});\n\nconst DEFAULT_SEPARATOR = ' / ';\n\nclass UnthemedCascader extends PureComponent<CascaderProps, CascaderState> {\n  constructor(props: CascaderProps) {\n    super(props);\n    const searchableOptions = this.getSearchableOptions(props.options);\n    const { rcValue, activeLabel } = this.setInitialValue(searchableOptions, props.initialValue);\n    this.state = {\n      isSearching: false,\n      focusCascade: false,\n      rcValue,\n      activeLabel,\n      inputValue: '',\n    };\n  }\n\n  static defaultProps = { changeOnSelect: true };\n\n  flattenOptions = (options: CascaderOption[], optionPath: CascaderOption[] = []) => {\n    let selectOptions: Array<SelectableValue<string[]>> = [];\n    for (const option of options) {\n      const cpy = [...optionPath];\n      cpy.push(option);\n      if (!option.items || option.items.length === 0) {\n        selectOptions.push({\n          singleLabel: cpy[cpy.length - 1].label,\n          label: cpy.map((o) => o.label).join(this.props.separator || DEFAULT_SEPARATOR),\n          value: cpy.map((o) => o.value),\n        });\n      } else {\n        selectOptions = [...selectOptions, ...this.flattenOptions(option.items, cpy)];\n      }\n    }\n    return selectOptions;\n  };\n\n  getSearchableOptions = memoize((options: CascaderOption[]) => this.flattenOptions(options));\n\n  setInitialValue(searchableOptions: Array<SelectableValue<string[]>>, initValue?: string) {\n    if (!initValue) {\n      return { rcValue: [], activeLabel: '' };\n    }\n    for (const option of searchableOptions) {\n      const optionPath = option.value || [];\n\n      if (optionPath[optionPath.length - 1] === initValue) {\n        return {\n          rcValue: optionPath,\n          activeLabel: this.props.displayAllSelectedLevels ? option.label : option.singleLabel || '',\n        };\n      }\n    }\n    if (this.props.allowCustomValue) {\n      return { rcValue: [], activeLabel: initValue };\n    }\n    return { rcValue: [], activeLabel: '' };\n  }\n\n  //For rc-cascader\n  onChange = (value: string[], selectedOptions: CascaderOption[]) => {\n    const activeLabel = this.props.hideActiveLevelLabel\n      ? ''\n      : this.props.displayAllSelectedLevels\n        ? selectedOptions.map((option) => option.label).join(this.props.separator || DEFAULT_SEPARATOR)\n        : selectedOptions[selectedOptions.length - 1].label;\n    const state: CascaderState = {\n      rcValue: { value, label: activeLabel },\n      focusCascade: true,\n      activeLabel,\n      isSearching: false,\n      inputValue: activeLabel,\n    };\n    this.setState(state);\n    this.props.onSelect(selectedOptions[selectedOptions.length - 1].value);\n  };\n\n  //For select\n  onSelect = (obj: SelectableValue<string[]>) => {\n    const valueArray = obj.value || [];\n    const activeLabel = this.props.displayAllSelectedLevels ? obj.label : obj.singleLabel || '';\n    const state: CascaderState = {\n      activeLabel: activeLabel,\n      inputValue: activeLabel,\n      rcValue: { value: valueArray, label: activeLabel },\n      isSearching: false,\n      focusCascade: false,\n    };\n    this.setState(state);\n    this.props.onSelect(valueArray[valueArray.length - 1]);\n  };\n\n  onCreateOption = (value: string) => {\n    this.setState({\n      activeLabel: value,\n      inputValue: value,\n      rcValue: [],\n      isSearching: false,\n    });\n    this.props.onSelect(value);\n  };\n\n  onBlur = () => {\n    this.setState({\n      isSearching: false,\n      focusCascade: false,\n    });\n\n    if (this.state.activeLabel === '') {\n      this.setState({\n        rcValue: [],\n      });\n    }\n    this.props.onBlur?.();\n  };\n\n  onBlurCascade = () => {\n    this.setState({\n      focusCascade: false,\n    });\n\n    this.props.onBlur?.();\n  };\n\n  onInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n    if (['ArrowDown', 'ArrowUp', 'Enter', 'ArrowLeft', 'ArrowRight'].includes(e.key)) {\n      return;\n    }\n    const { activeLabel } = this.state;\n    this.setState({\n      focusCascade: false,\n      isSearching: true,\n      inputValue: activeLabel,\n    });\n  };\n\n  onSelectInputChange = (value: string) => {\n    this.setState({\n      inputValue: value,\n    });\n  };\n\n  render() {\n    const {\n      allowCustomValue,\n      formatCreateLabel,\n      placeholder,\n      width,\n      changeOnSelect,\n      options,\n      disabled,\n      id,\n      isClearable,\n      theme,\n    } = this.props;\n    const { focusCascade, isSearching, rcValue, activeLabel, inputValue } = this.state;\n\n    const searchableOptions = this.getSearchableOptions(options);\n    const styles = getCascaderStyles(theme);\n\n    return (\n      <div>\n        {isSearching ? (\n          <Select\n            allowCustomValue={allowCustomValue}\n            placeholder={placeholder}\n            autoFocus={!focusCascade}\n            onChange={this.onSelect}\n            onBlur={this.onBlur}\n            options={searchableOptions}\n            onCreateOption={this.onCreateOption}\n            formatCreateLabel={formatCreateLabel}\n            width={width}\n            onInputChange={this.onSelectInputChange}\n            disabled={disabled}\n            inputValue={inputValue}\n            inputId={id}\n          />\n        ) : (\n          <RCCascader\n            onChange={onChangeCascader(this.onChange)}\n            options={options}\n            changeOnSelect={changeOnSelect}\n            value={rcValue.value}\n            fieldNames={{ label: 'label', value: 'value', children: 'items' }}\n            expandIcon={null}\n            open={this.props.alwaysOpen}\n            disabled={disabled}\n            dropdownClassName={styles.dropdown}\n          >\n            <div className={disableDivFocus}>\n              <Input\n                autoFocus={this.props.autoFocus}\n                width={width}\n                placeholder={placeholder}\n                onBlur={this.onBlurCascade}\n                value={activeLabel}\n                onKeyDown={this.onInputKeyDown}\n                onChange={() => {}}\n                suffix={\n                  <Stack gap={0.5}>\n                    {isClearable && activeLabel !== '' && (\n                      <IconButton\n                        name=\"times\"\n                        aria-label={t('grafana-ui.cascader.clear-button', 'Clear selection')}\n                        onClick={(e) => {\n                          e.preventDefault();\n                          e.stopPropagation();\n                          this.setState({ rcValue: [], activeLabel: '', inputValue: '' });\n                          this.props.onSelect('');\n                        }}\n                      />\n                    )}\n                    <Icon name={focusCascade ? 'angle-up' : 'angle-down'} />\n                  </Stack>\n                }\n                disabled={disabled}\n                id={id}\n              />\n            </div>\n          </RCCascader>\n        )}\n      </div>\n    );\n  }\n}\n\nexport const Cascader = withTheme2(UnthemedCascader);\n","import { css, cx } from '@emotion/css';\nimport { AriaRole, HTMLAttributes, ReactNode } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { IconName } from '../../types/icon';\nimport { Button } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\nimport { Box } from '../Layout/Box/Box';\nimport { Text } from '../Text/Text';\nexport type AlertVariant = 'success' | 'warning' | 'error' | 'info';\n\nexport interface Props extends HTMLAttributes<HTMLDivElement> {\n  title: string;\n  /** On click handler for alert button, mostly used for dismissing the alert */\n  onRemove?: (event: React.MouseEvent) => void;\n  severity?: AlertVariant;\n  children?: ReactNode;\n  elevated?: boolean;\n  buttonContent?: React.ReactNode | string;\n  bottomSpacing?: number;\n  topSpacing?: number;\n}\n\nexport const Alert = React.forwardRef<HTMLDivElement, Props>(\n  (\n    {\n      title,\n      onRemove,\n      children,\n      buttonContent,\n      elevated,\n      bottomSpacing,\n      topSpacing,\n      className,\n      severity = 'error',\n      ...restProps\n    },\n    ref\n  ) => {\n    const theme = useTheme2();\n    const hasTitle = Boolean(title);\n    const styles = getStyles(theme, severity, hasTitle, elevated, bottomSpacing, topSpacing);\n    const rolesBySeverity: Record<AlertVariant, AriaRole> = {\n      error: 'alert',\n      warning: 'alert',\n      info: 'status',\n      success: 'status',\n    };\n    const role = restProps['role'] || rolesBySeverity[severity];\n    const ariaLabel = restProps['aria-label'] || title;\n\n    const closeLabel = t('grafana-ui.alert.close-button', 'Close alert');\n\n    return (\n      <div ref={ref} className={cx(styles.wrapper, className)} role={role} aria-label={ariaLabel} {...restProps}>\n        <Box\n          data-testid={selectors.components.Alert.alertV2(severity)}\n          display=\"flex\"\n          backgroundColor={severity}\n          borderRadius=\"default\"\n          paddingY={1}\n          paddingX={2}\n          borderStyle=\"solid\"\n          borderColor={severity}\n          alignItems=\"stretch\"\n          boxShadow={elevated ? 'z3' : undefined}\n        >\n          <Box paddingTop={1} paddingRight={2}>\n            <div className={styles.icon}>\n              <Icon size=\"xl\" name={getIconFromSeverity(severity)} />\n            </div>\n          </Box>\n\n          <Box paddingY={1} grow={1}>\n            <Text color=\"primary\" weight=\"medium\">\n              {title}\n            </Text>\n            {children && <div className={styles.content}>{children}</div>}\n          </Box>\n          {/* If onRemove is specified, giving preference to onRemove */}\n          {onRemove && !buttonContent && (\n            <div className={styles.close}>\n              <Button\n                aria-label={closeLabel}\n                icon=\"times\"\n                onClick={onRemove}\n                type=\"button\"\n                fill=\"text\"\n                variant=\"secondary\"\n              />\n            </div>\n          )}\n\n          {onRemove && buttonContent && (\n            <Box marginLeft={1} display=\"flex\" alignItems=\"center\">\n              <Button aria-label={closeLabel} variant=\"secondary\" onClick={onRemove} type=\"button\">\n                {buttonContent}\n              </Button>\n            </Box>\n          )}\n        </Box>\n      </div>\n    );\n  }\n);\n\nAlert.displayName = 'Alert';\n\nexport const getIconFromSeverity = (severity: AlertVariant): IconName => {\n  switch (severity) {\n    case 'error':\n      return 'exclamation-circle';\n    case 'warning':\n      return 'exclamation-triangle';\n    case 'info':\n      return 'info-circle';\n    case 'success':\n      return 'check';\n  }\n};\n\nconst getStyles = (\n  theme: GrafanaTheme2,\n  severity: AlertVariant,\n  hasTitle: boolean,\n  elevated?: boolean,\n  bottomSpacing?: number,\n  topSpacing?: number\n) => {\n  const color = theme.colors[severity];\n\n  return {\n    wrapper: css({\n      flexGrow: 1,\n      marginBottom: theme.spacing(bottomSpacing ?? 2),\n      marginTop: theme.spacing(topSpacing ?? 0),\n      position: 'relative',\n\n      '&:before': {\n        content: '\"\"',\n        position: 'absolute',\n        top: 0,\n        left: 0,\n        bottom: 0,\n        right: 0,\n        background: theme.colors.background.primary,\n        zIndex: -1,\n      },\n    }),\n    icon: css({\n      color: color.text,\n      position: 'relative',\n      top: '-1px',\n    }),\n    content: css({\n      color: theme.colors.text.primary,\n      paddingTop: hasTitle ? theme.spacing(0.5) : 0,\n      maxHeight: '50vh',\n      overflowY: 'auto',\n    }),\n    close: css({\n      position: 'relative',\n      color: theme.colors.text.secondary,\n      background: 'none',\n      display: 'flex',\n      top: '-6px',\n      right: '-14px',\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { OverlayContainer, useOverlay } from '@react-aria/overlays';\nimport { useState, useEffect, useRef, useId } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Alert } from '../Alert/Alert';\nimport { clearButtonStyles } from '../Button/Button';\nimport { IconButton } from '../IconButton/IconButton';\n\n// Define the image item interface\nexport interface CarouselImage {\n  path: string;\n  name: string;\n}\n\nexport interface CarouselProps {\n  images: CarouselImage[];\n}\n\nexport const Carousel: React.FC<CarouselProps> = ({ images }) => {\n  const [selectedIndex, setSelectedIndex] = useState<number | null>(null);\n  const [imageErrors, setImageErrors] = useState<Record<string, boolean>>({});\n  const [validImages, setValidImages] = useState<CarouselImage[]>(images);\n  const id = useId();\n\n  const styles = useStyles2(getStyles);\n  const resetButtonStyles = useStyles2(clearButtonStyles);\n\n  const handleImageError = (path: string) => {\n    setImageErrors((prev) => ({\n      ...prev,\n      [path]: true,\n    }));\n  };\n\n  useEffect(() => {\n    const filteredImages = images.filter((image) => !imageErrors[image.path]);\n    setValidImages(filteredImages);\n  }, [imageErrors, images]);\n\n  const openPreview = (index: number) => {\n    setSelectedIndex(index);\n  };\n\n  const closePreview = () => {\n    setSelectedIndex(null);\n  };\n\n  const goToNext = () => {\n    if (selectedIndex !== null && validImages.length > 0) {\n      setSelectedIndex((selectedIndex + 1) % validImages.length);\n    }\n  };\n\n  const goToPrevious = () => {\n    if (selectedIndex !== null && validImages.length > 0) {\n      setSelectedIndex((selectedIndex - 1 + validImages.length) % validImages.length);\n    }\n  };\n\n  const handleKeyDown = (event: React.KeyboardEvent) => {\n    if (selectedIndex === null) {\n      return;\n    }\n\n    switch (event.key) {\n      case 'ArrowRight':\n        goToNext();\n        break;\n      case 'ArrowLeft':\n        goToPrevious();\n        break;\n      case 'Escape':\n        closePreview();\n        break;\n      default:\n        break;\n    }\n  };\n\n  const ref = useRef<HTMLDivElement>(null);\n\n  const { overlayProps, underlayProps } = useOverlay({ isOpen: selectedIndex !== null, onClose: closePreview }, ref);\n  const { dialogProps } = useDialog({}, ref);\n\n  if (validImages.length === 0) {\n    return (\n      <Alert\n        title={t('carousel.error', 'Something went wrong loading images')}\n        severity=\"warning\"\n        data-testid=\"alert-warning\"\n      />\n    );\n  }\n\n  return (\n    <>\n      <div className={cx(styles.imageGrid)}>\n        {validImages.map((image, index) => {\n          const imageNameId = `${id}-carousel-image-${index}`;\n          return (\n            <button\n              aria-label={t('grafana-ui.carousel.aria-label-open-image', 'Open image preview')}\n              aria-describedby={imageNameId}\n              type=\"button\"\n              key={image.path}\n              onClick={() => openPreview(index)}\n              className={cx(resetButtonStyles, styles.imageButton)}\n            >\n              <img src={image.path} alt=\"\" onError={() => handleImageError(image.path)} />\n              <p id={imageNameId}>{image.name}</p>\n            </button>\n          );\n        })}\n      </div>\n\n      {selectedIndex !== null && (\n        <OverlayContainer>\n          <div role=\"presentation\" className={styles.underlay} onClick={closePreview} {...underlayProps} />\n          <FocusScope contain autoFocus restoreFocus>\n            {/* convenience method for keyboard users */}\n            {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n            <div\n              data-testid=\"carousel-full-screen\"\n              ref={ref}\n              {...overlayProps}\n              {...dialogProps}\n              onKeyDown={handleKeyDown}\n              className={styles.overlay}\n            >\n              <IconButton\n                name=\"times\"\n                aria-label={t('carousel.close', 'Close')}\n                size=\"xl\"\n                onClick={closePreview}\n                className={cx(styles.closeButton)}\n              />\n\n              <IconButton\n                size=\"xl\"\n                name=\"angle-left\"\n                aria-label={t('carousel.previous', 'Previous')}\n                onClick={goToPrevious}\n                data-testid=\"previous-button\"\n              />\n\n              <div className={styles.imageContainer} data-testid=\"carousel-full-image\">\n                <img\n                  className={styles.imagePreview}\n                  src={validImages[selectedIndex].path}\n                  alt={validImages[selectedIndex].name}\n                  onError={() => handleImageError(validImages[selectedIndex].path)}\n                />\n              </div>\n\n              <IconButton\n                size=\"xl\"\n                name=\"angle-right\"\n                aria-label={t('carousel.next', 'Next')}\n                onClick={goToNext}\n                data-testid=\"next-button\"\n              />\n            </div>\n          </FocusScope>\n        </OverlayContainer>\n      )}\n    </>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  imageButton: css({\n    textAlign: 'left',\n  }),\n  imageContainer: css({\n    display: 'flex',\n    justifyContent: 'center',\n    flex: 1,\n  }),\n  imagePreview: css({\n    maxWidth: '100%',\n    maxHeight: '80vh',\n    objectFit: 'contain',\n  }),\n  imageGrid: css({\n    display: 'grid',\n    gridTemplateColumns: `repeat(auto-fill, minmax(200px, 1fr))`,\n    gap: theme.spacing(2),\n    marginBottom: '20px',\n\n    '& img': {\n      width: '100%',\n      height: '150px',\n      objectFit: 'cover',\n      border: theme.colors.border.strong,\n      borderRadius: theme.shape.radius.default,\n      boxShadow: theme.shadows.z1,\n    },\n    '& p': {\n      margin: theme.spacing(0.5, 0),\n      fontWeight: theme.typography.fontWeightMedium,\n      color: theme.colors.text.primary,\n    },\n  }),\n  underlay: css({\n    position: 'fixed',\n    zIndex: theme.zIndex.modalBackdrop,\n    inset: 0,\n    backgroundColor: theme.components.overlay.background,\n  }),\n  overlay: css({\n    alignItems: 'center',\n    display: 'flex',\n    gap: theme.spacing(1),\n    height: 'fit-content',\n    marginBottom: 'auto',\n    marginTop: 'auto',\n    padding: theme.spacing(2),\n    position: 'fixed',\n    inset: 0,\n    zIndex: theme.zIndex.modal,\n  }),\n  closeButton: css({\n    color: theme.colors.text.primary,\n    position: 'fixed',\n    top: theme.spacing(2),\n    right: theme.spacing(2),\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport RCCascader, { FieldNames } from 'rc-cascader';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { IconName } from '../../types/icon';\nimport { Button, ButtonProps } from '../Button/Button';\nimport { CascaderOption } from '../Cascader/Cascader';\nimport { onChangeCascader, onLoadDataCascader } from '../Cascader/optionMappings';\nimport { getCascaderStyles } from '../Cascader/styles';\nimport { Icon } from '../Icon/Icon';\n\nexport interface ButtonCascaderProps {\n  options: CascaderOption[];\n  children: string;\n  icon?: IconName;\n  disabled?: boolean;\n  value?: string[];\n  fieldNames?: FieldNames<CascaderOption, keyof CascaderOption>;\n  loadData?: (selectedOptions: CascaderOption[]) => void;\n  onChange?: (value: string[], selectedOptions: CascaderOption[]) => void;\n  onPopupVisibleChange?: (visible: boolean) => void;\n  className?: string;\n  variant?: ButtonProps['variant'];\n  buttonProps?: Omit<ButtonProps, 'children'>;\n  hideDownIcon?: boolean;\n}\n\nexport const ButtonCascader = (props: ButtonCascaderProps) => {\n  const { onChange, className, loadData, icon, buttonProps, hideDownIcon, variant, disabled, ...rest } = props;\n  const styles = useStyles2(getStyles);\n  const cascaderStyles = useStyles2(getCascaderStyles);\n\n  // Weird way to do this bit it goes around a styling issue in Button where even null/undefined child triggers\n  // styling change which messes up the look if there is only single icon content.\n  let content: React.ReactNode = props.children;\n  if (!hideDownIcon) {\n    content = [props.children, <Icon key={'down-icon'} name=\"angle-down\" className={styles.icons.right} />];\n  }\n\n  return (\n    <RCCascader\n      onChange={onChangeCascader(onChange)}\n      loadData={onLoadDataCascader(loadData)}\n      dropdownClassName={cx(cascaderStyles.dropdown, styles.popup)}\n      {...rest}\n      expandIcon={null}\n    >\n      <Button icon={icon} disabled={disabled} variant={variant} {...(buttonProps ?? {})}>\n        {content}\n      </Button>\n    </RCCascader>\n  );\n};\n\nButtonCascader.displayName = 'ButtonCascader';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    popup: css({\n      label: 'popup',\n      zIndex: theme.zIndex.dropdown,\n    }),\n    icons: {\n      right: css({\n        margin: '1px 0 0 4px',\n      }),\n      left: css({\n        margin: '-1px 4px 0 0',\n      }),\n    },\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { HTMLAttributes } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Spinner } from '../Spinner/Spinner';\n\n/**\n * @public\n */\nexport interface LoadingPlaceholderProps extends HTMLAttributes<HTMLDivElement> {\n  text: React.ReactNode;\n}\n\n/**\n * @public\n */\nexport const LoadingPlaceholder = ({ text, className, ...rest }: LoadingPlaceholderProps) => {\n  const styles = useStyles2(getStyles);\n  return (\n    <div className={cx(styles.container, className)} {...rest}>\n      {text} <Spinner inline={true} />\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      marginBottom: theme.spacing(4),\n    }),\n  };\n};\n","import { css, keyframes } from '@emotion/css';\nimport { CSSProperties } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport interface LoadingBarProps {\n  width: number;\n  delay?: number;\n  ariaLabel?: string;\n}\n\nconst BAR_WIDTH = 28;\nconst MILLISECONDS_PER_PIXEL = 2.4;\nconst MIN_DURATION_MS = 500;\nconst MAX_DURATION_MS = 4000;\nconst DEFAULT_ANIMATION_DELAY = 300;\nconst MAX_TRANSLATE_X = (100 / BAR_WIDTH) * 100;\n\nexport function LoadingBar({ width, delay = DEFAULT_ANIMATION_DELAY, ariaLabel = 'Loading bar' }: LoadingBarProps) {\n  const durationMs = Math.min(Math.max(Math.round(width * MILLISECONDS_PER_PIXEL), MIN_DURATION_MS), MAX_DURATION_MS);\n  const styles = useStyles2(getStyles, delay, durationMs);\n  const containerStyles: CSSProperties = {\n    overflow: 'hidden',\n  };\n\n  return (\n    <div style={containerStyles}>\n      <div aria-label={ariaLabel} role=\"status\" className={styles.bar} />\n    </div>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2, delay: number, duration: number) => {\n  const animation = keyframes({\n    '0%': {\n      transform: 'translateX(-100%)',\n    },\n    // this gives us a delay between iterations\n    '85%, 100%': {\n      transform: `translateX(${MAX_TRANSLATE_X}%)`,\n    },\n  });\n\n  return {\n    bar: css({\n      width: BAR_WIDTH + '%',\n      height: 1,\n      background: `linear-gradient(90deg, transparent 0%, ${theme.colors.primary.main} 80.75%, transparent 100%)`,\n      transform: 'translateX(-100%)',\n      willChange: 'transform',\n      [theme.transitions.handleMotion('no-preference')]: {\n        animationName: animation,\n        // an initial delay to prevent the loader from showing if the response is faster than the delay\n        animationDelay: `${delay}ms`,\n        animationTimingFunction: 'linear',\n        animationIterationCount: 'infinite',\n        animationDuration: `${duration}ms`,\n      },\n      [theme.transitions.handleMotion('reduce')]: {\n        animationName: animation,\n        // an initial delay to prevent the loader from showing if the response is faster than the delay\n        animationDelay: `${delay}ms`,\n        animationTimingFunction: 'linear',\n        animationIterationCount: 'infinite',\n        animationDuration: `${4 * duration}ms`,\n      },\n    }),\n  };\n};\n","export const closePopover = (event: React.KeyboardEvent, hidePopper: () => void) => {\n  if (event.key === 'Tab' || event.altKey || event.ctrlKey || event.metaKey) {\n    return;\n  }\n\n  event.stopPropagation();\n\n  if (event.key === 'Escape') {\n    hidePopper();\n  }\n\n  return;\n};\n","import { css } from '@emotion/css';\nimport { useFocusRing } from '@react-aria/focus';\nimport * as React from 'react';\nimport tinycolor from 'tinycolor2';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\n\n/** @internal */\nexport enum ColorSwatchVariant {\n  Small = 'small',\n  Large = 'large',\n}\n\n/** @internal */\nexport interface Props extends React.HTMLAttributes<HTMLDivElement> {\n  color: string;\n  label?: string;\n  variant?: ColorSwatchVariant;\n  isSelected?: boolean;\n}\n\n/** @internal */\nexport const ColorSwatch = React.forwardRef<HTMLDivElement, Props>(\n  ({ color, label, variant = ColorSwatchVariant.Small, isSelected, 'aria-label': ariaLabel, ...otherProps }, ref) => {\n    const theme = useTheme2();\n    const { isFocusVisible, focusProps } = useFocusRing();\n    const styles = getStyles(theme, variant, color, isFocusVisible, isSelected);\n    const hasLabel = !!label;\n    const colorLabel = ariaLabel || label;\n    return (\n      <div ref={ref} className={styles.wrapper} data-testid={selectors.components.ColorSwatch.name} {...otherProps}>\n        {hasLabel && <span className={styles.label}>{label}</span>}\n        <button\n          className={styles.swatch}\n          {...focusProps}\n          aria-label={\n            colorLabel\n              ? t('grafana-ui.color-swatch.aria-label-selected-color', '{{colorLabel}} color', { colorLabel })\n              : t('grafana-ui.color-swatch.aria-label-default', 'Pick a color')\n          }\n          type=\"button\"\n        />\n      </div>\n    );\n  }\n);\n\nconst getStyles = (\n  theme: GrafanaTheme2,\n  variant: ColorSwatchVariant,\n  color: string,\n  isFocusVisible: boolean,\n  isSelected?: boolean\n) => {\n  const tc = tinycolor(color);\n  const isSmall = variant === ColorSwatchVariant.Small;\n  const swatchSize = isSmall ? '16px' : '32px';\n  let border = 'none';\n\n  if (tc.getAlpha() < 0.1) {\n    border = `2px solid ${theme.colors.border.medium}`;\n  }\n\n  return {\n    wrapper: css({\n      display: 'flex',\n      alignItems: 'center',\n      cursor: 'pointer',\n    }),\n    label: css({\n      marginRight: theme.spacing(1),\n    }),\n    swatch: css({\n      width: swatchSize,\n      height: swatchSize,\n      background: `${color}`,\n      border,\n      borderRadius: theme.shape.radius.circle,\n      outlineOffset: '1px',\n      outline: isFocusVisible ? `2px solid  ${theme.colors.primary.main}` : 'none',\n      boxShadow: isSelected\n        ? `inset 0 0 0 2px ${color}, inset 0 0 0 4px ${theme.colors.getContrastText(color)}`\n        : 'none',\n      [theme.transitions.handleMotion('no-preference')]: {\n        transition: theme.transitions.create(['transform'], {\n          duration: theme.transitions.duration.short,\n        }),\n      },\n      '&:hover': {\n        transform: 'scale(1.1)',\n      },\n      '@media (forced-colors: active)': {\n        forcedColorAdjust: 'none',\n      },\n    }),\n  };\n};\n\nColorSwatch.displayName = 'ColorSwatch';\n","import { css } from '@emotion/css';\nimport { Property } from 'csstype';\nimport { upperFirst } from 'lodash';\nimport { useMemo } from 'react';\n\nimport { GrafanaTheme2, ThemeVizHue } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { ColorSwatch, ColorSwatchVariant } from './ColorSwatch';\n\ninterface NamedColorsGroupProps {\n  hue: ThemeVizHue;\n  selectedColor?: Property.Color;\n  onColorSelect: (colorName: string) => void;\n  key?: string;\n}\n\nconst NamedColorsGroup = ({ hue, selectedColor, onColorSelect, ...otherProps }: NamedColorsGroupProps) => {\n  const label = upperFirst(hue.name);\n  const styles = useStyles2(getStyles);\n  const reversedShades = useMemo(() => {\n    return [...hue.shades].reverse();\n  }, [hue.shades]);\n\n  return (\n    <div className={styles.colorRow}>\n      <div className={styles.colorLabel}>{label}</div>\n      <div {...otherProps} className={styles.swatchRow}>\n        {reversedShades.map((shade) => (\n          <ColorSwatch\n            key={shade.name}\n            aria-label={shade.name}\n            variant={shade.primary ? ColorSwatchVariant.Large : ColorSwatchVariant.Small}\n            isSelected={shade.name === selectedColor}\n            color={shade.color}\n            onClick={() => onColorSelect(shade.name)}\n          />\n        ))}\n      </div>\n    </div>\n  );\n};\n\nexport default NamedColorsGroup;\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    colorRow: css({\n      display: 'grid',\n      gridTemplateColumns: '25% 1fr',\n      gridColumnGap: theme.spacing(2),\n      padding: theme.spacing(0.5, 0),\n\n      '&:hover': {\n        background: theme.colors.background.secondary,\n      },\n    }),\n    colorLabel: css({\n      paddingLeft: theme.spacing(1),\n      display: 'flex',\n      alignItems: 'center',\n    }),\n    swatchRow: css({\n      display: 'flex',\n      gap: theme.spacing(1),\n      alignItems: 'center',\n      justifyContent: 'space-around',\n      flexDirection: 'row',\n    }),\n  };\n};\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\n\nimport { ColorSwatch } from './ColorSwatch';\nimport NamedColorsGroup from './NamedColorsGroup';\n\nexport interface NamedColorsPaletteProps {\n  color?: string;\n  onChange: (colorName: string) => void;\n}\n\nexport const NamedColorsPalette = ({ color, onChange }: NamedColorsPaletteProps) => {\n  const theme = useTheme2();\n  const styles = useStyles2(getStyles);\n\n  const swatches: JSX.Element[] = [];\n  for (const hue of theme.visualization.hues) {\n    swatches.push(<NamedColorsGroup key={hue.name} selectedColor={color} hue={hue} onColorSelect={onChange} />);\n  }\n\n  return (\n    <>\n      <div className={styles.swatches}>{swatches}</div>\n      <div className={styles.extraColors}>\n        <ColorSwatch\n          isSelected={color === 'transparent'}\n          color={'rgba(0,0,0,0)'}\n          label={t('grafana-ui.named-colors-palette.transparent-swatch', 'Transparent')}\n          onClick={() => onChange('transparent')}\n        />\n        <ColorSwatch\n          isSelected={color === 'text'}\n          color={theme.colors.text.primary}\n          label={t('grafana-ui.named-colors-palette.text-color-swatch', 'Text color')}\n          onClick={() => onChange('text')}\n        />\n      </div>\n    </>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      display: 'flex',\n      flexDirection: 'column',\n    }),\n    extraColors: css({\n      display: 'flex',\n      alignItems: 'center',\n      justifyContent: 'space-around',\n      gap: theme.spacing(1),\n      padding: theme.spacing(1, 0),\n    }),\n    swatches: css({\n      display: 'grid',\n      flexGrow: 1,\n    }),\n  };\n};\n","import { cx, css } from '@emotion/css';\nimport { debounce } from 'lodash';\nimport { forwardRef, useState, useEffect, useMemo } from 'react';\nimport * as React from 'react';\nimport tinycolor from 'tinycolor2';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Input, Props as InputProps } from '../Input/Input';\n\nimport { ColorPickerProps } from './ColorPickerPopover';\n\ninterface ColorInputProps extends ColorPickerProps, Omit<InputProps, 'color' | 'onChange'> {\n  isClearable?: boolean;\n  buttonAriaLabel?: string;\n}\n\nconst ColorInput = forwardRef<HTMLInputElement, ColorInputProps>(\n  ({ color, onChange, isClearable = false, onClick, onBlur, disabled, buttonAriaLabel, ...inputProps }, ref) => {\n    const [value, setValue] = useState(color);\n    const [previousColor, setPreviousColor] = useState(color);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    const updateColor = useMemo(() => debounce(onChange, 100), []);\n\n    useEffect(() => {\n      const newColor = tinycolor(color);\n      if (newColor.isValid() && color !== previousColor) {\n        setValue(newColor.toString());\n        setPreviousColor(color);\n      }\n    }, [color, previousColor]);\n\n    const onChangeColor = (event: React.SyntheticEvent<HTMLInputElement>) => {\n      const { value: colorValue } = event.currentTarget;\n\n      setValue(colorValue);\n      if (colorValue === '' && isClearable) {\n        updateColor(colorValue);\n        return;\n      }\n      const newColor = tinycolor(colorValue);\n\n      if (newColor.isValid()) {\n        updateColor(newColor.toString());\n      }\n    };\n\n    const onBlurInput = (event: React.FocusEvent<HTMLInputElement>) => {\n      const newColor = tinycolor(value);\n\n      if (!newColor.isValid()) {\n        setValue(color);\n      }\n\n      onBlur?.(event);\n    };\n\n    return (\n      <Input\n        {...inputProps}\n        value={value}\n        onChange={onChangeColor}\n        disabled={disabled}\n        onClick={onClick}\n        onBlur={onBlurInput}\n        addonBefore={<ColorPreview onClick={onClick} ariaLabel={buttonAriaLabel} disabled={disabled} color={color} />}\n        ref={ref}\n      />\n    );\n  }\n);\n\nColorInput.displayName = 'ColorInput';\n\nexport default ColorInput;\n\ninterface ColorPreviewProps {\n  color: string;\n  onClick?: React.MouseEventHandler<HTMLElement>;\n  disabled?: boolean;\n  ariaLabel?: string;\n}\n\nconst ColorPreview = ({ color, onClick, disabled, ariaLabel }: ColorPreviewProps) => {\n  const styles = useStyles2(getColorPreviewStyles);\n\n  return (\n    <button\n      type=\"button\"\n      onClick={onClick}\n      aria-label={ariaLabel}\n      disabled={disabled || !onClick}\n      className={cx(\n        styles,\n        css({\n          backgroundColor: color,\n        })\n      )}\n    />\n  );\n};\n\nconst getColorPreviewStyles = (theme: GrafanaTheme2) =>\n  css({\n    height: '100%',\n    width: `${theme.spacing.gridSize * 4}px`,\n    borderRadius: `${theme.shape.radius.default} 0 0 ${theme.shape.radius.default}`,\n    border: `1px solid ${theme.colors.border.medium}`,\n  });\n","import { css } from '@emotion/css';\nimport { useMemo, useState } from 'react';\nimport { RgbaStringColorPicker } from 'react-colorful';\nimport { useThrottleFn } from 'react-use';\nimport tinycolor from 'tinycolor2';\n\nimport { GrafanaTheme2, colorManipulator } from '@grafana/data';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\n\nimport ColorInput from './ColorInput';\n\nexport interface SpectrumPaletteProps {\n  color: string;\n  onChange: (color: string) => void;\n}\n\nconst SpectrumPalette = ({ color, onChange }: SpectrumPaletteProps) => {\n  const [currentColor, setColor] = useState(color);\n\n  useThrottleFn(\n    (c) => {\n      onChange(colorManipulator.asHexString(theme.visualization.getColorByName(c)));\n    },\n    500,\n    [currentColor]\n  );\n\n  const theme = useTheme2();\n  const styles = useStyles2(getStyles);\n\n  const rgbaString = useMemo(() => {\n    return currentColor.startsWith('rgba')\n      ? currentColor\n      : tinycolor(theme.visualization.getColorByName(color)).toRgbString();\n  }, [currentColor, theme, color]);\n\n  return (\n    <div className={styles.wrapper}>\n      <RgbaStringColorPicker className={styles.root} color={rgbaString} onChange={setColor} />\n      <ColorInput theme={theme} color={rgbaString} onChange={setColor} className={styles.colorInput} />\n    </div>\n  );\n};\n\nexport const getStyles = (theme: GrafanaTheme2) => ({\n  wrapper: css({\n    flexGrow: 1,\n  }),\n  root: css({\n    '&.react-colorful': {\n      width: 'auto',\n    },\n\n    '.react-colorful': {\n      '&__saturation': {\n        borderRadius: `${theme.shape.radius.default} ${theme.shape.radius.default} 0 0`,\n      },\n      '&__alpha': {\n        borderRadius: `0 0 ${theme.shape.radius.default} ${theme.shape.radius.default}`,\n      },\n      '&__alpha, &__hue': {\n        height: theme.spacing(2),\n        position: 'relative',\n      },\n      '&__pointer': {\n        height: theme.spacing(2),\n        width: theme.spacing(2),\n      },\n    },\n  }),\n  colorInput: css({\n    marginTop: theme.spacing(2),\n  }),\n});\n\nexport default SpectrumPalette;\n","import { css } from '@emotion/css';\nimport { FocusScope } from '@react-aria/focus';\nimport { Component } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, colorManipulator } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { withTheme2 } from '../../themes/ThemeContext';\nimport { stylesFactory } from '../../themes/stylesFactory';\nimport { Themeable2 } from '../../types/theme';\nimport { Tab } from '../Tabs/Tab';\nimport { TabsBar } from '../Tabs/TabsBar';\nimport { PopoverContentProps } from '../Tooltip/types';\n\nimport { NamedColorsPalette } from './NamedColorsPalette';\nimport SpectrumPalette from './SpectrumPalette';\n\nexport type ColorPickerChangeHandler = (color: string) => void;\n\nexport interface ColorPickerProps extends Themeable2 {\n  color: string;\n  onChange: ColorPickerChangeHandler;\n  enableNamedColors?: boolean;\n  id?: string;\n}\n\nexport interface Props<T> extends ColorPickerProps, PopoverContentProps {\n  customPickers?: T;\n}\n\ntype PickerType = 'palette' | 'spectrum';\n\nexport interface CustomPickersDescriptor {\n  [key: string]: {\n    tabComponent: React.ComponentType<ColorPickerProps>;\n    name: string;\n  };\n}\n\ninterface State<T> {\n  activePicker: PickerType | keyof T;\n}\n\nclass UnThemedColorPickerPopover<T extends CustomPickersDescriptor> extends Component<Props<T>, State<T>> {\n  constructor(props: Props<T>) {\n    super(props);\n    this.state = {\n      activePicker: 'palette',\n    };\n  }\n\n  handleChange = (color: string) => {\n    const { onChange, enableNamedColors, theme } = this.props;\n    if (enableNamedColors) {\n      return onChange(color);\n    }\n    onChange(colorManipulator.asHexString(theme.visualization.getColorByName(color)));\n  };\n\n  onTabChange = (tab: PickerType | keyof T) => {\n    return () => this.setState({ activePicker: tab });\n  };\n\n  renderPicker = () => {\n    const { activePicker } = this.state;\n    const { color } = this.props;\n\n    switch (activePicker) {\n      case 'spectrum':\n        return <SpectrumPalette color={color} onChange={this.handleChange} />;\n      case 'palette':\n        return <NamedColorsPalette color={color} onChange={this.handleChange} />;\n      default:\n        return this.renderCustomPicker(activePicker);\n    }\n  };\n\n  renderCustomPicker = (tabKey: keyof T) => {\n    const { customPickers, color, theme } = this.props;\n    if (!customPickers) {\n      return null;\n    }\n\n    return React.createElement(customPickers[tabKey].tabComponent, {\n      color,\n      theme,\n      onChange: this.handleChange,\n    });\n  };\n\n  renderCustomPickerTabs = () => {\n    const { customPickers } = this.props;\n\n    if (!customPickers) {\n      return null;\n    }\n\n    return (\n      <>\n        {Object.keys(customPickers).map((key) => {\n          return <Tab label={customPickers[key].name} onChangeTab={this.onTabChange(key)} key={key} />;\n        })}\n      </>\n    );\n  };\n\n  render() {\n    const { theme } = this.props;\n    const { activePicker } = this.state;\n\n    const styles = getStyles(theme);\n\n    return (\n      <FocusScope contain restoreFocus autoFocus>\n        {/*\n          tabIndex=-1 is needed here to support highlighting text within the picker when using FocusScope\n          see https://github.com/adobe/react-spectrum/issues/1604#issuecomment-781574668\n        */}\n        <div tabIndex={-1} className={styles.colorPickerPopover}>\n          <TabsBar>\n            <Tab\n              label={t('grafana-ui.color-picker-popover.palette-tab', 'Colors')}\n              onChangeTab={this.onTabChange('palette')}\n              active={activePicker === 'palette'}\n            />\n            <Tab\n              label={t('grafana-ui.color-picker-popover.spectrum-tab', 'Custom')}\n              onChangeTab={this.onTabChange('spectrum')}\n              active={activePicker === 'spectrum'}\n            />\n            {this.renderCustomPickerTabs()}\n          </TabsBar>\n          <div className={styles.colorPickerPopoverContent}>{this.renderPicker()}</div>\n        </div>\n      </FocusScope>\n    );\n  }\n}\n\nexport const ColorPickerPopover = withTheme2(UnThemedColorPickerPopover);\nColorPickerPopover.displayName = 'ColorPickerPopover';\n\nconst getStyles = stylesFactory((theme: GrafanaTheme2) => {\n  return {\n    colorPickerPopover: css({\n      borderRadius: theme.shape.radius.default,\n      boxShadow: theme.shadows.z3,\n      background: theme.colors.background.elevated,\n      padding: theme.spacing(0.5),\n      border: `1px solid ${theme.colors.border.weak}`,\n    }),\n    colorPickerPopoverContent: css({\n      width: '246px',\n      fontSize: theme.typography.bodySmall.fontSize,\n      minHeight: '184px',\n      height: '290px',\n      padding: theme.spacing(1),\n      display: 'flex',\n      flexDirection: 'column',\n    }),\n    colorPickerPopoverTabs: css({\n      display: 'flex',\n      width: '100%',\n      borderRadius: `${theme.shape.radius.default} ${theme.shape.radius.default} 0 0`,\n    }),\n  };\n});\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip } from '../Tooltip/Tooltip';\nimport { PopoverContent } from '../Tooltip/types';\n\nimport { LabelProps } from './Label';\n\nexport interface Props extends Omit<LabelProps, 'css' | 'description' | 'category'> {\n  /** Content for the labels tooltip. If provided, an info icon with the tooltip content\n   * will be displayed */\n  tooltip?: PopoverContent;\n  /** Custom width for the label */\n  width?: number | 'auto';\n  /** Make labels's background transparent */\n  transparent?: boolean;\n  /** Make tooltip interactive */\n  interactive?: boolean;\n  /** @beta */\n  /** Controls which element the InlineLabel should be rendered into */\n  as?: React.ElementType;\n}\n\nexport const InlineLabel = ({\n  children,\n  className,\n  tooltip,\n  width,\n  transparent,\n  interactive,\n  as: Component = 'label',\n  ...rest\n}: Props) => {\n  const styles = useStyles2(getInlineLabelStyles, transparent, width);\n\n  return (\n    <Component className={cx(styles.label, className)} {...rest}>\n      {children}\n      {tooltip && (\n        <Tooltip interactive={interactive} placement=\"top\" content={tooltip} theme=\"info\">\n          <Icon tabIndex={0} name=\"info-circle\" size=\"sm\" className={styles.icon} />\n        </Tooltip>\n      )}\n    </Component>\n  );\n};\n\nexport const getInlineLabelStyles = (theme: GrafanaTheme2, transparent = false, width?: number | 'auto') => {\n  return {\n    label: css({\n      display: 'flex',\n      alignItems: 'center',\n      justifyContent: 'space-between',\n      flexShrink: 0,\n      padding: theme.spacing(0, 1),\n      fontWeight: theme.typography.fontWeightMedium,\n      fontSize: theme.typography.size.sm,\n      backgroundColor: transparent ? 'transparent' : theme.colors.background.secondary,\n      height: theme.spacing(theme.components.height.md),\n      lineHeight: theme.spacing(theme.components.height.md),\n      marginRight: theme.spacing(0.5),\n      borderRadius: theme.shape.radius.default,\n      border: 'none',\n      width: width ? (width !== 'auto' ? `${8 * width}px` : width) : '100%',\n      color: theme.colors.text.primary,\n    }),\n    icon: css({\n      color: theme.colors.text.secondary,\n      marginLeft: '10px',\n\n      ':hover': {\n        color: theme.colors.text.primary,\n      },\n    }),\n  };\n};\n","import { cx, css } from '@emotion/css';\nimport { cloneElement, ReactNode } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { getChildId } from '../../utils/reactUtils';\nimport { PopoverContent } from '../Tooltip/types';\n\nimport { FieldProps } from './Field';\nimport { FieldValidationMessage } from './FieldValidationMessage';\nimport { InlineLabel } from './InlineLabel';\n\nexport interface Props extends Omit<FieldProps, 'css' | 'horizontal' | 'description' | 'error'> {\n  /** Content for the label's tooltip */\n  tooltip?: PopoverContent;\n  /** Custom width for the label as a multiple of 8px */\n  labelWidth?: number | 'auto';\n  /** Make the field's child to fill the width of the row. Equivalent to setting `flex-grow:1` on the field */\n  grow?: boolean;\n  /** Make the field's child shrink with width of the row. Equivalent to setting `flex-shrink:1` on the field */\n  shrink?: boolean;\n  /** Make field's background transparent */\n  transparent?: boolean;\n  /** Error message to display */\n  error?: ReactNode;\n  htmlFor?: string;\n  /** Make tooltip interactive */\n  interactive?: boolean;\n}\n\nexport const InlineField = ({\n  children,\n  label,\n  tooltip,\n  labelWidth = 'auto',\n  invalid,\n  loading,\n  disabled,\n  required,\n  className,\n  htmlFor,\n  grow,\n  shrink,\n  error,\n  transparent,\n  interactive,\n  validationMessageHorizontalOverflow,\n  ...htmlProps\n}: Props) => {\n  const theme = useTheme2();\n  const styles = getStyles(theme, grow, shrink);\n  const inputId = htmlFor ?? getChildId(children);\n\n  const labelElement =\n    typeof label === 'string' ? (\n      <InlineLabel\n        interactive={interactive}\n        width={labelWidth}\n        tooltip={tooltip}\n        htmlFor={inputId}\n        transparent={transparent}\n      >\n        {`${label}${required ? ' *' : ''}`}\n      </InlineLabel>\n    ) : (\n      label\n    );\n\n  return (\n    <div className={cx(styles.container, className)} {...htmlProps}>\n      {labelElement}\n      <div className={styles.childContainer}>\n        {cloneElement(children, { invalid, disabled, loading })}\n        {invalid && error && (\n          <div\n            className={cx(styles.fieldValidationWrapper, {\n              [styles.validationMessageHorizontalOverflow]: !!validationMessageHorizontalOverflow,\n            })}\n          >\n            <FieldValidationMessage>{error}</FieldValidationMessage>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nInlineField.displayName = 'InlineField';\n\nconst getStyles = (theme: GrafanaTheme2, grow?: boolean, shrink?: boolean) => {\n  return {\n    container: css({\n      display: 'flex',\n      flexDirection: 'row',\n      alignItems: 'flex-start',\n      textAlign: 'left',\n      position: 'relative',\n      flex: `${grow ? 1 : 0} ${shrink ? 1 : 0} auto`,\n      margin: `0 ${theme.spacing(0.5)} ${theme.spacing(0.5)} 0`,\n    }),\n    childContainer: css({\n      flex: `${grow ? 1 : 0} ${shrink ? 1 : 0} auto`,\n    }),\n    fieldValidationWrapper: css({\n      marginTop: theme.spacing(0.5),\n    }),\n    validationMessageHorizontalOverflow: css({\n      width: 0,\n      overflowX: 'visible',\n\n      '& > *': {\n        whiteSpace: 'nowrap',\n      },\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { forwardRef, HTMLProps, useRef } from 'react';\n\nimport { GrafanaTheme2, deprecationWarning } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles, getMouseFocusStyles } from '../../themes/mixins';\nimport { Icon } from '../Icon/Icon';\n\nexport interface Props extends Omit<HTMLProps<HTMLInputElement>, 'value'> {\n  value?: boolean;\n  /** Show an invalid state around the input */\n  invalid?: boolean;\n}\n\nexport const Switch = forwardRef<HTMLInputElement, Props>(\n  ({ value, checked, onChange, id, label, disabled, invalid = false, ...inputProps }, ref) => {\n    if (checked) {\n      deprecationWarning('Switch', 'checked prop', 'value');\n    }\n\n    const styles = useStyles2(getSwitchStyles);\n    const switchIdRef = useRef(id ? id : uniqueId('switch-'));\n\n    return (\n      <div className={cx(styles.switch, invalid && styles.invalid)}>\n        <input\n          type=\"checkbox\"\n          role=\"switch\"\n          disabled={disabled}\n          checked={value}\n          onChange={(event) => {\n            !disabled && onChange?.(event);\n          }}\n          id={switchIdRef.current}\n          {...inputProps}\n          ref={ref}\n        />\n        <label htmlFor={switchIdRef.current} aria-label={label}>\n          <Icon name=\"check\" size=\"xs\" />\n        </label>\n      </div>\n    );\n  }\n);\n\nSwitch.displayName = 'Switch';\n\nexport interface InlineSwitchProps extends Props {\n  /** Label to show next to the switch */\n  showLabel?: boolean;\n  /** Make inline switch's background and border transparent */\n  transparent?: boolean;\n}\n\nexport const InlineSwitch = forwardRef<HTMLInputElement, InlineSwitchProps>(\n  ({ transparent, className, showLabel, label, value, id, invalid, ...props }, ref) => {\n    const styles = useStyles2(getSwitchStyles, transparent);\n\n    return (\n      <div\n        className={cx(styles.inlineContainer, className, props.disabled && styles.disabled, invalid && styles.invalid)}\n      >\n        {showLabel && (\n          <label\n            htmlFor={id}\n            className={cx(styles.inlineLabel, value && styles.inlineLabelEnabled, 'inline-switch-label')}\n          >\n            {label}\n          </label>\n        )}\n        <Switch {...props} id={id} label={label} ref={ref} value={value} />\n      </div>\n    );\n  }\n);\n\nInlineSwitch.displayName = 'Switch';\n\nconst getSwitchStyles = (theme: GrafanaTheme2, transparent?: boolean) => ({\n  switch: css({\n    width: theme.spacing(4),\n    height: theme.spacing(2),\n    position: 'relative',\n    lineHeight: 1,\n\n    input: {\n      height: '100%',\n      width: '100% !important',\n      opacity: 0,\n      zIndex: -1000,\n      position: 'absolute',\n\n      '&:checked + label': {\n        background: theme.colors.primary.main,\n        borderColor: theme.colors.primary.main,\n\n        '&:hover': {\n          background: theme.colors.primary.shade,\n        },\n\n        svg: {\n          transform: `translate3d(${theme.spacing(2.25)}, -50%, 0)`,\n          background: theme.colors.primary.contrastText,\n          color: theme.colors.primary.main,\n        },\n      },\n\n      '&:disabled + label': {\n        background: theme.colors.action.disabledBackground,\n        borderColor: theme.colors.border.weak,\n        cursor: 'not-allowed',\n\n        svg: {\n          background: theme.colors.text.disabled,\n        },\n      },\n\n      '&:disabled:checked + label': {\n        background: theme.colors.primary.transparent,\n\n        svg: {\n          color: theme.colors.primary.contrastText,\n        },\n      },\n\n      '&:focus + label, &:focus-visible + label': getFocusStyles(theme),\n\n      '&:focus:not(:focus-visible) + label': getMouseFocusStyles(theme),\n    },\n\n    label: {\n      width: '100%',\n      height: '100%',\n      cursor: 'pointer',\n      borderRadius: theme.shape.radius.pill,\n      background: theme.components.input.background,\n      border: `1px solid ${theme.components.input.borderColor}`,\n      transition: 'all 0.3s ease',\n\n      '&:hover': {\n        borderColor: theme.components.input.borderHover,\n      },\n\n      svg: {\n        position: 'absolute',\n        display: 'block',\n        color: 'transparent',\n        width: theme.spacing(1.5),\n        height: theme.spacing(1.5),\n        borderRadius: theme.shape.radius.circle,\n        background: theme.colors.text.secondary,\n        boxShadow: theme.shadows.z1,\n        left: 0,\n        top: '50%',\n        transform: `translate3d(${theme.spacing(0.25)}, -50%, 0)`,\n        transition: 'transform 0.2s cubic-bezier(0.19, 1, 0.22, 1)',\n\n        '@media (forced-colors: active)': {\n          border: `1px solid ${theme.colors.primary.contrastText}`,\n        },\n      },\n    },\n  }),\n  inlineContainer: css({\n    padding: theme.spacing(0, 1),\n    height: theme.spacing(theme.components.height.md),\n    display: 'inline-flex',\n    alignItems: 'center',\n    background: transparent ? 'transparent' : theme.components.input.background,\n    border: `1px solid ${transparent ? 'transparent' : theme.components.input.borderColor}`,\n    borderRadius: theme.shape.radius.default,\n\n    '&:hover': {\n      border: `1px solid ${transparent ? 'transparent' : theme.components.input.borderHover}`,\n\n      '.inline-switch-label': {\n        color: theme.colors.text.primary,\n      },\n    },\n  }),\n  disabled: css({\n    backgroundColor: transparent ? 'transparent' : 'rgba(204, 204, 220, 0.04)',\n    color: 'rgba(204, 204, 220, 0.6)',\n    border: `1px solid ${transparent ? 'transparent' : 'rgba(204, 204, 220, 0.04)'}`,\n  }),\n  inlineLabel: css({\n    cursor: 'pointer',\n    paddingRight: theme.spacing(1),\n    color: theme.colors.text.secondary,\n    whiteSpace: 'nowrap',\n  }),\n  inlineLabelEnabled: css({\n    color: theme.colors.text.primary,\n  }),\n  invalid: css({\n    'input + label, input:checked + label, input:hover + label': {\n      border: `1px solid ${theme.colors.error.border}`,\n    },\n  }),\n});\n","import { t } from '@grafana/i18n';\n\nimport { withTheme2 } from '../../themes/ThemeContext';\nimport { InlineField } from '../Forms/InlineField';\nimport { InlineSwitch } from '../Switch/Switch';\nimport { PopoverContentProps } from '../Tooltip/types';\n\nimport { ColorPickerPopover, ColorPickerProps } from './ColorPickerPopover';\n\nexport interface SeriesColorPickerPopoverProps extends ColorPickerProps, PopoverContentProps {\n  yaxis?: number;\n  onToggleAxis?: () => void;\n}\n\nexport const SeriesColorPickerPopover = (props: SeriesColorPickerPopoverProps) => {\n  const { yaxis, onToggleAxis, color, ...colorPickerProps } = props;\n  const yAxisLabel = t('grafana-ui.series-color-picker-popover.y-axis-usage', 'Use right y-axis');\n  const customPickers = onToggleAxis\n    ? {\n        yaxis: {\n          name: 'Y-Axis',\n          tabComponent() {\n            return (\n              <InlineField labelWidth={20} label={yAxisLabel}>\n                <InlineSwitch value={yaxis === 2} label={yAxisLabel} onChange={onToggleAxis} />\n              </InlineField>\n            );\n          },\n        },\n      }\n    : undefined;\n  return <ColorPickerPopover {...colorPickerProps} color={color || '#000000'} customPickers={customPickers} />;\n};\n\n// This component is to enable SeriesColorPickerPopover usage via series-color-picker-popover directive\nexport const SeriesColorPickerPopoverWithTheme = withTheme2(SeriesColorPickerPopover);\n","import { css } from '@emotion/css';\nimport { Component, createRef } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { withTheme2 } from '../../themes/ThemeContext';\nimport { stylesFactory } from '../../themes/stylesFactory';\nimport { closePopover } from '../../utils/closePopover';\nimport { Popover } from '../Tooltip/Popover';\nimport { PopoverController } from '../Tooltip/PopoverController';\n\nimport { ColorPickerPopover, ColorPickerProps } from './ColorPickerPopover';\nimport { ColorSwatch } from './ColorSwatch';\nimport { SeriesColorPickerPopover } from './SeriesColorPickerPopover';\n\n/**\n * If you need custom trigger for the color picker you can do that with a render prop pattern and supply a function\n * as a child. You will get show/hide function which you can map to desired interaction (like onClick or onMouseLeave)\n * and a ref which needs to be passed to an HTMLElement for correct positioning. If you want to use class or functional\n * component as a custom trigger you will need to forward the reference to first HTMLElement child.\n */\ntype ColorPickerTriggerRenderer = (props: {\n  // This should be a React.RefObject<HTMLElement> but due to how object refs are defined you cannot downcast from that\n  // to a specific type like React.RefObject<HTMLDivElement> even though it would be fine in runtime.\n  ref: React.RefObject<any>;\n  showColorPicker: () => void;\n  hideColorPicker: () => void;\n}) => React.ReactNode;\n\nexport const colorPickerFactory = <T extends ColorPickerProps>(\n  popover: React.ComponentType<React.PropsWithChildren<T>>,\n  displayName = 'ColorPicker'\n) => {\n  return class ColorPicker extends Component<T & { children?: ColorPickerTriggerRenderer }> {\n    static displayName = displayName;\n    pickerTriggerRef = createRef<any>();\n\n    render() {\n      const { theme, children, onChange, color, id } = this.props;\n      const styles = getStyles(theme);\n      const popoverElement = React.createElement(popover, {\n        ...{ ...this.props, children: null },\n        onChange,\n      });\n      return (\n        <PopoverController content={popoverElement} hideAfter={300}>\n          {(showPopper, hidePopper, popperProps) => {\n            return (\n              <>\n                {this.pickerTriggerRef.current && (\n                  <Popover\n                    {...popperProps}\n                    referenceElement={this.pickerTriggerRef.current}\n                    wrapperClassName={styles.colorPicker}\n                    onMouseLeave={hidePopper}\n                    onMouseEnter={showPopper}\n                    onKeyDown={(event) => closePopover(event, hidePopper)}\n                  />\n                )}\n\n                {children ? (\n                  children({\n                    ref: this.pickerTriggerRef,\n                    showColorPicker: showPopper,\n                    hideColorPicker: hidePopper,\n                  })\n                ) : (\n                  <ColorSwatch\n                    id={id}\n                    ref={this.pickerTriggerRef}\n                    onClick={showPopper}\n                    onMouseLeave={hidePopper}\n                    color={theme.visualization.getColorByName(color || '#000000')}\n                    aria-label={color}\n                  />\n                )}\n              </>\n            );\n          }}\n        </PopoverController>\n      );\n    }\n  };\n};\n\nexport const ColorPicker = withTheme2(colorPickerFactory(ColorPickerPopover, 'ColorPicker'));\nexport const SeriesColorPicker = withTheme2(colorPickerFactory(SeriesColorPickerPopover, 'SeriesColorPicker'));\n\nconst getStyles = stylesFactory((theme: GrafanaTheme2) => {\n  return {\n    colorPicker: css({\n      position: 'absolute',\n      zIndex: theme.zIndex.tooltip,\n      color: theme.colors.text.primary,\n      maxWidth: '400px',\n      fontSize: theme.typography.size.sm,\n      maxHeight: '100vh',\n      overflow: 'auto',\n    }),\n  };\n});\n","import { useCallback, useEffect, useRef } from 'react';\nimport * as React from 'react';\n\nexport interface Props {\n  /** Callback to trigger when clicking outside of current element occurs. */\n  onClick: () => void;\n  /** Runs the 'onClick' function when pressing a key outside of the current element. Defaults to true. */\n  includeButtonPress?: boolean;\n  /** Object to attach the click event listener to. */\n  parent?: Window | Document;\n  /** https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener. Defaults to false. */\n  useCapture?: boolean;\n  children: React.ReactNode;\n}\n\nexport function ClickOutsideWrapper({\n  includeButtonPress = true,\n  parent = window,\n  useCapture = false,\n  onClick,\n  children,\n}: Props) {\n  const wrapperRef = useRef<HTMLDivElement>(null);\n  const onOutsideClick = useCallback(\n    (event: Event) => {\n      const domNode = wrapperRef.current;\n\n      if (!domNode || (event.target instanceof Node && !domNode.contains(event.target))) {\n        onClick();\n      }\n    },\n    [onClick]\n  );\n\n  useEffect(() => {\n    parent.addEventListener('click', onOutsideClick, useCapture);\n    if (includeButtonPress) {\n      // Use keyup since keydown already has an event listener on window\n      parent.addEventListener('keyup', onOutsideClick, useCapture);\n    }\n\n    return () => {\n      parent.removeEventListener('click', onOutsideClick, useCapture);\n      if (includeButtonPress) {\n        parent.removeEventListener('keyup', onOutsideClick, useCapture);\n      }\n    };\n  }, [includeButtonPress, onOutsideClick, parent, useCapture]);\n\n  return <div ref={wrapperRef}>{children}</div>;\n}\n","import { css, cx } from '@emotion/css';\nimport { useState, forwardRef, FocusEvent } from 'react';\nimport { RgbaStringColorPicker } from 'react-colorful';\nimport { useThrottleFn } from 'react-use';\n\nimport { colorManipulator, GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\nimport { ClickOutsideWrapper } from '../ClickOutsideWrapper/ClickOutsideWrapper';\nimport { Props as InputProps } from '../Input/Input';\n\nimport ColorInput from './ColorInput';\nimport { getStyles as getPaletteStyles } from './SpectrumPalette';\n\nexport interface ColorPickerInputProps extends Omit<InputProps, 'value' | 'onChange'> {\n  value?: string;\n  onChange: (color: string) => void;\n  /** Format for returning the color in onChange callback, defaults to 'rgb' */\n  returnColorAs?: 'rgb' | 'hex';\n}\n\nexport const ColorPickerInput = forwardRef<HTMLInputElement, ColorPickerInputProps>(\n  ({ value = '', onChange, returnColorAs = 'rgb', ...inputProps }, ref) => {\n    const [currentColor, setColor] = useState(value);\n    const [isOpen, setIsOpen] = useState(false);\n    const theme = useTheme2();\n    const styles = useStyles2(getStyles);\n    const paletteStyles = useStyles2(getPaletteStyles);\n\n    useThrottleFn(\n      (c) => {\n        if (c === value) {\n          return;\n        }\n        // Default to an empty string if no color value is available\n        if (!c) {\n          onChange('');\n          return;\n        }\n        const color = theme.visualization.getColorByName(c);\n        if (returnColorAs === 'rgb') {\n          onChange(colorManipulator.asRgbString(color));\n        } else {\n          onChange(colorManipulator.asHexString(color));\n        }\n      },\n      500,\n      [currentColor]\n    );\n\n    const handleBlur = (evt: FocusEvent<HTMLInputElement>) => {\n      // Unless the user clicked inside the color picker, close it on blur\n      const isClickInPopover = document.querySelector('[data-testid=\"color-popover\"]')?.contains(evt.relatedTarget);\n      if (!isClickInPopover) {\n        setIsOpen(false);\n      }\n    };\n\n    return (\n      <ClickOutsideWrapper onClick={() => setIsOpen(false)}>\n        <div className={styles.wrapper}>\n          {isOpen && !inputProps.disabled && (\n            <RgbaStringColorPicker\n              data-testid={'color-popover'}\n              color={currentColor}\n              onChange={setColor}\n              className={cx(paletteStyles.root, styles.picker)}\n            />\n          )}\n          <ColorInput\n            {...inputProps}\n            theme={theme}\n            color={currentColor}\n            onChange={setColor}\n            buttonAriaLabel=\"Open color picker\"\n            onClick={() => setIsOpen(true)}\n            onBlur={(e) => handleBlur(e)}\n            ref={ref}\n            isClearable\n          />\n        </div>\n      </ClickOutsideWrapper>\n    );\n  }\n);\n\nColorPickerInput.displayName = 'ColorPickerInput';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    wrapper: css({\n      position: 'relative',\n    }),\n    picker: css({\n      '&.react-colorful': {\n        position: 'absolute',\n        width: '100%',\n        zIndex: 11,\n        bottom: '36px',\n      },\n    }),\n    inner: css({\n      position: 'absolute',\n    }),\n  };\n};\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport interface Props {\n  children: JSX.Element | string;\n}\n\n/** @deprecated Use <EmptyState variant=\"not-found\" /> instead */\nconst EmptySearchResult = ({ children }: Props) => {\n  const styles = useStyles2(getStyles);\n  return <div className={styles.container}>{children}</div>;\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      borderLeft: `3px solid ${theme.colors.info.main}`,\n      backgroundColor: `${theme.colors.background.secondary}`,\n      padding: theme.spacing(2),\n      minWidth: '350px',\n      borderRadius: theme.shape.radius.default,\n      marginBottom: theme.spacing(4),\n    }),\n  };\n};\nexport { EmptySearchResult };\n","import { css } from '@emotion/css';\nimport { SVGProps } from 'react';\nimport SVG from 'react-inlinesvg';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\n\nimport grotCTASvg from './grot-cta.svg';\n\nexport interface Props {\n  width?: SVGProps<SVGElement>['width'];\n  height?: SVGProps<SVGElement>['height'];\n}\n\nexport const GrotCTA = ({ width = 'auto', height }: Props) => {\n  const styles = useStyles2(getStyles);\n\n  return <SVG src={grotCTASvg} className={styles.svg} height={height} width={width} />;\n};\n\nGrotCTA.displayName = 'GrotCTA';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    svg: css({\n      '#grot-cta-cactus-1, #grot-cta-cactus-2': {\n        fill: theme.isDark ? '#58558c' : '#c9c5f4',\n      },\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport { SVGProps, useEffect, useRef } from 'react';\nimport SVG from 'react-inlinesvg';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\n\nimport notFoundSvg from './grot-not-found.svg';\n\nconst MIN_ARM_ROTATION = -20;\nconst MAX_ARM_ROTATION = 5;\nconst MIN_ARM_TRANSLATION = -5;\nconst MAX_ARM_TRANSLATION = 5;\n\nexport interface Props {\n  width?: SVGProps<SVGElement>['width'];\n  height?: SVGProps<SVGElement>['height'];\n}\n\nexport const GrotNotFound = ({ width = 'auto', height }: Props) => {\n  const svgRef = useRef<SVGElement>(null);\n  const styles = useStyles2(getStyles);\n\n  useEffect(() => {\n    const handleMouseMove = (event: MouseEvent) => {\n      // don't apply animation if reduced motion preference is set\n      if (window.matchMedia('(prefers-reduced-motion: reduce').matches) {\n        return;\n      }\n\n      const grotArm = svgRef.current?.querySelector('#grot-not-found-arm');\n      const grotMagnifier = svgRef.current?.querySelector('#grot-not-found-magnifier');\n\n      const { clientX, clientY } = event;\n      const { innerWidth, innerHeight } = window;\n      const heightRatio = clientY / innerHeight;\n      const widthRatio = clientX / innerWidth;\n      const rotation = getIntermediateValue(heightRatio, MIN_ARM_ROTATION, MAX_ARM_ROTATION);\n      const translation = getIntermediateValue(widthRatio, MIN_ARM_TRANSLATION, MAX_ARM_TRANSLATION);\n\n      window.requestAnimationFrame(() => {\n        grotArm?.setAttribute('style', `transform: rotate(${rotation}deg) translateX(${translation}%)`);\n        grotMagnifier?.setAttribute('style', `transform: rotate(${rotation}deg) translateX(${translation}%)`);\n      });\n    };\n\n    window.addEventListener('mousemove', handleMouseMove);\n\n    return () => {\n      window.removeEventListener('mousemove', handleMouseMove);\n    };\n  }, []);\n\n  return <SVG innerRef={svgRef} src={notFoundSvg} className={styles.svg} height={height} width={width} />;\n};\n\nGrotNotFound.displayName = 'GrotNotFound';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    svg: css({\n      '#grot-not-found-arm, #grot-not-found-magnifier': {\n        transformOrigin: 'center',\n      },\n    }),\n  };\n};\n\n/**\n * Given a start value, end value, and a ratio, return the intermediate value\n * Works with negative and inverted start/end values\n */\nconst getIntermediateValue = (ratio: number, start: number, end: number) => {\n  const value = ratio * (end - start) + start;\n  return value;\n};\n","import { css } from '@emotion/css';\nimport { AriaRole, ReactNode } from 'react';\nimport * as React from 'react';\nimport SVG from 'react-inlinesvg';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Box } from '../Layout/Box/Box';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { Text } from '../Text/Text';\n\nimport { GrotCTA } from './GrotCTA/GrotCTA';\nimport { GrotNotFound } from './GrotNotFound/GrotNotFound';\nimport GrotCompleted from './grot-completed.svg';\n\ninterface Props {\n  /**\n   * Provide a button to render below the message\n   */\n  button?: ReactNode;\n  hideImage?: boolean;\n  /**\n   * Override the default image for the variant\n   */\n  image?: ReactNode;\n  /**\n   * Message to display to the user\n   */\n  message: string;\n  /**\n   * Which variant to use. Affects the default image shown.\n   */\n  variant: 'call-to-action' | 'not-found' | 'completed';\n  /**\n   * Use to set `alert` when needed. See documentation for the use case\n   */\n  role?: AriaRole;\n}\n\nexport const EmptyState = ({\n  button,\n  children,\n  image,\n  message,\n  hideImage = false,\n  variant,\n  role,\n}: React.PropsWithChildren<Props>) => {\n  const styles = useStyles2(getStyles);\n  const imageToShow = image ?? getDefaultImageForVariant(variant);\n\n  return (\n    <Box paddingY={4} display=\"flex\" direction=\"column\" alignItems=\"center\" role={role}>\n      <div className={styles.container}>\n        {!hideImage && imageToShow}\n        <Stack direction=\"column\" alignItems=\"center\">\n          <Text variant=\"h4\" textAlignment=\"center\">\n            {message}\n          </Text>\n          {children && (\n            <Text color=\"secondary\" textAlignment=\"center\">\n              {children}\n            </Text>\n          )}\n        </Stack>\n        {button}\n      </div>\n    </Box>\n  );\n};\n\nfunction getDefaultImageForVariant(variant: Props['variant']) {\n  switch (variant) {\n    case 'call-to-action': {\n      return <GrotCTA width={300} />;\n    }\n    case 'not-found': {\n      return <GrotNotFound width={300} />;\n    }\n    case 'completed': {\n      return <SVG src={GrotCompleted} width={300} />;\n    }\n    default: {\n      throw new Error(`Unknown variant: ${variant}`);\n    }\n  }\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  container: css({\n    display: 'flex',\n    flexDirection: 'column',\n    alignItems: 'center',\n    gap: theme.spacing(4),\n    maxWidth: '600px',\n  }),\n});\n","import { PureComponent } from 'react';\n\nimport { getValueFormats, SelectableValue } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { Cascader, CascaderOption } from '../Cascader/Cascader';\n\nexport interface UnitPickerProps {\n  onChange: (item?: string) => void;\n  value?: string;\n  width?: number;\n  id?: string;\n}\n\nfunction formatCreateLabel(input: string) {\n  return `Custom unit: ${input}`;\n}\n\nexport class UnitPicker extends PureComponent<UnitPickerProps> {\n  onChange = (value: SelectableValue<string>) => {\n    this.props.onChange(value.value);\n  };\n\n  render() {\n    const { value, width, id } = this.props;\n\n    // Set the current selection\n    let current: SelectableValue<string> | undefined = undefined;\n\n    // All units\n    const unitGroups = getValueFormats();\n\n    // Need to transform the data structure to work well with Select\n    const groupOptions: CascaderOption[] = unitGroups.map((group) => {\n      const options = group.submenu.map((unit) => {\n        const sel = {\n          label: unit.text,\n          value: unit.value,\n        };\n        if (unit.value === value) {\n          current = sel;\n        }\n        return sel;\n      });\n\n      return {\n        label: group.text,\n        value: group.text,\n        items: options,\n      };\n    });\n\n    // Show the custom unit\n    if (value && !current) {\n      current = { value, label: value };\n    }\n\n    return (\n      <Cascader\n        id={id}\n        width={width}\n        initialValue={current && current.label}\n        allowCustomValue\n        changeOnSelect={false}\n        formatCreateLabel={formatCreateLabel}\n        options={groupOptions}\n        placeholder={t('grafana-ui.unit-picker.placeholder', 'Choose')}\n        isClearable\n        onSelect={this.props.onChange}\n      />\n    );\n  }\n}\n","import { difference } from 'lodash';\nimport { PureComponent } from 'react';\n\nimport { fieldReducers, SelectableValue, FieldReducerInfo } from '@grafana/data';\n\nimport { Select } from '../Select/Select';\n\nexport interface Props {\n  placeholder?: string;\n  onChange: (stats: string[]) => void;\n  stats: string[];\n  allowMultiple?: boolean;\n  defaultStat?: string;\n  className?: string;\n  width?: number;\n  menuPlacement?: 'auto' | 'bottom' | 'top';\n  inputId?: string;\n  filterOptions?: (ext: FieldReducerInfo) => boolean;\n}\n\nexport class StatsPicker extends PureComponent<Props> {\n  static defaultProps: Partial<Props> = {\n    allowMultiple: false,\n  };\n\n  componentDidMount() {\n    this.checkInput();\n  }\n\n  componentDidUpdate(prevProps: Props) {\n    this.checkInput();\n  }\n\n  checkInput = () => {\n    const { stats, allowMultiple, defaultStat, onChange } = this.props;\n\n    const current = fieldReducers.list(stats);\n    if (current.length !== stats.length) {\n      const found = current.map((v) => v.id);\n      const notFound = difference(stats, found);\n      console.warn('Unknown stats', notFound, stats);\n      onChange(current.map((stat) => stat.id));\n    }\n\n    // Make sure there is only one\n    if (!allowMultiple && stats.length > 1) {\n      console.warn('Removing extra stat', stats);\n      onChange([stats[0]]);\n    }\n\n    // Set the reducer from callback\n    if (defaultStat && stats.length < 1) {\n      onChange([defaultStat]);\n    }\n  };\n\n  onSelectionChange = (item: SelectableValue<string>) => {\n    const { onChange } = this.props;\n    if (Array.isArray(item)) {\n      onChange(item.map((v) => v.value));\n    } else {\n      onChange(item && item.value ? [item.value] : []);\n    }\n  };\n\n  render() {\n    const { stats, allowMultiple, defaultStat, placeholder, className, menuPlacement, width, inputId, filterOptions } =\n      this.props;\n\n    const select = fieldReducers.selectOptions(stats, filterOptions);\n    return (\n      <Select\n        value={select.current}\n        className={className}\n        isClearable={!defaultStat}\n        isMulti={allowMultiple}\n        width={width}\n        isSearchable={true}\n        options={select.options}\n        placeholder={placeholder}\n        onChange={this.onSelectionChange}\n        menuPlacement={menuPlacement}\n        inputId={inputId}\n      />\n    );\n  }\n}\n","import { css, cx } from '@emotion/css';\nimport { forwardRef, HTMLAttributes } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport interface Props extends HTMLAttributes<HTMLDivElement> {\n  className?: string;\n}\n\nexport const ButtonGroup = forwardRef<HTMLDivElement, Props>(({ className, children, ...rest }, ref) => {\n  const styles = useStyles2(getStyles);\n\n  return (\n    <div ref={ref} className={cx('button-group', styles.wrapper, className)} {...rest}>\n      {children}\n    </div>\n  );\n});\n\nButtonGroup.displayName = 'ButtonGroup';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  wrapper: css({\n    display: 'flex',\n    borderRadius: theme.shape.radius.default,\n\n    '> .button-group:not(:first-child) > button, > button:not(:first-child)': {\n      borderTopLeftRadius: 'unset',\n      borderBottomLeftRadius: 'unset',\n      borderLeft: `1px solid rgba(255, 255, 255, 0.12)`,\n    },\n\n    '> .button-group:not(:last-child) > button, > button:not(:last-child)': {\n      borderTopRightRadius: 'unset',\n      borderBottomRightRadius: 'unset',\n      borderRight: `1px solid rgba(0, 0, 0, 0.12)`,\n    },\n  }),\n});\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport function MenuDivider() {\n  const styles = useStyles2(getStyles);\n  return <div className={styles.divider} />;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    divider: css({\n      height: 1,\n      backgroundColor: theme.colors.border.weak,\n      margin: theme.spacing(0.5, 0),\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { MenuItemProps } from './MenuItem';\n\n/** @internal */\nexport interface MenuItemsGroup<T = unknown> {\n  /** Label for the menu items group */\n  label?: string;\n  /** Aria label for accessibility support */\n  ariaLabel?: string;\n  /** Items of the group */\n  items: Array<MenuItemProps<T>>;\n}\n\n/** @internal */\nexport interface MenuGroupProps extends Partial<MenuItemsGroup> {\n  /** special children prop to pass children elements */\n  children: React.ReactNode;\n}\n\n/** @internal */\nexport const MenuGroup = ({ label, ariaLabel, children }: MenuGroupProps) => {\n  const styles = useStyles2(getStyles);\n  const labelID = `group-label-${uniqueId()}`;\n\n  return (\n    <div role=\"group\" aria-labelledby={!ariaLabel && label ? labelID : undefined} aria-label={ariaLabel}>\n      {label && (\n        <label id={labelID} className={styles.groupLabel} aria-hidden>\n          {label}\n        </label>\n      )}\n      {children}\n    </div>\n  );\n};\nMenuGroup.displayName = 'MenuGroup';\n\n/** @internal */\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    groupLabel: css({\n      color: theme.colors.text.secondary,\n      fontSize: theme.typography.size.sm,\n      padding: theme.spacing(0.5, 1),\n    }),\n  };\n};\n","import { RefObject, useEffect, useState } from 'react';\nimport { useEffectOnce } from 'react-use';\n\nconst modulo = (a: number, n: number) => ((a % n) + n) % n;\nconst UNFOCUSED = -1;\n\n/** @internal */\nexport interface UseMenuFocusProps {\n  localRef: RefObject<HTMLDivElement>;\n  isMenuOpen?: boolean;\n  close?: () => void;\n  onOpen?: (focusOnItem: (itemId: number) => void) => void;\n  onClose?: () => void;\n  onKeyDown?: React.KeyboardEventHandler;\n}\n\n/** @internal */\nexport type UseMenuFocusReturn = [(event: React.KeyboardEvent) => void];\n\n/** @internal */\nexport const useMenuFocus = ({\n  localRef,\n  isMenuOpen,\n  close,\n  onOpen,\n  onClose,\n  onKeyDown,\n}: UseMenuFocusProps): UseMenuFocusReturn => {\n  const [focusedItem, setFocusedItem] = useState(UNFOCUSED);\n\n  useEffect(() => {\n    if (isMenuOpen) {\n      setFocusedItem(0);\n    }\n  }, [isMenuOpen]);\n\n  useEffect(() => {\n    const menuItems = localRef?.current?.querySelectorAll<HTMLElement | HTMLButtonElement | HTMLAnchorElement>(\n      '[data-role=\"menuitem\"]:not([data-disabled])'\n    );\n    menuItems?.[focusedItem]?.focus();\n    menuItems?.forEach((menuItem, i) => {\n      menuItem.tabIndex = i === focusedItem ? 0 : -1;\n    });\n  }, [localRef, focusedItem]);\n\n  useEffectOnce(() => {\n    onOpen?.(setFocusedItem);\n  });\n\n  const handleKeys = (event: React.KeyboardEvent) => {\n    const menuItems = localRef?.current?.querySelectorAll<HTMLElement | HTMLButtonElement | HTMLAnchorElement>(\n      '[data-role=\"menuitem\"]:not([data-disabled])'\n    );\n    const menuItemsCount = menuItems?.length ?? 0;\n\n    switch (event.key) {\n      case 'ArrowUp':\n        event.preventDefault();\n        event.stopPropagation();\n        setFocusedItem(modulo(focusedItem - 1, menuItemsCount));\n        break;\n      case 'ArrowDown':\n        event.preventDefault();\n        event.stopPropagation();\n        setFocusedItem(modulo(focusedItem + 1, menuItemsCount));\n        break;\n      case 'ArrowLeft':\n        event.preventDefault();\n        event.stopPropagation();\n        setFocusedItem(UNFOCUSED);\n        close?.();\n        break;\n      case 'Home':\n        event.preventDefault();\n        event.stopPropagation();\n        setFocusedItem(0);\n        break;\n      case 'End':\n        event.preventDefault();\n        event.stopPropagation();\n        setFocusedItem(menuItemsCount - 1);\n        break;\n      case 'Enter':\n        event.preventDefault();\n        event.stopPropagation();\n        menuItems?.[focusedItem]?.click();\n        break;\n      case 'Escape':\n        onClose?.();\n        break;\n      case 'Tab':\n        event.preventDefault();\n        onClose?.();\n        break;\n      default:\n        break;\n    }\n\n    // Forward event to parent\n    onKeyDown?.(event);\n  };\n\n  return [handleKeys];\n};\n","/**\n * Returns whether the provided element overflows the viewport bounds\n *\n * @param element The element we want to know about\n */\nexport const isElementOverflowing = (element: HTMLElement | null) => {\n  if (!element) {\n    return false;\n  }\n\n  const wrapperPos = element.parentElement!.getBoundingClientRect();\n  const pos = element.getBoundingClientRect();\n\n  return pos.width !== 0 && wrapperPos.right + pos.width + 10 > window.innerWidth;\n};\n","import { css, cx } from '@emotion/css';\nimport { memo, CSSProperties, ReactElement, useEffect, useRef, useState } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\n\nimport { MenuItemProps } from './MenuItem';\nimport { useMenuFocus } from './hooks';\nimport { isElementOverflowing } from './utils';\n\n/** @internal */\nexport interface SubMenuProps {\n  /** List of menu items of the subMenu */\n  items?: Array<ReactElement<MenuItemProps>>;\n  /** Open */\n  isOpen: boolean;\n  /** Closes the subMenu */\n  close: () => void;\n  /** Custom style */\n  customStyle?: CSSProperties;\n}\n\n/** @internal */\nexport const SubMenu = memo(({ items, isOpen, close, customStyle }: SubMenuProps) => {\n  const styles = useStyles2(getStyles);\n  const localRef = useRef<HTMLDivElement>(null);\n  const [handleKeys] = useMenuFocus({\n    localRef,\n    isMenuOpen: isOpen,\n    close,\n  });\n\n  const [pushLeft, setPushLeft] = useState(false);\n  useEffect(() => {\n    if (isOpen && localRef.current) {\n      setPushLeft(isElementOverflowing(localRef.current));\n    }\n  }, [isOpen]);\n\n  return (\n    <>\n      <div className={styles.iconWrapper} aria-hidden data-testid={selectors.components.Menu.SubMenu.icon}>\n        <Icon name=\"angle-right\" className={styles.icon} />\n      </div>\n      {isOpen && (\n        <div\n          ref={localRef}\n          className={cx(styles.subMenu, { [styles.pushLeft]: pushLeft })}\n          data-testid={selectors.components.Menu.SubMenu.container}\n          style={customStyle}\n        >\n          <div tabIndex={-1} className={styles.itemsWrapper} role=\"menu\" onKeyDown={handleKeys}>\n            {items}\n          </div>\n        </div>\n      )}\n    </>\n  );\n});\n\nSubMenu.displayName = 'SubMenu';\n\n/** @internal */\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    iconWrapper: css({\n      display: 'flex',\n      flex: 1,\n      justifyContent: 'end',\n    }),\n    icon: css({\n      opacity: 0.7,\n      marginLeft: theme.spacing(1),\n      color: theme.colors.text.secondary,\n    }),\n    itemsWrapper: css({\n      background: theme.colors.background.elevated,\n      padding: theme.spacing(0.5),\n      boxShadow: theme.shadows.z3,\n      display: 'inline-block',\n      borderRadius: theme.shape.radius.default,\n    }),\n    pushLeft: css({\n      right: '100%',\n      left: 'unset',\n    }),\n    subMenu: css({\n      position: 'absolute',\n      top: 0,\n      left: '100%',\n      zIndex: theme.zIndex.dropdown,\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { ReactElement, useCallback, useState, useRef, useImperativeHandle, CSSProperties, AriaRole } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, LinkTarget } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { IconName } from '../../types/icon';\nimport { Icon } from '../Icon/Icon';\nimport { Stack } from '../Layout/Stack/Stack';\n\nimport { SubMenu } from './SubMenu';\n\n/** @internal */\nexport type MenuItemElement = HTMLAnchorElement & HTMLButtonElement & HTMLDivElement;\n\n/** @internal */\nexport interface MenuItemProps<T = unknown> {\n  /** Label of the menu item */\n  label: string;\n  /** Description of item */\n  description?: string;\n  /** Aria label for accessibility support */\n  ariaLabel?: string;\n  /** Aria checked for accessibility support */\n  ariaChecked?: boolean;\n  /** Target of the menu item (i.e. new window)  */\n  target?: LinkTarget;\n  /** Icon of the menu item */\n  icon?: IconName;\n  /** Role of the menu item */\n  role?: AriaRole;\n  /** Url of the menu item */\n  url?: string;\n  /** Handler for the click behaviour */\n  onClick?: (event: React.MouseEvent<HTMLElement>, payload?: T) => void;\n  /** Custom MenuItem styles*/\n  className?: string;\n  /** Active */\n  active?: boolean;\n  /** Disabled */\n  disabled?: boolean;\n  /** Show in destructive style (error color) */\n  destructive?: boolean;\n  tabIndex?: number;\n  /** List of menu items for the subMenu */\n  childItems?: Array<ReactElement<MenuItemProps>>;\n  /** Custom style for SubMenu */\n  customSubMenuContainerStyles?: CSSProperties;\n  /** Shortcut key combination */\n  shortcut?: string;\n  /** Test id for e2e tests and fullstory*/\n  testId?: string;\n  /* Optional component that will be shown together with other options. Does not get passed any props. */\n  component?: React.ComponentType;\n}\n\n/** @internal */\nexport const MenuItem = React.memo(\n  React.forwardRef<MenuItemElement, MenuItemProps>((props, ref) => {\n    const {\n      url,\n      icon,\n      label,\n      description,\n      ariaLabel,\n      ariaChecked,\n      target,\n      onClick,\n      className,\n      active,\n      disabled,\n      destructive,\n      childItems,\n      role,\n      tabIndex = -1,\n      customSubMenuContainerStyles,\n      shortcut,\n      testId,\n    } = props;\n    const styles = useStyles2(getStyles);\n    const [isActive, setIsActive] = useState(active);\n    const [isSubMenuOpen, setIsSubMenuOpen] = useState(false);\n    const onMouseEnter = useCallback(() => {\n      if (disabled) {\n        return;\n      }\n\n      setIsSubMenuOpen(true);\n      setIsActive(true);\n    }, [disabled]);\n    const onMouseLeave = useCallback(() => {\n      if (disabled) {\n        return;\n      }\n\n      setIsSubMenuOpen(false);\n      setIsActive(false);\n    }, [disabled]);\n\n    const hasSubMenu = childItems && childItems.length > 0;\n    const ItemElement = hasSubMenu ? 'div' : url === undefined ? 'button' : 'a';\n    const itemStyle = cx(\n      {\n        [styles.item]: true,\n        [styles.active]: isActive,\n        [styles.disabled]: disabled,\n        [styles.destructive]: destructive && !disabled,\n      },\n      className\n    );\n\n    const disabledProps = {\n      [ItemElement === 'button' ? 'disabled' : 'aria-disabled']: disabled,\n      ...(ItemElement === 'a' && disabled && { href: undefined, onClick: undefined }),\n      ...(disabled && {\n        tabIndex: -1,\n        ['data-disabled']: disabled, // used to identify disabled items in Menu.tsx\n      }),\n    };\n\n    const localRef = useRef<MenuItemElement>(null);\n    useImperativeHandle(ref, () => localRef.current!);\n\n    const handleKeys = (event: React.KeyboardEvent) => {\n      switch (event.key) {\n        case 'ArrowRight':\n          event.preventDefault();\n          event.stopPropagation();\n          if (hasSubMenu) {\n            setIsSubMenuOpen(true);\n            setIsActive(true);\n          }\n          break;\n        default:\n          break;\n      }\n    };\n\n    const closeSubMenu = () => {\n      setIsSubMenuOpen(false);\n      setIsActive(false);\n      localRef?.current?.focus();\n    };\n\n    const hasShortcut = Boolean(shortcut && shortcut.length > 0);\n\n    return (\n      <ItemElement\n        target={target}\n        className={itemStyle}\n        rel={target === '_blank' ? 'noopener noreferrer' : undefined}\n        href={url}\n        onClick={(event) => {\n          if (hasSubMenu && !isSubMenuOpen) {\n            event.preventDefault();\n            event.stopPropagation();\n          }\n          onClick?.(event);\n        }}\n        onMouseEnter={onMouseEnter}\n        onMouseLeave={onMouseLeave}\n        onKeyDown={handleKeys}\n        // If there's no URL, then set either the role from the props, or fallback to menuitem\n        // If there IS a URL, then use the role from props - which will result in this either being a\n        // link (default role of an anchor), or whatever the user of this component specified\n        role={!url ? role || 'menuitem' : role}\n        data-role=\"menuitem\" // used to identify menuitem in Menu.tsx\n        ref={localRef}\n        data-testid={testId}\n        aria-label={ariaLabel}\n        aria-checked={ariaChecked}\n        tabIndex={tabIndex}\n        {...disabledProps}\n      >\n        <Stack direction=\"row\" justifyContent=\"flex-start\" alignItems=\"center\">\n          {icon && <Icon name={icon} className={styles.icon} aria-hidden />}\n          <span className={styles.ellipsis}>{label}</span>\n          <div className={cx(styles.rightWrapper, { [styles.withShortcut]: hasShortcut })}>\n            {hasShortcut && (\n              <div className={styles.shortcut}>\n                <Icon name=\"keyboard\" title={t('grafana-ui.menu-item.keyboard-shortcut-label', 'Keyboard shortcut')} />\n                {shortcut}\n              </div>\n            )}\n            {hasSubMenu && (\n              <SubMenu\n                items={childItems}\n                isOpen={isSubMenuOpen}\n                close={closeSubMenu}\n                customStyle={customSubMenuContainerStyles}\n              />\n            )}\n          </div>\n        </Stack>\n        {description && (\n          <div\n            className={cx(styles.description, styles.ellipsis, {\n              [styles.descriptionWithIcon]: icon !== undefined,\n            })}\n          >\n            {description}\n          </div>\n        )}\n        {props.component ? <props.component /> : null}\n      </ItemElement>\n    );\n  })\n);\n\nMenuItem.displayName = 'MenuItem';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    item: css({\n      background: 'none',\n      cursor: 'pointer',\n      whiteSpace: 'nowrap',\n      color: theme.colors.text.primary,\n      display: 'flex',\n      flexDirection: 'column',\n      alignItems: 'stretch',\n      justifyContent: 'center',\n      padding: theme.spacing(0.5, 1.5),\n      minHeight: theme.spacing(4),\n      borderRadius: theme.shape.radius.default,\n      margin: 0,\n      border: 'none',\n      width: '100%',\n      position: 'relative',\n\n      '&:hover, &:focus-visible': {\n        background: theme.colors.action.hover,\n        color: theme.colors.text.primary,\n        textDecoration: 'none',\n      },\n\n      '&:focus-visible': getFocusStyles(theme),\n    }),\n    active: css({\n      background: theme.colors.action.hover,\n    }),\n    destructive: css({\n      color: theme.colors.error.text,\n\n      svg: {\n        color: theme.colors.error.text,\n      },\n\n      '&:hover, &:focus, &:focus-visible': {\n        background: theme.colors.error.main,\n        color: theme.colors.error.contrastText,\n\n        svg: {\n          color: theme.colors.error.contrastText,\n        },\n      },\n    }),\n    disabled: css({\n      color: theme.colors.action.disabledText,\n      label: 'menu-item-disabled',\n      '&:hover, &:focus, &:focus-visible': {\n        cursor: 'not-allowed',\n        background: 'none',\n        color: theme.colors.action.disabledText,\n      },\n    }),\n    icon: css({\n      opacity: 0.7,\n      color: theme.colors.text.secondary,\n    }),\n    rightWrapper: css({\n      display: 'flex',\n      alignItems: 'center',\n      marginLeft: 'auto',\n    }),\n    withShortcut: css({\n      minWidth: theme.spacing(10.5),\n    }),\n    shortcut: css({\n      display: 'flex',\n      alignItems: 'center',\n      gap: theme.spacing(1),\n      marginLeft: theme.spacing(2),\n      color: theme.colors.text.secondary,\n    }),\n    description: css({\n      ...theme.typography.bodySmall,\n      color: theme.colors.text.secondary,\n      textAlign: 'start',\n    }),\n    descriptionWithIcon: css({\n      marginLeft: theme.spacing(3),\n    }),\n    ellipsis: css({\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      whiteSpace: 'nowrap',\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { useImperativeHandle, useRef } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Box } from '../Layout/Box/Box';\n\nimport { MenuDivider } from './MenuDivider';\nimport { MenuGroup } from './MenuGroup';\nimport { MenuItem } from './MenuItem';\nimport { useMenuFocus } from './hooks';\n\nexport interface MenuProps extends React.HTMLAttributes<HTMLDivElement> {\n  /** React element rendered at the top of the menu */\n  header?: React.ReactNode;\n  children: React.ReactNode;\n  ariaLabel?: string;\n  onOpen?: (focusOnItem: (itemId: number) => void) => void;\n  onClose?: () => void;\n  onKeyDown?: React.KeyboardEventHandler;\n}\n\nconst MenuComp = React.forwardRef<HTMLDivElement, MenuProps>(\n  ({ header, children, ariaLabel, onOpen, onClose, onKeyDown, ...otherProps }, forwardedRef) => {\n    const styles = useStyles2(getStyles);\n\n    const localRef = useRef<HTMLDivElement>(null);\n    useImperativeHandle(forwardedRef, () => localRef.current!);\n\n    const [handleKeys] = useMenuFocus({ isMenuOpen: true, localRef, onOpen, onClose, onKeyDown });\n\n    return (\n      <Box\n        {...otherProps}\n        aria-label={ariaLabel}\n        backgroundColor=\"elevated\"\n        borderRadius=\"default\"\n        boxShadow=\"z3\"\n        display=\"inline-block\"\n        onKeyDown={handleKeys}\n        paddingX={0.5}\n        paddingY={0.5}\n        ref={localRef}\n        role=\"menu\"\n        tabIndex={-1}\n      >\n        {header && (\n          <div\n            className={cx(\n              styles.header,\n              Boolean(children) && React.Children.toArray(children).length > 0 && styles.headerBorder\n            )}\n          >\n            {header}\n          </div>\n        )}\n        {children}\n      </Box>\n    );\n  }\n);\n\nMenuComp.displayName = 'Menu';\n\nexport const Menu = Object.assign(MenuComp, {\n  Item: MenuItem,\n  Divider: MenuDivider,\n  Group: MenuGroup,\n});\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    header: css({\n      padding: theme.spacing(0.5, 0.5, 1, 0.5),\n    }),\n    headerBorder: css({\n      borderBottom: `1px solid ${theme.colors.border.weak}`,\n      marginBottom: theme.spacing(0.5),\n    }),\n  };\n};\n","import { cx, css } from '@emotion/css';\nimport { forwardRef, ButtonHTMLAttributes } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, IconName, isIconName } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles, getMouseFocusStyles, mediaUp } from '../../themes/mixins';\nimport { IconSize } from '../../types/icon';\nimport { getPropertiesForVariant } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\ntype CommonProps = {\n  /** Icon name */\n  icon?: IconName | React.ReactNode;\n  /** Icon size */\n  iconSize?: IconSize;\n  /** Tooltip */\n  tooltip?: string;\n  /** For image icons */\n  imgSrc?: string;\n  /** Alt text for imgSrc */\n  imgAlt?: string;\n  /** if true or false will show angle-down/up */\n  isOpen?: boolean;\n  /** Controls flex-grow: 1 */\n  fullWidth?: boolean;\n  /** reduces padding to xs */\n  narrow?: boolean;\n  /** variant */\n  variant?: ToolbarButtonVariant;\n  /** Hide any children and only show icon */\n  iconOnly?: boolean;\n  /** Show highlight dot */\n  isHighlighted?: boolean;\n};\n\nexport type ToolbarButtonProps = CommonProps & ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport type ToolbarButtonVariant = 'default' | 'primary' | 'destructive' | 'active' | 'canvas';\n\nexport const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>(\n  (\n    {\n      tooltip,\n      icon,\n      iconSize,\n      className,\n      children,\n      imgSrc,\n      imgAlt,\n      fullWidth,\n      isOpen,\n      narrow,\n      variant = 'default',\n      iconOnly,\n      'aria-label': ariaLabel,\n      isHighlighted,\n      ...rest\n    },\n    ref\n  ) => {\n    const styles = useStyles2(getStyles);\n\n    const buttonStyles = cx(\n      {\n        [styles.button]: true,\n        [styles.buttonFullWidth]: fullWidth,\n        [styles.narrow]: narrow,\n      },\n      styles[variant],\n      className\n    );\n\n    const contentStyles = cx({\n      [styles.content]: true,\n      [styles.contentWithIcon]: !!icon,\n      [styles.contentWithRightIcon]: isOpen !== undefined,\n    });\n\n    const body = (\n      <button\n        ref={ref}\n        className={buttonStyles}\n        aria-label={getButtonAriaLabel(ariaLabel, tooltip)}\n        aria-expanded={isOpen}\n        type=\"button\"\n        {...rest}\n      >\n        {renderIcon(icon, iconSize)}\n        {imgSrc && <img className={styles.img} src={imgSrc} alt={imgAlt ?? ''} />}\n        {children && !iconOnly && <div className={contentStyles}>{children}</div>}\n        {isOpen === false && <Icon name=\"angle-down\" />}\n        {isOpen === true && <Icon name=\"angle-up\" />}\n        {isHighlighted && <div className={styles.highlight} />}\n      </button>\n    );\n\n    return tooltip ? (\n      <Tooltip ref={ref} content={tooltip} placement=\"bottom\">\n        {body}\n      </Tooltip>\n    ) : (\n      body\n    );\n  }\n);\n\nToolbarButton.displayName = 'ToolbarButton';\n\nfunction getButtonAriaLabel(ariaLabel: string | undefined, tooltip: string | undefined) {\n  return ariaLabel ? ariaLabel : tooltip ? selectors.components.PageToolbar.item(tooltip) : undefined;\n}\n\nfunction renderIcon(icon: IconName | React.ReactNode, iconSize?: IconSize) {\n  if (!icon) {\n    return null;\n  }\n\n  if (isIconName(icon)) {\n    return <Icon name={icon} size={`${iconSize ? iconSize : 'lg'}`} />;\n  }\n\n  return icon;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const primaryVariant = getPropertiesForVariant(theme, 'primary', 'solid');\n  const destructiveVariant = getPropertiesForVariant(theme, 'destructive', 'solid');\n\n  const defaultOld = css({\n    color: theme.colors.text.primary,\n    background: theme.colors.secondary.main,\n\n    '&:hover': {\n      color: theme.colors.text.primary,\n      background: theme.colors.secondary.shade,\n      border: `1px solid ${theme.colors.border.medium}`,\n    },\n  });\n\n  return {\n    button: css({\n      label: 'toolbar-button',\n      position: 'relative',\n      display: 'flex',\n      alignItems: 'center',\n      height: theme.spacing(theme.components.height.md),\n      padding: theme.spacing(0, 1),\n      borderRadius: theme.shape.radius.default,\n      lineHeight: `${theme.components.height.md * theme.spacing.gridSize - 2}px`,\n      fontWeight: theme.typography.fontWeightMedium,\n      border: `1px solid ${theme.colors.secondary.border}`,\n      whiteSpace: 'nowrap',\n      [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n        transition: theme.transitions.create(['background', 'box-shadow', 'border-color', 'color'], {\n          duration: theme.transitions.duration.short,\n        }),\n      },\n\n      [theme.breakpoints.down('md')]: {\n        width: 'auto !important',\n      },\n\n      '&:focus, &:focus-visible': {\n        ...getFocusStyles(theme),\n        zIndex: 1,\n      },\n\n      '&:focus:not(:focus-visible)': getMouseFocusStyles(theme),\n\n      '&[disabled], &:disabled': {\n        cursor: 'not-allowed',\n        opacity: theme.colors.action.disabledOpacity,\n        background: theme.colors.action.disabledBackground,\n        boxShadow: 'none',\n\n        '&:hover': {\n          color: theme.colors.text.disabled,\n          background: theme.colors.action.disabledBackground,\n          boxShadow: 'none',\n        },\n      },\n    }),\n    default: css({\n      color: theme.colors.text.secondary,\n      background: 'transparent',\n      border: `1px solid transparent`,\n\n      '&:hover': {\n        color: theme.colors.text.primary,\n        background: theme.colors.action.hover,\n      },\n    }),\n    canvas: defaultOld,\n    active: cx(\n      defaultOld,\n      css({\n        '&::before': {\n          display: 'block',\n          content: '\" \"',\n          position: 'absolute',\n          left: 0,\n          right: 0,\n          height: '2px',\n          bottom: 0,\n          borderRadius: theme.shape.radius.default,\n          backgroundImage: theme.colors.gradients.brandHorizontal,\n        },\n      })\n    ),\n    primary: css(primaryVariant),\n    destructive: css(destructiveVariant),\n    narrow: css({\n      padding: theme.spacing(0, 0.5),\n    }),\n    img: css({\n      width: '16px',\n      height: '16px',\n      marginRight: theme.spacing(1),\n    }),\n    buttonFullWidth: css({\n      flexGrow: 1,\n    }),\n    content: css({\n      display: 'flex',\n      flexGrow: 1,\n    }),\n    contentWithIcon: css({\n      display: 'none',\n      paddingLeft: theme.spacing(1),\n\n      [`@media ${mediaUp(theme.v1.breakpoints.md)}`]: {\n        display: 'block',\n      },\n    }),\n    contentWithRightIcon: css({\n      paddingRight: theme.spacing(0.5),\n    }),\n    highlight: css({\n      backgroundColor: theme.colors.success.main,\n      borderRadius: theme.shape.radius.circle,\n      width: '6px',\n      height: '6px',\n      position: 'absolute',\n      top: '-3px',\n      right: '-3px',\n      zIndex: 1,\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport {\n  autoUpdate,\n  flip,\n  offset,\n  shift,\n  useClick,\n  useDismiss,\n  useFloating,\n  useInteractions,\n} from '@floating-ui/react';\nimport { FocusScope } from '@react-aria/focus';\nimport { memo, HTMLAttributes, useState } from 'react';\n\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Menu } from '../Menu/Menu';\nimport { MenuItem } from '../Menu/MenuItem';\nimport { ToolbarButton, ToolbarButtonVariant } from '../ToolbarButton/ToolbarButton';\nimport { PopoverContent } from '../Tooltip/types';\n\nexport interface Props<T> extends HTMLAttributes<HTMLButtonElement> {\n  className?: string;\n  options: Array<SelectableValue<T>>;\n  value?: SelectableValue<T>;\n  onChange: (item: SelectableValue<T>) => void;\n  /** @deprecated use tooltip instead, tooltipContent is not being processed in ToolbarButton*/\n  tooltipContent?: PopoverContent;\n  narrow?: boolean;\n  variant?: ToolbarButtonVariant;\n  tooltip?: string;\n}\n\n/**\n * @deprecated Use Combobox or Dropdown instead\n */\nconst ButtonSelectComponent = <T,>(props: Props<T>) => {\n  const { className, options, value, onChange, narrow, variant, ...restProps } = props;\n  const styles = useStyles2(getStyles);\n  const [isOpen, setIsOpen] = useState(false);\n\n  // the order of middleware is important!\n  const middleware = [\n    offset(0),\n    flip({\n      fallbackAxisSideDirection: 'end',\n      // see https://floating-ui.com/docs/flip#combining-with-shift\n      crossAxis: false,\n      boundary: document.body,\n    }),\n    shift(),\n  ];\n\n  const { context, refs, floatingStyles } = useFloating({\n    open: isOpen,\n    placement: 'bottom-end',\n    onOpenChange: setIsOpen,\n    middleware,\n    whileElementsMounted: autoUpdate,\n  });\n\n  const click = useClick(context);\n  const dismiss = useDismiss(context);\n\n  const { getReferenceProps, getFloatingProps } = useInteractions([dismiss, click]);\n\n  const onChangeInternal = (item: SelectableValue<T>) => {\n    onChange(item);\n    setIsOpen(false);\n  };\n\n  return (\n    <div className={styles.wrapper}>\n      <ToolbarButton\n        className={className}\n        isOpen={isOpen}\n        narrow={narrow}\n        variant={variant}\n        ref={refs.setReference}\n        {...getReferenceProps()}\n        {...restProps}\n      >\n        {value?.label || (value?.value != null ? String(value?.value) : null)}\n      </ToolbarButton>\n      {isOpen && (\n        <div className={styles.menuWrapper} ref={refs.setFloating} {...getFloatingProps()} style={floatingStyles}>\n          <FocusScope contain autoFocus restoreFocus>\n            {/*\n              tabIndex=-1 is needed here to support highlighting text within the menu when using FocusScope\n              see https://github.com/adobe/react-spectrum/issues/1604#issuecomment-781574668\n            */}\n            <Menu tabIndex={-1} onClose={() => setIsOpen(false)}>\n              {options.map((item) => (\n                <MenuItem\n                  key={`${item.value}`}\n                  label={item.label ?? String(item.value)}\n                  onClick={() => onChangeInternal(item)}\n                  active={item.value === value?.value}\n                  ariaChecked={item.value === value?.value}\n                  ariaLabel={item.ariaLabel || item.label}\n                  disabled={item.isDisabled}\n                  component={item.component}\n                  role=\"menuitemradio\"\n                />\n              ))}\n            </Menu>\n          </FocusScope>\n        </div>\n      )}\n    </div>\n  );\n};\n\nButtonSelectComponent.displayName = 'ButtonSelect';\n\n// needed to properly forward the generic type through React.memo\n// see https://github.com/DefinitelyTyped/DefinitelyTyped/issues/37087#issuecomment-656596623\n// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\nexport const ButtonSelect = memo(ButtonSelectComponent) as typeof ButtonSelectComponent;\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    wrapper: css({\n      position: 'relative',\n      display: 'inline-flex',\n    }),\n    menuWrapper: css({\n      zIndex: theme.zIndex.dropdown,\n      maxHeight: '100vh',\n      overflow: 'auto',\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport { formatDuration } from 'date-fns';\nimport { PureComponent } from 'react';\n\nimport { SelectableValue, parseDuration } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { ButtonGroup } from '../Button/ButtonGroup';\nimport { ButtonSelect } from '../Dropdown/ButtonSelect';\nimport { ToolbarButton, ToolbarButtonVariant } from '../ToolbarButton/ToolbarButton';\n\n// Default intervals used in the refresh picker component\nexport const defaultIntervals = ['5s', '10s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'];\n\nexport interface Props {\n  intervals?: string[];\n  onRefresh?: () => void;\n  onIntervalChanged: (interval: string) => void;\n  value?: string;\n  tooltip?: string;\n  isLoading?: boolean;\n  isLive?: boolean;\n  text?: string;\n  noIntervalPicker?: boolean;\n  showAutoInterval?: boolean;\n  width?: string;\n  primary?: boolean;\n  isOnCanvas?: boolean;\n}\n\nexport class RefreshPicker extends PureComponent<Props> {\n  static offOption = {\n    label: 'Off',\n    value: '',\n    ariaLabel: 'Turn off auto refresh',\n  };\n  static liveOption = {\n    label: 'Live',\n    value: 'LIVE',\n    ariaLabel: 'Turn on live streaming',\n  };\n  static autoOption = {\n    label: 'Auto',\n    value: 'auto',\n    ariaLabel: 'Select refresh from the query range',\n  };\n\n  static isLive = (refreshInterval?: string): boolean => refreshInterval === RefreshPicker.liveOption.value;\n\n  constructor(props: Props) {\n    super(props);\n  }\n\n  onChangeSelect = (item: SelectableValue<string>) => {\n    const { onIntervalChanged } = this.props;\n    if (onIntervalChanged && item.value != null) {\n      onIntervalChanged(item.value);\n    }\n  };\n\n  getVariant(): ToolbarButtonVariant {\n    if (this.props.isLive) {\n      return 'primary';\n    }\n\n    if (this.props.primary) {\n      return 'primary';\n    }\n\n    return this.props.isOnCanvas ? 'canvas' : 'default';\n  }\n\n  render() {\n    const { onRefresh, intervals, tooltip, value, text, isLoading, noIntervalPicker, width, showAutoInterval } =\n      this.props;\n\n    const currentValue = value || '';\n    const variant = this.getVariant();\n    const options = intervalsToOptions({ intervals, showAutoInterval });\n    const option = options.find(({ value }) => value === currentValue);\n    const translatedOffOption = translateOption(RefreshPicker.offOption.value);\n    let selectedValue = option || translatedOffOption;\n\n    if (selectedValue.label === translatedOffOption.label) {\n      selectedValue = { value: '' };\n    }\n\n    const durationAriaLabel = selectedValue.ariaLabel;\n    const ariaLabelDurationSelectedMessage = t(\n      'refresh-picker.aria-label.duration-selected',\n      'Choose refresh time interval with current interval {{durationAriaLabel}} selected',\n      { durationAriaLabel }\n    );\n    const ariaLabelChooseIntervalMessage = t(\n      'refresh-picker.aria-label.choose-interval',\n      'Auto refresh turned off. Choose refresh time interval'\n    );\n    const ariaLabel = selectedValue.value === '' ? ariaLabelChooseIntervalMessage : ariaLabelDurationSelectedMessage;\n\n    const tooltipIntervalSelected = t('refresh-picker.tooltip.interval-selected', 'Set auto refresh interval');\n    const tooltipAutoRefreshOff = t('refresh-picker.tooltip.turned-off', 'Auto refresh off');\n    const tooltipAutoRefresh = selectedValue.value === '' ? tooltipAutoRefreshOff : tooltipIntervalSelected;\n\n    return (\n      <ButtonGroup className=\"refresh-picker\">\n        <ToolbarButton\n          aria-label={text}\n          tooltip={tooltip}\n          onClick={onRefresh}\n          variant={variant}\n          icon={isLoading ? 'spinner' : 'sync'}\n          style={width ? { width } : undefined}\n          data-testid={selectors.components.RefreshPicker.runButtonV2}\n        >\n          {text}\n        </ToolbarButton>\n        {!noIntervalPicker && (\n          <ButtonSelect\n            className={css({\n              borderTopLeftRadius: 'unset',\n              borderBottomLeftRadius: 'unset',\n            })}\n            value={selectedValue}\n            options={options}\n            onChange={this.onChangeSelect}\n            variant={variant}\n            data-testid={selectors.components.RefreshPicker.intervalButtonV2}\n            aria-label={ariaLabel}\n            tooltip={tooltipAutoRefresh}\n          />\n        )}\n      </ButtonGroup>\n    );\n  }\n}\n\nexport function translateOption(option: string) {\n  switch (option) {\n    case RefreshPicker.liveOption.value:\n      return {\n        label: t('refresh-picker.live-option.label', 'Live'),\n        value: option,\n        ariaLabel: t('refresh-picker.live-option.aria-label', 'Turn on live streaming'),\n      };\n    case RefreshPicker.offOption.value:\n      return {\n        label: t('refresh-picker.off-option.label', 'Off'),\n        value: option,\n        ariaLabel: t('refresh-picker.off-option.aria-label', 'Turn off auto refresh'),\n      };\n    case RefreshPicker.autoOption.value:\n      return {\n        label: t('refresh-picker.auto-option.label', RefreshPicker.autoOption.label),\n        value: option,\n        ariaLabel: t('refresh-picker.auto-option.aria-label', RefreshPicker.autoOption.ariaLabel),\n      };\n  }\n  return {\n    label: option,\n    value: option,\n  };\n}\n\nexport function intervalsToOptions({\n  intervals = defaultIntervals,\n  showAutoInterval = false,\n}: { intervals?: string[]; showAutoInterval?: boolean } = {}): Array<SelectableValue<string>> {\n  const options: Array<SelectableValue<string>> = intervals.map((interval) => {\n    const duration = parseDuration(interval);\n    const ariaLabel = formatDuration(duration);\n\n    return {\n      label: interval,\n      value: interval,\n      ariaLabel: ariaLabel,\n    };\n  });\n\n  if (showAutoInterval) {\n    options.unshift(translateOption(RefreshPicker.autoOption.value));\n  }\n  options.unshift(translateOption(RefreshPicker.offOption.value));\n  return options;\n}\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport const getModalStyles = (theme: GrafanaTheme2) => {\n  const borderRadius = theme.shape.radius.default;\n\n  return {\n    modal: css({\n      position: 'fixed',\n      zIndex: theme.zIndex.modal,\n      background: theme.colors.background.primary,\n      boxShadow: theme.shadows.z3,\n      borderRadius,\n      border: `1px solid ${theme.colors.border.weak}`,\n      backgroundClip: 'padding-box',\n      outline: 'none',\n      width: '750px',\n      maxWidth: '100%',\n      left: 0,\n      right: 0,\n      marginLeft: 'auto',\n      marginRight: 'auto',\n      top: '10%',\n      maxHeight: '80%',\n      display: 'flex',\n      flexDirection: 'column',\n      // Centre the modal vertically on smaller height screens\n      // this allows us to fill the full height for maximum usability\n      ['@media (max-height: 750px)']: {\n        maxHeight: '100%',\n        top: '50%',\n        transform: 'translateY(-50%)',\n      },\n    }),\n    modalBackdrop: css({\n      position: 'fixed',\n      zIndex: theme.zIndex.modalBackdrop,\n      top: 0,\n      right: 0,\n      bottom: 0,\n      left: 0,\n      backgroundColor: theme.components.overlay.background,\n    }),\n    modalHeader: css({\n      label: 'modalHeader',\n      display: 'flex',\n      alignItems: 'center',\n      minHeight: '42px',\n      margin: theme.spacing(1, 2, 0, 2),\n    }),\n    modalHeaderWithTabs: css({\n      borderBottom: `1px solid ${theme.colors.border.weak}`,\n    }),\n    modalHeaderTitle: css({\n      fontSize: theme.typography.size.lg,\n      margin: theme.spacing(0, 4, 0, 1),\n      display: 'flex',\n      alignItems: 'center',\n      position: 'relative',\n      top: '2px',\n    }),\n    modalHeaderIcon: css({\n      marginRight: theme.spacing(2),\n      fontSize: 'inherit',\n      '&:before': {\n        verticalAlign: 'baseline',\n      },\n    }),\n    modalHeaderClose: css({\n      height: '100%',\n      display: 'flex',\n      alignItems: 'center',\n      color: theme.colors.text.secondary,\n      flexGrow: 1,\n      justifyContent: 'flex-end',\n    }),\n    modalContent: css({\n      overflow: 'auto',\n      padding: theme.spacing(3),\n      width: '100%',\n    }),\n    modalButtonRow: css({\n      paddingTop: theme.spacing(3),\n    }),\n  };\n};\n","import * as React from 'react';\n\nexport function useCombinedRefs<T>(\n  ...refs: Array<React.MutableRefObject<T | null> | React.ForwardedRef<T | null> | ((instance: T | null) => void)>\n) {\n  const targetRef = React.useRef<T | null>(null);\n\n  React.useEffect(() => {\n    refs.forEach((ref) => {\n      if (!ref) {\n        return;\n      }\n\n      if (typeof ref === 'function') {\n        ref(targetRef.current);\n      } else {\n        ref.current = targetRef.current;\n      }\n    });\n  }, [refs]);\n\n  return targetRef;\n}\n","import { forwardRef, useRef, HTMLProps } from 'react';\n\nimport { escapeStringForRegex, unEscapeStringFromRegex } from '@grafana/data';\nimport { Trans } from '@grafana/i18n';\n\nimport { useCombinedRefs } from '../../utils/useCombinedRefs';\nimport { Button } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\nimport { Input } from '../Input/Input';\n\nexport interface Props extends Omit<HTMLProps<HTMLInputElement>, 'onChange'> {\n  value: string | undefined;\n  width?: number;\n  onChange: (value: string) => void;\n  escapeRegex?: boolean;\n}\n\nexport const FilterInput = forwardRef<HTMLInputElement, Props>(\n  ({ value, width, onChange, escapeRegex = true, ...restProps }, ref) => {\n    const innerRef = useRef<HTMLInputElement | null>(null);\n    const combinedRef = useCombinedRefs<HTMLInputElement>(ref, innerRef);\n\n    const suffix =\n      value !== '' ? (\n        <Button\n          icon=\"times\"\n          fill=\"text\"\n          size=\"sm\"\n          onClick={(e) => {\n            innerRef.current?.focus();\n            onChange('');\n            e.stopPropagation();\n          }}\n        >\n          <Trans i18nKey=\"grafana-ui.filter-input.clear\">Clear</Trans>\n        </Button>\n      ) : null;\n\n    return (\n      <Input\n        prefix={<Icon name=\"search\" />}\n        suffix={suffix}\n        width={width}\n        type=\"text\"\n        value={escapeRegex ? unEscapeStringFromRegex(value ?? '') : value}\n        onChange={(event) =>\n          onChange(escapeRegex ? escapeStringForRegex(event.currentTarget.value) : event.currentTarget.value)\n        }\n        {...restProps}\n        ref={combinedRef}\n      />\n    );\n  }\n);\n\nFilterInput.displayName = 'FilterInput';\n","import { AnchorHTMLAttributes, forwardRef } from 'react';\nimport { Link as RouterLink } from 'react-router-dom-v5-compat';\n\nimport { locationUtil, textUtil } from '@grafana/data';\n\nexport interface Props extends AnchorHTMLAttributes<HTMLAnchorElement> {}\n\n/**\n * @alpha\n */\nexport const Link = forwardRef<HTMLAnchorElement, Props>(({ href, children, ...rest }, ref) => {\n  const validUrl = locationUtil.stripBaseFromUrl(textUtil.sanitizeUrl(href ?? ''));\n\n  return (\n    <RouterLink ref={ref} to={validUrl} {...rest}>\n      {children}\n    </RouterLink>\n  );\n});\n\nLink.displayName = 'Link';\n","import { css } from '@emotion/css';\nimport { AnchorHTMLAttributes, forwardRef } from 'react';\n\nimport { GrafanaTheme2, locationUtil, textUtil, ThemeTypographyVariantTypes } from '@grafana/data';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { IconName, IconSize } from '../../types/icon';\nimport { Icon } from '../Icon/Icon';\nimport { customWeight } from '../Text/utils';\n\nimport { Link } from './Link';\n\ntype TextLinkVariants = keyof Omit<ThemeTypographyVariantTypes, 'code'>;\n\ninterface TextLinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'target' | 'rel'> {\n  /** url to which redirect the user, external or internal */\n  href: string;\n  /** Color to use for text */\n  color?: keyof GrafanaTheme2['colors']['text'];\n  /** Specify if the link will redirect users to a page in or out Grafana */\n  external?: boolean;\n  /** True when the link will be displayed inline with surrounding text, false if it will be displayed as a block. Depending on this prop correspondant default styles will be applied */\n  inline?: boolean;\n  /** The default variant is 'body'. To fit another styles set the correspondent variant as it is necessary also to adjust the icon size. `code` is excluded, as it is not fit for links. */\n  variant?: TextLinkVariants;\n  /** Override the default weight for the used variant */\n  weight?: 'light' | 'regular' | 'medium' | 'bold';\n  /** Set the icon to be shown. An external link will show the 'external-link-alt' icon as default.*/\n  icon?: IconName;\n  children: React.ReactNode;\n}\n\nconst svgSizes: {\n  [key in TextLinkVariants]: IconSize;\n} = {\n  h1: 'xl',\n  h2: 'xl',\n  h3: 'lg',\n  h4: 'lg',\n  h5: 'md',\n  h6: 'md',\n  body: 'md',\n  bodySmall: 'xs',\n};\n\nexport const TextLink = forwardRef<HTMLAnchorElement, TextLinkProps>(\n  (\n    { href, color = 'link', external = false, inline = true, variant = 'body', weight, icon, children, ...rest },\n    ref\n  ) => {\n    const validUrl = textUtil.sanitizeUrl(href ?? '');\n\n    const theme = useTheme2();\n    const styles = getLinkStyles(theme, inline, variant, weight, color);\n    const externalIcon = icon || 'external-link-alt';\n\n    if (external) {\n      return (\n        <a href={validUrl} ref={ref} {...rest} target=\"_blank\" rel=\"noreferrer\" className={styles}>\n          {children}\n          <Icon size={svgSizes[variant] || 'md'} name={externalIcon} />\n        </a>\n      );\n    }\n\n    const strippedUrl = locationUtil.stripBaseFromUrl(validUrl);\n\n    return (\n      <Link ref={ref} href={strippedUrl} {...rest} className={styles}>\n        {children}\n        {icon && <Icon name={icon} size={svgSizes[variant] || 'md'} />}\n      </Link>\n    );\n  }\n);\n\nTextLink.displayName = 'TextLink';\n\nexport const getLinkStyles = (\n  theme: GrafanaTheme2,\n  inline: boolean,\n  variant?: keyof ThemeTypographyVariantTypes,\n  weight?: TextLinkProps['weight'],\n  color?: TextLinkProps['color']\n) => {\n  return css([\n    variant && {\n      ...theme.typography[variant],\n    },\n    weight && {\n      fontWeight: customWeight(weight, theme),\n    },\n    color && {\n      color: theme.colors.text[color],\n    },\n    {\n      alignItems: 'center',\n      gap: '0.25em',\n      display: 'inline-flex',\n      textDecoration: 'none',\n      '&:hover': {\n        textDecoration: 'underline',\n        color: theme.colors.text.link,\n      },\n    },\n    inline && {\n      textDecoration: 'underline',\n      '&:hover': {\n        textDecoration: 'none',\n      },\n    },\n  ]);\n};\n","let _context: CanvasRenderingContext2D;\nconst cache = new Map<string, TextMetrics>();\nconst cacheLimit = 500;\nlet ctxFontStyle = '';\n\n/**\n * @internal\n */\nexport function getCanvasContext() {\n  if (!_context) {\n    _context = document.createElement('canvas').getContext('2d')!;\n  }\n  return _context;\n}\n\n/**\n * @beta\n */\nexport function measureText(text: string, fontSize: number, fontWeight = 400): TextMetrics {\n  const fontStyle = `${fontWeight} ${fontSize}px 'Inter'`;\n  const cacheKey = text + fontStyle;\n  const fromCache = cache.get(cacheKey);\n\n  if (fromCache) {\n    return fromCache;\n  }\n\n  const context = getCanvasContext();\n\n  if (ctxFontStyle !== fontStyle) {\n    context.font = ctxFontStyle = fontStyle;\n  }\n\n  const metrics = context.measureText(text);\n\n  if (cache.size === cacheLimit) {\n    cache.clear();\n  }\n\n  cache.set(cacheKey, metrics);\n\n  return metrics;\n}\n\n/**\n * @beta\n */\nexport function calculateFontSize(\n  text: string,\n  width: number,\n  height: number,\n  lineHeight: number,\n  maxSize?: number,\n  fontWeight?: number\n) {\n  // calculate width in 14px\n  const textSize = measureText(text, 14, fontWeight);\n  // how much bigger than 14px can we make it while staying within our width constraints\n  const fontSizeBasedOnWidth = (width / (textSize.width + 2)) * 14;\n  const fontSizeBasedOnHeight = height / lineHeight;\n\n  // final fontSize\n  const optimalSize = Math.min(fontSizeBasedOnHeight, fontSizeBasedOnWidth);\n  return Math.min(optimalSize, maxSize ?? optimalSize);\n}\n","import { useCallback, useEffect, useMemo, useRef } from 'react';\nimport * as React from 'react';\n\nimport { measureText } from '../../utils/measureText';\n\nimport { AutoSizeInputContext } from './AutoSizeInputContext';\nimport { Input, Props as InputProps } from './Input';\n\nexport interface Props extends InputProps {\n  /** Sets the min-width to a multiple of 8px. Default value is 10*/\n  minWidth?: number;\n  /** Sets the max-width to a multiple of 8px.*/\n  maxWidth?: number;\n  /** onChange function that will be run on onBlur and onKeyPress with enter\n   * @deprecated Use `onChange` instead and manage the value in the parent as a controlled input\n   */\n  onCommitChange?: (event: React.FormEvent<HTMLInputElement>) => void;\n\n  /** @deprecated Use `value` and `onChange` instead to manage the value in the parent as a controlled input */\n  defaultValue?: string | number | readonly string[];\n}\n\nexport const AutoSizeInput = React.forwardRef<HTMLInputElement, Props>((props, ref) => {\n  const {\n    defaultValue = '',\n    minWidth = 10,\n    maxWidth,\n    onCommitChange,\n    onChange,\n    onKeyDown,\n    onBlur,\n    value: controlledValue,\n    placeholder,\n    ...restProps\n  } = props;\n  const [inputState, setInputValue] = useControlledState(controlledValue, onChange);\n\n  // This must use ?? instead of || so the default value is not used when the value is an empty string\n  // typically from the user clearing the input\n  const inputValue = inputState ?? defaultValue;\n\n  // Update input width when `value`, `minWidth`, or `maxWidth` change\n  const inputWidth = useMemo(() => {\n    const displayValue = inputValue || placeholder || '';\n    const valueString = typeof displayValue === 'string' ? displayValue : displayValue.toString();\n\n    return getWidthFor(valueString, minWidth, maxWidth);\n  }, [placeholder, inputValue, minWidth, maxWidth]);\n\n  return (\n    <AutoSizeInputContext.Provider value={true}>\n      <Input\n        data-testid=\"autosize-input\" // consumer should override default testid\n        {...restProps}\n        placeholder={placeholder}\n        ref={ref}\n        value={inputValue.toString()}\n        onChange={(event) => {\n          if (onChange) {\n            onChange(event);\n          }\n\n          setInputValue(event.currentTarget.value);\n        }}\n        width={inputWidth}\n        onBlur={(event) => {\n          if (onBlur) {\n            onBlur(event);\n          } else if (onCommitChange) {\n            onCommitChange(event);\n          }\n        }}\n        onKeyDown={(event) => {\n          if (onKeyDown) {\n            onKeyDown(event);\n          } else if (event.key === 'Enter' && onCommitChange) {\n            onCommitChange(event);\n          }\n        }}\n      />\n    </AutoSizeInputContext.Provider>\n  );\n});\n\nfunction getWidthFor(value: string, minWidth: number, maxWidth: number | undefined): number {\n  if (!value) {\n    return minWidth;\n  }\n\n  const extraSpace = 3;\n  const realWidth = measureText(value.toString(), 14).width / 8 + extraSpace;\n\n  if (minWidth && realWidth < minWidth) {\n    return minWidth;\n  }\n\n  if (maxWidth && realWidth > maxWidth) {\n    return maxWidth;\n  }\n\n  return realWidth;\n}\n\nAutoSizeInput.displayName = 'AutoSizeInput';\n\n/**\n * Hook to abstract away state management for controlled and uncontrolled inputs.\n * If the initial value is not undefined, then the value will be controlled by the parent\n * for the lifetime of the component and calls to setState will be ignored.\n */\nfunction useControlledState<T>(controlledValue: T, onChange: Function | undefined): [T, (newValue: T) => void] {\n  const isControlledNow = controlledValue !== undefined && onChange !== undefined;\n  const isControlledRef = useRef(isControlledNow); // set the initial value - we never change this\n\n  const hasLoggedControlledWarning = useRef(false);\n  if (isControlledNow !== isControlledRef.current && !hasLoggedControlledWarning.current) {\n    console.warn(\n      'An AutoSizeInput is changing from an uncontrolled to a controlled input. If you want to control the input, the empty value should be an empty string.'\n    );\n    hasLoggedControlledWarning.current = true;\n  }\n\n  const [internalValue, setInternalValue] = React.useState(controlledValue);\n\n  useEffect(() => {\n    if (!isControlledRef.current) {\n      setInternalValue(controlledValue);\n    }\n  }, [controlledValue]);\n\n  const handleChange = useCallback((newValue: T) => {\n    if (!isControlledRef.current) {\n      setInternalValue(newValue);\n    }\n  }, []);\n\n  const value = isControlledRef.current ? controlledValue : internalValue;\n\n  return [value, handleChange];\n}\n","import { css, cx } from '@emotion/css';\nimport { HTMLProps, useCallback } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles, getMouseFocusStyles } from '../../themes/mixins';\n\nimport { getLabelStyles } from './Label';\n\nexport interface CheckboxProps extends Omit<HTMLProps<HTMLInputElement>, 'value'> {\n  /** Label to display next to checkbox */\n  label?: string;\n  /** Description to display under the label */\n  description?: string | React.ReactElement;\n  /** Current value of the checkbox */\n  value?: boolean;\n  /** htmlValue allows to specify the input \"value\" attribute */\n  htmlValue?: string | number;\n  /** Sets the checkbox into a \"mixed\" state. This is only a visual change and does not affect the value. */\n  indeterminate?: boolean;\n  /** Show an invalid state around the input */\n  invalid?: boolean;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n  (\n    { label, description, value, htmlValue, onChange, disabled, className, indeterminate, invalid, ...inputProps },\n    ref\n  ) => {\n    const handleOnChange = useCallback(\n      (e: React.ChangeEvent<HTMLInputElement>) => {\n        if (onChange) {\n          onChange(e);\n        }\n      },\n      [onChange]\n    );\n    const styles = useStyles2(getCheckboxStyles, invalid);\n\n    const ariaChecked = indeterminate ? 'mixed' : undefined;\n\n    return (\n      <label className={cx(styles.wrapper, className)}>\n        <div className={styles.checkboxWrapper}>\n          <input\n            type=\"checkbox\"\n            className={cx(styles.input, indeterminate && styles.inputIndeterminate)}\n            checked={value}\n            disabled={disabled}\n            onChange={handleOnChange}\n            value={htmlValue}\n            aria-checked={ariaChecked}\n            {...inputProps}\n            ref={ref}\n          />\n          <span className={styles.checkmark} />\n        </div>\n        {label && <span className={styles.label}>{label}</span>}\n        {description && <span className={styles.description}>{description}</span>}\n      </label>\n    );\n  }\n);\n\nexport const getCheckboxStyles = (theme: GrafanaTheme2, invalid = false) => {\n  const labelStyles = getLabelStyles(theme);\n  const checkboxSize = 2;\n  const labelPadding = 1;\n\n  const getBorderColor = (color: string) => {\n    return invalid ? theme.colors.error.border : color;\n  };\n\n  return {\n    wrapper: css({\n      display: 'inline-grid',\n      alignItems: 'center',\n      columnGap: theme.spacing(labelPadding),\n      // gridAutoRows is needed to prevent https://github.com/grafana/grafana/issues/68570 in safari\n      gridAutoRows: 'max-content',\n      position: 'relative',\n      verticalAlign: 'middle',\n    }),\n    input: css({\n      position: 'absolute',\n      zIndex: 1,\n      top: 0,\n      left: 0,\n      width: '100% !important', // global styles unset this\n      height: '100%',\n      opacity: 0,\n\n      '&:focus + span, &:focus-visible + span': getFocusStyles(theme),\n\n      '&:focus:not(:focus-visible) + span': getMouseFocusStyles(theme),\n\n      /**\n       * Using adjacent sibling selector to style checked state.\n       * Primarily to limit the classes necessary to use when these classes will be used\n       * for angular components styling\n       * */\n      '&:checked + span': {\n        background: theme.colors.primary.main,\n        border: `1px solid ${getBorderColor(theme.colors.primary.main)}`,\n\n        '&:hover': {\n          background: theme.colors.primary.shade,\n        },\n\n        '&:after': {\n          content: '\"\"',\n          position: 'absolute',\n          zIndex: 2,\n          left: theme.spacing(0.5),\n          top: 0,\n          width: theme.spacing(0.75),\n          height: theme.spacing(1.5),\n          border: `solid ${theme.colors.primary.contrastText}`,\n          borderWidth: '0 3px 3px 0',\n          transform: 'rotate(45deg)',\n        },\n      },\n\n      '&:disabled + span': {\n        backgroundColor: theme.colors.action.disabledBackground,\n        cursor: 'not-allowed',\n        border: `1px solid ${getBorderColor(theme.colors.action.disabledBackground)}`,\n\n        '&:hover': {\n          backgroundColor: theme.colors.action.disabledBackground,\n        },\n\n        '&:after': {\n          borderColor: theme.colors.action.disabledText,\n        },\n      },\n    }),\n\n    inputIndeterminate: css({\n      \"&[aria-checked='mixed'] + span\": {\n        border: `1px solid ${getBorderColor(theme.colors.primary.main)}`,\n        background: theme.colors.primary.main,\n\n        '&:hover': {\n          background: theme.colors.primary.shade,\n        },\n\n        '&:after': {\n          content: '\"\"',\n          position: 'absolute',\n          zIndex: 2,\n          left: '2px',\n          right: '2px',\n          top: 'calc(50% - 1.5px)',\n          height: '3px',\n          border: `1.5px solid ${theme.colors.primary.contrastText}`,\n          backgroundColor: theme.colors.primary.contrastText,\n          width: 'auto',\n          transform: 'none',\n        },\n      },\n      \"&:disabled[aria-checked='mixed'] + span\": {\n        backgroundColor: theme.colors.action.disabledBackground,\n        border: `1px solid ${getBorderColor(theme.colors.error.transparent)}`,\n\n        '&:after': {\n          borderColor: theme.colors.action.disabledText,\n        },\n      },\n    }),\n\n    checkboxWrapper: css({\n      display: 'flex',\n      alignItems: 'center',\n      gridColumnStart: 1,\n      gridRowStart: 1,\n    }),\n    checkmark: css({\n      position: 'relative' /* Checkbox should be layered on top of the invisible input so it recieves :hover */,\n      zIndex: 2,\n      display: 'inline-block',\n      width: theme.spacing(checkboxSize),\n      height: theme.spacing(checkboxSize),\n      borderRadius: theme.shape.radius.default,\n      background: theme.components.input.background,\n      border: `1px solid ${getBorderColor(theme.components.input.borderColor)}`,\n\n      '&:hover': {\n        cursor: 'pointer',\n        borderColor: getBorderColor(theme.components.input.borderHover),\n      },\n    }),\n    label: cx(\n      labelStyles.label,\n      css({\n        gridColumnStart: 2,\n        gridRowStart: 1,\n        position: 'relative',\n        zIndex: 2,\n        cursor: 'pointer',\n        maxWidth: 'fit-content',\n        lineHeight: theme.typography.bodySmall.lineHeight,\n        marginBottom: 0,\n      })\n    ),\n    description: cx(\n      labelStyles.description,\n      css({\n        gridColumnStart: 2,\n        gridRowStart: 2,\n        lineHeight: theme.typography.bodySmall.lineHeight,\n        marginTop: 0 /* The margin effectively comes from the top: -2px on the label above it */,\n        // Enable interacting with description when checkbox is disabled\n        zIndex: 1,\n      })\n    ),\n  };\n};\n\nCheckbox.displayName = 'Checkbox';\n","import { ReactNode } from 'react';\n\nimport { Trans } from '@grafana/i18n';\n\nimport { Icon } from '../Icon/Icon';\nimport { Box } from '../Layout/Box/Box';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { Text } from '../Text/Text';\n\nexport const AsyncError = () => (\n  <MessageRow>\n    <Text color=\"warning\">\n      <Icon name=\"exclamation-triangle\" size=\"md\" />\n    </Text>\n    <Trans i18nKey=\"combobox.async.error\">An error occurred while loading options.</Trans>\n  </MessageRow>\n);\n\nexport const NotFoundError = () => (\n  <MessageRow>\n    <Trans i18nKey=\"combobox.options.no-found\">No options found.</Trans>\n  </MessageRow>\n);\n\nconst MessageRow = ({ children }: { children: ReactNode }) => {\n  return (\n    <Box padding={2}>\n      <Stack justifyContent=\"center\" alignItems=\"center\" direction=\"column\">\n        {children}\n      </Stack>\n    </Box>\n  );\n};\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\n// We need a px font size to accurately measure the width of items.\n// This should be in sync with the body font size in the theme.\nexport const MENU_ITEM_FONT_SIZE = 14;\nexport const MENU_ITEM_DESCRIPTION_FONT_SIZE = 12;\nexport const MENU_ITEM_FONT_WEIGHT = 500;\nexport const MENU_ITEM_PADDING = 8;\nexport const MENU_ITEM_GAP = 2;\nexport const MENU_ITEM_LINE_HEIGHT = 1.5;\n\n// Used with Downshift to get the height of each item\nexport const MENU_OPTION_HEIGHT = MENU_ITEM_GAP + MENU_ITEM_PADDING * 2 + MENU_ITEM_FONT_SIZE * MENU_ITEM_LINE_HEIGHT;\nexport const MENU_OPTION_HEIGHT_DESCRIPTION =\n  MENU_OPTION_HEIGHT + MENU_ITEM_DESCRIPTION_FONT_SIZE * MENU_ITEM_LINE_HEIGHT;\nexport const POPOVER_MAX_HEIGHT = MENU_OPTION_HEIGHT * 8.5;\n\nexport const getComboboxStyles = (theme: GrafanaTheme2) => {\n  return {\n    menuClosed: css({\n      display: 'none',\n    }),\n    menu: css({\n      label: 'combobox-menu',\n      background: theme.components.dropdown.background,\n      boxShadow: theme.shadows.z3,\n      zIndex: theme.zIndex.dropdown,\n      position: 'relative',\n      borderRadius: theme.shape.radius.default,\n      overflow: 'hidden',\n    }),\n    menuUlContainer: css({\n      label: 'combobox-menu-ul-container',\n      listStyle: 'none',\n    }),\n\n    // The wrapper around the group header and option, not the option itself.\n    // Should not contain visual styling itself.\n    listItem: css({\n      label: 'list-item',\n      position: 'absolute',\n      width: '100%',\n    }),\n\n    optionGroupHeader: css({\n      label: 'combobox-new-option-group',\n      borderTop: `1px solid ${theme.colors.border.weak}`,\n    }),\n\n    optionFirstGroupHeader: css({\n      borderTop: 'none',\n    }),\n\n    optionGroupLabel: css({\n      textOverflow: 'ellipsis',\n      overflow: 'hidden',\n      letterSpacing: 0,\n      color: theme.colors.text.secondary,\n      fontSize: theme.typography.bodySmall.fontSize,\n      fontWeight: theme.typography.fontWeightLight,\n      padding: MENU_ITEM_PADDING,\n    }),\n\n    option: css({\n      label: 'combobox-option',\n      position: 'relative', // for the selection gradient to grab to\n      display: 'flex',\n      width: '100%',\n      gap: theme.spacing(1),\n      alignItems: 'center',\n      padding: MENU_ITEM_PADDING,\n      marginBottom: MENU_ITEM_GAP,\n      borderRadius: theme.shape.radius.default,\n      fontWeight: theme.typography.fontWeightMedium,\n      whiteSpace: 'nowrap',\n      overflow: 'hidden',\n      cursor: 'pointer',\n      '&:hover': {\n        background: theme.colors.action.hover,\n        '@media (forced-colors: active), (prefers-contrast: more)': {\n          border: `1px solid ${theme.colors.primary.border}`,\n        },\n      },\n    }),\n\n    optionAccessory: css({\n      label: 'combobox-option-accessory',\n      height: MENU_ITEM_FONT_SIZE * MENU_ITEM_LINE_HEIGHT, // Ensure the accessory doesn't make the option too tall\n    }),\n\n    optionBody: css({\n      label: 'combobox-option-body',\n      display: 'flex',\n      flexDirection: 'column',\n      flexGrow: 1,\n      overflow: 'hidden',\n    }),\n\n    optionLabel: css({\n      label: 'combobox-option-label',\n      fontSize: MENU_ITEM_FONT_SIZE,\n      fontWeight: MENU_ITEM_FONT_WEIGHT,\n      lineHeight: MENU_ITEM_LINE_HEIGHT,\n      letterSpacing: 0,\n      textOverflow: 'ellipsis',\n      overflow: 'hidden',\n    }),\n\n    optionDescription: css({\n      label: 'combobox-option-description',\n      color: theme.colors.text.secondary,\n      fontSize: MENU_ITEM_DESCRIPTION_FONT_SIZE,\n      fontWeight: theme.typography.fontWeightRegular,\n      lineHeight: MENU_ITEM_LINE_HEIGHT,\n      letterSpacing: 0,\n      textOverflow: 'ellipsis',\n      overflow: 'hidden',\n    }),\n\n    optionFocused: css({\n      label: 'combobox-option-focused',\n      // top: 0,\n      background: theme.colors.action.focus,\n      '@media (forced-colors: active), (prefers-contrast: more)': {\n        border: `1px solid ${theme.colors.primary.border}`,\n      },\n    }),\n    optionSelected: css({\n      background: theme.colors.action.selected,\n      '&::before': {\n        backgroundImage: theme.colors.gradients.brandVertical,\n        borderRadius: theme.shape.radius.default,\n        content: '\" \"',\n        display: 'block',\n        height: '100%',\n        position: 'absolute',\n        width: theme.spacing(0.5),\n        left: 0,\n        top: 0,\n      },\n    }),\n    optionInfo: css({\n      label: 'combobox-option-info',\n      color: theme.colors.text.disabled,\n      cursor: 'not-allowed',\n      pointerEvents: 'none',\n      '&:hover': {\n        background: 'transparent',\n      },\n    }),\n    clear: css({\n      label: 'combobox-clear',\n      cursor: 'pointer',\n      pointerEvents: 'auto',\n      '&:hover': {\n        color: theme.colors.text.primary,\n      },\n    }),\n    input: css({\n      label: 'combobox-input',\n      '> div > div:last-child': {\n        pointerEvents: 'none',\n      },\n      '& input': {\n        cursor: 'pointer',\n      },\n      '& input:focus': {\n        cursor: 'text',\n      },\n    }),\n    adaptToParent: css({\n      label: 'combobox-adapt-to-parent',\n      maxWidth: '100%',\n      '[class*=\"input-wrapper-combobox-input\"]': {\n        maxWidth: '100%',\n      },\n    }),\n  };\n};\n","export const ALL_OPTION_VALUE = '__GRAFANA_INTERNAL_MULTICOMBOBOX_ALL_OPTION__';\n\nexport type ComboboxOption<T extends string | number = string> = {\n  label?: string;\n  value: T;\n  description?: string;\n  group?: string;\n  infoOption?: boolean;\n};\n","import { ComboboxOption } from './types';\n\nexport const isNewGroup = <T extends string | number>(option: ComboboxOption<T>, prevOption?: ComboboxOption<T>) => {\n  const currentGroup = option.group;\n\n  if (!currentGroup) {\n    return prevOption?.group ? true : false;\n  }\n\n  if (!prevOption) {\n    return true;\n  }\n\n  return prevOption.group !== currentGroup;\n};\n","import { cx } from '@emotion/css';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport type { UseComboboxPropGetters } from 'downshift';\nimport { useCallback } from 'react';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Checkbox } from '../Forms/Checkbox';\nimport { ScrollContainer } from '../ScrollContainer/ScrollContainer';\n\nimport { AsyncError, NotFoundError } from './MessageRows';\nimport { getComboboxStyles, MENU_OPTION_HEIGHT, MENU_OPTION_HEIGHT_DESCRIPTION } from './getComboboxStyles';\nimport { ALL_OPTION_VALUE, ComboboxOption } from './types';\nimport { isNewGroup } from './utils';\n\nexport const VIRTUAL_OVERSCAN_ITEMS = 4;\n\ninterface ComboboxListProps<T extends string | number> {\n  options: Array<ComboboxOption<T>>;\n  highlightedIndex: number | null;\n  selectedItems?: Array<ComboboxOption<T>>;\n  scrollRef: React.RefObject<HTMLDivElement>;\n  getItemProps: UseComboboxPropGetters<ComboboxOption<T>>['getItemProps'];\n  enableAllOption?: boolean;\n  isMultiSelect?: boolean;\n  error?: boolean;\n}\n\nexport const ComboboxList = <T extends string | number>({\n  options,\n  highlightedIndex,\n  selectedItems = [],\n  scrollRef,\n  getItemProps,\n  enableAllOption,\n  isMultiSelect = false,\n  error = false,\n}: ComboboxListProps<T>) => {\n  const styles = useStyles2(getComboboxStyles);\n\n  const estimateSize = useCallback(\n    (index: number) => {\n      const firstGroupItem = isNewGroup(options[index], index > 0 ? options[index - 1] : undefined);\n      const hasDescription = 'description' in options[index];\n      const hasGroup = 'group' in options[index];\n\n      let itemHeight = MENU_OPTION_HEIGHT;\n      if (hasDescription) {\n        itemHeight = MENU_OPTION_HEIGHT_DESCRIPTION;\n      }\n      if (firstGroupItem && hasGroup) {\n        itemHeight += MENU_OPTION_HEIGHT;\n      }\n      return itemHeight;\n    },\n    [options]\n  );\n\n  const rowVirtualizer = useVirtualizer({\n    count: options.length,\n    getScrollElement: () => scrollRef.current,\n    estimateSize,\n    overscan: VIRTUAL_OVERSCAN_ITEMS,\n  });\n\n  const isOptionSelected = useCallback(\n    (item: ComboboxOption<T>) => selectedItems.some((opt) => opt.value === item.value),\n    [selectedItems]\n  );\n\n  const allItemsSelected = enableAllOption && options.length > 1 && selectedItems.length === options.length - 1;\n\n  return (\n    <ScrollContainer showScrollIndicators maxHeight=\"inherit\" ref={scrollRef} padding={0.5}>\n      <div style={{ height: rowVirtualizer.getTotalSize() }} className={styles.menuUlContainer}>\n        {rowVirtualizer.getVirtualItems().map((virtualRow, index, allVirtualRows) => {\n          const item = options[virtualRow.index];\n          const startingNewGroup = isNewGroup(item, options[virtualRow.index - 1]);\n\n          // Find the item that renders the group header. It can be this same item if this is rendering it.\n          const groupHeaderIndex = allVirtualRows.find((row) => {\n            const rowItem = options[row.index];\n            return rowItem.group === item.group;\n          });\n          const groupHeaderItem = groupHeaderIndex && options[groupHeaderIndex.index];\n\n          const itemId = `combobox-option-${item.value}`;\n          // If we're rendering the group header, this is the ID for it. Otherwise its used on\n          // the option for aria-describedby.\n          const groupHeaderId = groupHeaderItem ? `combobox-option-group-${groupHeaderItem.value}` : undefined;\n\n          return (\n            // Wrapping div should have no styling other than virtual list positioning.\n            // It's children (header and option) should appear as flat list items.\n            <div\n              key={item.value}\n              className={styles.listItem}\n              style={{\n                height: virtualRow.size,\n                transform: `translateY(${virtualRow.start}px)`,\n              }}\n            >\n              {/* Group header */}\n              {startingNewGroup && (\n                <div\n                  role=\"presentation\"\n                  data-testid=\"combobox-option-group\"\n                  id={groupHeaderId}\n                  className={cx(\n                    styles.optionGroupHeader,\n                    item.group && styles.optionGroupLabel,\n                    virtualRow.index === 0 && styles.optionFirstGroupHeader\n                  )}\n                >\n                  {item.group}\n                </div>\n              )}\n\n              {/* Option */}\n              <div\n                className={cx(\n                  styles.option,\n                  !isMultiSelect && isOptionSelected(item) && styles.optionSelected,\n                  highlightedIndex === virtualRow.index && !item.infoOption && styles.optionFocused,\n                  item.infoOption && styles.optionInfo\n                )}\n                {...getItemProps({\n                  item: item,\n                  index: virtualRow.index,\n                  id: itemId,\n                  'aria-describedby': groupHeaderId,\n                  disabled: item.infoOption,\n                })}\n              >\n                {isMultiSelect && (\n                  <div className={styles.optionAccessory}>\n                    {!item.infoOption && (\n                      <Checkbox\n                        key={itemId}\n                        value={allItemsSelected || isOptionSelected(item)}\n                        indeterminate={item.value === ALL_OPTION_VALUE && selectedItems.length > 0 && !allItemsSelected}\n                        aria-labelledby={itemId}\n                        onClick={(e) => {\n                          e.stopPropagation();\n                        }}\n                        data-testid={`${itemId}-checkbox`}\n                      />\n                    )}\n                  </div>\n                )}\n\n                <div className={styles.optionBody}>\n                  <div className={styles.optionLabel}>{item.label ?? item.value}</div>\n\n                  {item.description && <div className={styles.optionDescription}>{item.description}</div>}\n                </div>\n              </div>\n            </div>\n          );\n        })}\n      </div>\n\n      <div aria-live=\"polite\">\n        {error && <AsyncError />}\n        {options.length === 0 && !error && <NotFoundError />}\n      </div>\n    </ScrollContainer>\n  );\n};\n","import { Icon } from '../Icon/Icon';\n\ninterface Props {\n  isLoading: boolean;\n  isOpen: boolean;\n}\n\nexport const SuffixIcon = ({ isLoading, isOpen }: Props) => {\n  const suffixIcon = isLoading\n    ? 'spinner'\n    : // If it's loading, show loading icon. Otherwise, icon indicating menu state\n      isOpen\n      ? 'search'\n      : 'angle-down';\n\n  return <Icon name={suffixIcon} />;\n};\n","import { fuzzySearch } from '@grafana/data';\n\nimport { ComboboxOption } from './types';\n\nexport function itemToString<T extends string | number>(item?: ComboboxOption<T> | null) {\n  if (item == null) {\n    return '';\n  }\n  return item.label ?? item.value.toString();\n}\n\nexport function fuzzyFind<T extends string | number>(\n  options: Array<ComboboxOption<T>>,\n  haystack: string[],\n  needle: string\n) {\n  const indices = fuzzySearch(haystack, needle);\n  return indices.map((idx) => options[idx]);\n}\n","import { autoUpdate, autoPlacement, size, useFloating } from '@floating-ui/react';\nimport { useMemo, useRef, useState } from 'react';\n\nimport { measureText } from '../../utils/measureText';\n\nimport {\n  MENU_ITEM_FONT_SIZE,\n  MENU_ITEM_FONT_WEIGHT,\n  MENU_ITEM_PADDING,\n  MENU_OPTION_HEIGHT,\n  POPOVER_MAX_HEIGHT,\n} from './getComboboxStyles';\nimport { ComboboxOption } from './types';\n\n// Only consider the first n items when calculating the width of the popover.\nconst WIDTH_CALCULATION_LIMIT_ITEMS = 100_000;\n\n// Clearance around the popover to prevent it from being too close to the edge of the viewport\nconst POPOVER_PADDING = 16;\n\nconst SCROLL_CONTAINER_PADDING = 8;\n\nexport const useComboboxFloat = (items: Array<ComboboxOption<string | number>>, isOpen: boolean) => {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const floatingRef = useRef<HTMLDivElement>(null);\n  const scrollRef = useRef<HTMLDivElement>(null);\n  const [popoverMaxSize, setPopoverMaxSize] = useState<{ width: number; height: number }>({\n    width: 0,\n    height: 0,\n  }); // set initial values to prevent infinite size, briefly removing the list virtualization\n\n  const scrollbarWidth = useMemo(() => getScrollbarWidth(), []);\n\n  // the order of middleware is important!\n  const middleware = [\n    autoPlacement({\n      // see https://floating-ui.com/docs/autoplacement\n      allowedPlacements: ['bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      boundary: document.body,\n      crossAxis: true,\n    }),\n    size({\n      apply({ availableWidth, availableHeight }) {\n        const preferredMaxWidth = availableWidth - POPOVER_PADDING;\n        const preferredMaxHeight = availableHeight - POPOVER_PADDING;\n\n        const width = Math.max(preferredMaxWidth, 0);\n        const height = Math.min(Math.max(preferredMaxHeight, MENU_OPTION_HEIGHT * 6), POPOVER_MAX_HEIGHT);\n\n        setPopoverMaxSize({ width, height });\n      },\n    }),\n  ];\n  const elements = { reference: inputRef.current, floating: floatingRef.current };\n  const { floatingStyles } = useFloating({\n    strategy: 'fixed',\n    open: isOpen,\n    placement: 'bottom-start',\n    middleware,\n    elements,\n    whileElementsMounted: autoUpdate,\n  });\n\n  const longestItemWidth = useMemo(() => {\n    let longestItem = '';\n    const itemsToLookAt = Math.min(items.length, WIDTH_CALCULATION_LIMIT_ITEMS);\n\n    for (let i = 0; i < itemsToLookAt; i++) {\n      const itemLabel = items[i].label ?? items[i].value.toString();\n      longestItem = itemLabel.length > longestItem.length ? itemLabel : longestItem;\n    }\n\n    const size = measureText(longestItem, MENU_ITEM_FONT_SIZE, MENU_ITEM_FONT_WEIGHT).width;\n\n    return size + SCROLL_CONTAINER_PADDING + MENU_ITEM_PADDING * 2 + scrollbarWidth;\n  }, [items, scrollbarWidth]);\n\n  const floatStyles = {\n    ...floatingStyles,\n    width: longestItemWidth,\n    maxWidth: popoverMaxSize.width,\n    minWidth: inputRef.current?.offsetWidth,\n\n    maxHeight: popoverMaxSize.height,\n  };\n\n  return { inputRef, floatingRef, scrollRef, floatStyles };\n};\n\n// Creates a temporary div with a scrolling inner div to calculate the width of the scrollbar\nfunction getScrollbarWidth(): number {\n  const outer = document.createElement('div');\n  outer.style.visibility = 'hidden';\n  outer.style.overflow = 'scroll';\n  document.body.appendChild(outer);\n\n  const inner = document.createElement('div');\n  outer.appendChild(inner);\n\n  const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n\n  outer.parentNode?.removeChild(outer);\n\n  return scrollbarWidth;\n}\n","import { useCallback, useRef } from 'react';\n\ntype AsyncFn<T, V> = (value: T) => Promise<V>;\n\n/**\n * Wraps an async function to ensure that only the latest call is resolved.\n * Used to prevent a faster call being overwritten by an earlier slower call.\n */\nexport function useLatestAsyncCall<T, V>(fn: AsyncFn<T, V>): AsyncFn<T, V> {\n  const latestValueCount = useRef<number>(0);\n\n  const wrappedFn = useCallback(\n    (value: T) => {\n      latestValueCount.current++;\n      const requestCount = latestValueCount.current;\n\n      return new Promise<V>((resolve, reject) => {\n        fn(value)\n          .then((result) => {\n            // Only resolve if the value is still the latest\n            if (requestCount === latestValueCount.current) {\n              resolve(result);\n            } else {\n              reject(new StaleResultError());\n            }\n          })\n          .catch(reject);\n      });\n    },\n    [fn]\n  );\n\n  return wrappedFn;\n}\n\nexport class StaleResultError extends Error {\n  constructor() {\n    super('This result is stale and is discarded');\n    this.name = 'StaleResultError';\n    Object.setPrototypeOf(this, new.target.prototype); // Necessary for instanceof to work correctly\n  }\n}\n","/* Spreading unbound arrays can be very slow or even crash the browser if used for arguments */\n/* eslint no-restricted-syntax: [\"error\", \"SpreadElement\"] */\n\nimport { debounce } from 'lodash';\nimport { useState, useCallback, useMemo } from 'react';\n\nimport { t } from '@grafana/i18n';\n\nimport { fuzzyFind, itemToString } from './filter';\nimport { ComboboxOption } from './types';\nimport { StaleResultError, useLatestAsyncCall } from './useLatestAsyncCall';\n\ntype AsyncOptions<T extends string | number> =\n  | Array<ComboboxOption<T>>\n  | ((inputValue: string) => Promise<Array<ComboboxOption<T>>>);\n\nconst asyncNoop = () => Promise.resolve([]);\n\n/**\n * Abstracts away sync/async options for combobox components.\n * It also filters options based on the user's input.\n *\n * Returns:\n *  - options either filtered by user's input, or from async options fn\n *  - function to call when user types (to filter, or call async fn)\n *  - loading and error states\n */\nexport function useOptions<T extends string | number>(rawOptions: AsyncOptions<T>, createCustomValue: boolean) {\n  const isAsync = typeof rawOptions === 'function';\n\n  const loadOptions = useLatestAsyncCall(isAsync ? rawOptions : asyncNoop);\n\n  const debouncedLoadOptions = useMemo(\n    () =>\n      debounce((searchTerm: string) => {\n        return loadOptions(searchTerm)\n          .then((options) => {\n            setAsyncOptions(options);\n            setAsyncLoading(false);\n            setAsyncError(false);\n          })\n          .catch((error) => {\n            if (!(error instanceof StaleResultError)) {\n              setAsyncError(true);\n              setAsyncLoading(false);\n\n              if (error) {\n                console.error('Error loading async options for Combobox', error);\n              }\n            }\n          });\n      }, 200),\n    [loadOptions]\n  );\n\n  const [asyncOptions, setAsyncOptions] = useState<Array<ComboboxOption<T>>>([]);\n  const [asyncLoading, setAsyncLoading] = useState(false);\n  const [asyncError, setAsyncError] = useState(false);\n\n  // This hook keeps its own inputValue state (rather than accepting it as an arg) because it needs to be\n  // told it for async options loading anyway.\n  const [userTypedSearch, setUserTypedSearch] = useState('');\n\n  const addCustomValue = useCallback(\n    (opts: Array<ComboboxOption<T>>) => {\n      let currentOptions: Array<ComboboxOption<T>> = opts;\n      if (createCustomValue && userTypedSearch) {\n        // Since the label of a normal option does not have to match its value and a custom option has the same value and label,\n        // we just focus on the value to check if the option already exists\n        const customValueExists = opts.some((opt) => opt.value === userTypedSearch);\n        if (!customValueExists) {\n          // Make sure to clone the array first to avoid mutating the original array!\n          currentOptions = currentOptions.slice();\n          currentOptions.unshift({\n            label: userTypedSearch,\n            value: userTypedSearch as T,\n            description: t('combobox.custom-value.description', 'Use custom value'),\n          });\n        }\n      }\n      return currentOptions;\n    },\n    [createCustomValue, userTypedSearch]\n  );\n\n  const updateOptions = useCallback(\n    (inputValue: string) => {\n      setUserTypedSearch(inputValue);\n      if (isAsync) {\n        setAsyncLoading(true);\n        debouncedLoadOptions(inputValue);\n      }\n    },\n    [debouncedLoadOptions, isAsync]\n  );\n\n  const stringifiedOptions = useMemo(() => {\n    return isAsync ? [] : rawOptions.map(itemToString);\n  }, [isAsync, rawOptions]);\n\n  // Create a list of options filtered by the current search.\n  // If async, just returns the async options.\n  const filteredOptions = useMemo(() => {\n    if (isAsync) {\n      return asyncOptions;\n    }\n\n    return fuzzyFind(rawOptions, stringifiedOptions, userTypedSearch);\n  }, [asyncOptions, isAsync, rawOptions, stringifiedOptions, userTypedSearch]);\n\n  const [finalOptions, groupStartIndices] = useMemo(() => {\n    const { options, groupStartIndices } = sortByGroup(filteredOptions);\n\n    return [addCustomValue(options), groupStartIndices];\n  }, [filteredOptions, addCustomValue]);\n\n  return { options: finalOptions, groupStartIndices, updateOptions, asyncLoading, asyncError };\n}\n\n/**\n * Sorts options by group and returns the sorted options and the starting index of each group\n */\nexport function sortByGroup<T extends string | number>(options: Array<ComboboxOption<T>>) {\n  // Group options by their group\n  const groupedOptions = new Map<string | undefined, Array<ComboboxOption<T>>>();\n  const groupStartIndices = new Map<string | undefined, number>();\n\n  for (const option of options) {\n    const group = option.group;\n    const existing = groupedOptions.get(group);\n    if (existing) {\n      existing.push(option);\n    } else {\n      groupedOptions.set(group, [option]);\n    }\n  }\n\n  // If we only have one group (either the undefined group, or a single group), return the original array\n  if (groupedOptions.size <= 1) {\n    if (options[0]?.group) {\n      groupStartIndices.set(options[0]?.group, 0);\n    }\n\n    return {\n      options,\n      groupStartIndices,\n    };\n  }\n\n  // 'Preallocate' result array with same size as input - very minor optimization\n  const result: Array<ComboboxOption<T>> = new Array(options.length);\n\n  let currentIndex = 0;\n\n  // Fill result array with grouped and undefined grouped options\n  for (const [group, groupOptions] of groupedOptions) {\n    if (group) {\n      groupStartIndices.set(group, currentIndex);\n    }\n    for (const option of groupOptions) {\n      result[currentIndex++] = option;\n    }\n  }\n\n  return {\n    options: result,\n    groupStartIndices,\n  };\n}\n","import { cx } from '@emotion/css';\nimport { useVirtualizer, type Range } from '@tanstack/react-virtual';\nimport { useCombobox } from 'downshift';\nimport React, { useCallback, useId, useMemo } from 'react';\n\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\nimport { AutoSizeInput } from '../Input/AutoSizeInput';\nimport { Input, Props as InputProps } from '../Input/Input';\nimport { Portal } from '../Portal/Portal';\n\nimport { ComboboxList } from './ComboboxList';\nimport { SuffixIcon } from './SuffixIcon';\nimport { itemToString } from './filter';\nimport { getComboboxStyles, MENU_OPTION_HEIGHT, MENU_OPTION_HEIGHT_DESCRIPTION } from './getComboboxStyles';\nimport { ComboboxOption } from './types';\nimport { useComboboxFloat } from './useComboboxFloat';\nimport { useOptions } from './useOptions';\nimport { isNewGroup } from './utils';\n\n// TODO: It would be great if ComboboxOption[\"label\"] was more generic so that if consumers do pass it in (for async),\n// then the onChange handler emits ComboboxOption with the label as non-undefined.\n\ninterface ComboboxStaticProps<T extends string | number>\n  extends Pick<\n    InputProps,\n    'placeholder' | 'autoFocus' | 'id' | 'aria-labelledby' | 'disabled' | 'loading' | 'invalid'\n  > {\n  /**\n   * Allows the user to set a value which is not in the list of options.\n   */\n  createCustomValue?: boolean;\n  /**\n   * Custom container for rendering the dropdown menu via Portal\n   */\n  portalContainer?: HTMLElement;\n\n  /**\n   * An array of options, or a function that returns a promise resolving to an array of options.\n   * If a function, it will be called when the menu is opened and on keypress with the current search query.\n   */\n  options: Array<ComboboxOption<T>> | ((inputValue: string) => Promise<Array<ComboboxOption<T>>>);\n\n  /**\n   * Current selected value. Most consumers should pass a scalar value (string | number). However, sometimes with Async\n   * it may be better to pass in an Option with a label to display.\n   */\n  value?: T | ComboboxOption<T> | null;\n\n  /**\n   * Defaults to full width of container. Number is a multiple of the spacing unit. 'auto' will size the input to the content.\n   * */\n  width?: number | 'auto';\n\n  ['data-testid']?: string;\n\n  /**\n   * Called when the input loses focus.\n   */\n  onBlur?: () => void;\n}\n\ninterface ClearableProps<T extends string | number> {\n  /**\n   * An `X` appears in the UI, which clears the input and sets the value to `null`. Do not use if you have no `null` case.\n   */\n  isClearable: true;\n\n  /**\n   * onChange handler is called with the newly selected option.\n   */\n  onChange: (option: ComboboxOption<T> | null) => void;\n}\n\ninterface NotClearableProps<T extends string | number> {\n  /**\n   * An `X` appears in the UI, which clears the input and sets the value to `null`. Do not use if you have no `null` case.\n   */\n  isClearable?: false;\n\n  /**\n   * onChange handler is called with the newly selected option.\n   */\n  onChange: (option: ComboboxOption<T>) => void;\n}\n\nexport type ComboboxBaseProps<T extends string | number> = (ClearableProps<T> | NotClearableProps<T>) &\n  ComboboxStaticProps<T>;\n\nexport type AutoSizeConditionals =\n  | {\n      width: 'auto';\n      /**\n       * Needs to be set when width is 'auto' to prevent the input from shrinking too much\n       */\n      minWidth: number;\n      /**\n       * Recommended to set when width is 'auto' to prevent the input from growing too much.\n       */\n      maxWidth?: number;\n    }\n  | {\n      width?: number;\n      minWidth?: never;\n      maxWidth?: never;\n    };\n\nexport type ComboboxProps<T extends string | number> = ComboboxBaseProps<T> & AutoSizeConditionals;\n\nconst noop = () => {};\n\nexport const VIRTUAL_OVERSCAN_ITEMS = 4;\n\n/**\n * A performant Select replacement.\n *\n * @alpha\n */\nexport const Combobox = <T extends string | number>(props: ComboboxProps<T>) => {\n  const {\n    options: allOptions,\n    onChange,\n    value: valueProp,\n    placeholder: placeholderProp,\n    isClearable, // this should be default false, but TS can't infer the conditional type if you do\n    createCustomValue = false,\n    id,\n    width,\n    minWidth,\n    maxWidth,\n    'aria-labelledby': ariaLabelledBy,\n    'data-testid': dataTestId,\n    autoFocus,\n    onBlur,\n    disabled,\n    portalContainer,\n    invalid,\n  } = props;\n\n  // Value can be an actual scalar Value (string or number), or an Option (value + label), so\n  // get a consistent Value from it\n  const value = typeof valueProp === 'object' ? valueProp?.value : valueProp;\n  const baseId = useId().replace(/:/g, '--');\n\n  const {\n    options: filteredOptions,\n    groupStartIndices,\n    updateOptions,\n    asyncLoading,\n    asyncError,\n  } = useOptions(props.options, createCustomValue);\n  const isAsync = typeof allOptions === 'function';\n\n  const selectedItemIndex = useMemo(() => {\n    if (isAsync) {\n      return null;\n    }\n\n    if (valueProp === undefined || valueProp === null) {\n      return null;\n    }\n\n    const index = allOptions.findIndex((option) => option.value === value);\n    if (index === -1) {\n      return null;\n    }\n\n    return index;\n  }, [valueProp, allOptions, value, isAsync]);\n\n  const selectedItem = useMemo(() => {\n    if (valueProp === undefined || valueProp === null) {\n      return null;\n    }\n\n    if (selectedItemIndex !== null && !isAsync) {\n      return allOptions[selectedItemIndex];\n    }\n\n    return typeof valueProp === 'object' ? valueProp : { value: valueProp, label: valueProp.toString() };\n  }, [selectedItemIndex, isAsync, valueProp, allOptions]);\n\n  const menuId = `${baseId}-downshift-menu`;\n  const labelId = `${baseId}-downshift-label`;\n\n  const styles = useStyles2(getComboboxStyles);\n\n  // Injects the group header for the first rendered item into the range to render.\n  // Accepts the range that useVirtualizer wants to render, and then returns indexes\n  // to actually render.\n  const rangeExtractor = useCallback(\n    (range: Range) => {\n      const startIndex = Math.max(0, range.startIndex - range.overscan);\n      const endIndex = Math.min(filteredOptions.length - 1, range.endIndex + range.overscan);\n      const rangeToReturn = Array.from({ length: endIndex - startIndex + 1 }, (_, i) => startIndex + i);\n\n      // If the first item doesn't have a group, no need to find a header for it\n      const firstDisplayedOption = filteredOptions[rangeToReturn[0]];\n      if (firstDisplayedOption?.group) {\n        const groupStartIndex = groupStartIndices.get(firstDisplayedOption.group);\n        if (groupStartIndex !== undefined && groupStartIndex < rangeToReturn[0]) {\n          rangeToReturn.unshift(groupStartIndex);\n        }\n      }\n\n      return rangeToReturn;\n    },\n    [filteredOptions, groupStartIndices]\n  );\n\n  const rowVirtualizer = useVirtualizer({\n    count: filteredOptions.length,\n    getScrollElement: () => scrollRef.current,\n    estimateSize: (index: number) => {\n      const firstGroupItem = isNewGroup(filteredOptions[index], index > 0 ? filteredOptions[index - 1] : undefined);\n      const hasDescription = 'description' in filteredOptions[index];\n      const hasGroup = 'group' in filteredOptions[index];\n\n      let itemHeight = MENU_OPTION_HEIGHT;\n      if (hasDescription) {\n        itemHeight = MENU_OPTION_HEIGHT_DESCRIPTION;\n      }\n      if (firstGroupItem && hasGroup) {\n        itemHeight += MENU_OPTION_HEIGHT;\n      }\n      return itemHeight;\n    },\n    overscan: VIRTUAL_OVERSCAN_ITEMS,\n    rangeExtractor,\n  });\n\n  const {\n    isOpen,\n    highlightedIndex,\n\n    getInputProps,\n    getMenuProps,\n    getItemProps,\n\n    selectItem,\n  } = useCombobox({\n    menuId,\n    labelId,\n    inputId: id,\n    items: filteredOptions,\n    itemToString,\n    selectedItem,\n\n    // Don't change downshift state in the onBlahChange handlers. Instead, use the stateReducer to make changes.\n    // Downshift calls change handlers on the render after so you can get sync/flickering issues if you change its state\n    // in them.\n    // Instead, stateReducer is called in the same tick as state changes, before that state is committed and rendered.\n\n    onSelectedItemChange: ({ selectedItem }) => {\n      // `selectedItem` type is `ComboboxOption<T> | null`\n      // It can be null when `selectItem()` is called with null, and we never do that unless `isClearable` is true.\n      // So, when `isClearable` is false, `selectedItem` is always non-null. However, the types don't reflect that,\n      // which is why the conditions are needed.\n      //\n      // this is an else if because TS can't infer the correct onChange types from\n      // (isClearable || selectedItem !== null)\n      if (isClearable) {\n        // onChange argument type allows null\n        onChange(selectedItem);\n      } else if (selectedItem !== null) {\n        // onChange argument type *does not* allow null\n        onChange(selectedItem);\n      }\n    },\n\n    defaultHighlightedIndex: selectedItemIndex ?? 0,\n\n    scrollIntoView: () => {},\n\n    onIsOpenChange: ({ isOpen, inputValue }) => {\n      if (isOpen && inputValue === '') {\n        updateOptions(inputValue);\n      }\n    },\n\n    onHighlightedIndexChange: ({ highlightedIndex, type }) => {\n      if (type !== useCombobox.stateChangeTypes.MenuMouseLeave) {\n        rowVirtualizer.scrollToIndex(highlightedIndex);\n      }\n    },\n    onStateChange: ({ inputValue: newInputValue, type, selectedItem: newSelectedItem }) => {\n      switch (type) {\n        case useCombobox.stateChangeTypes.InputChange:\n          updateOptions(newInputValue ?? '');\n\n          break;\n        default:\n          break;\n      }\n    },\n    stateReducer(state, actionAndChanges) {\n      let { changes } = actionAndChanges;\n      const menuBeingOpened = state.isOpen === false && changes.isOpen === true;\n      const menuBeingClosed = state.isOpen === true && changes.isOpen === false;\n\n      // Reset the input value when the menu is opened. If the menu is opened due to an input change\n      // then make sure we keep that.\n      // This will trigger onInputValueChange to load async options\n      if (menuBeingOpened && changes.inputValue === state.inputValue) {\n        changes = {\n          ...changes,\n          inputValue: '',\n        };\n      }\n\n      if (menuBeingClosed) {\n        // Flush the selected item to the input when the menu is closed\n        if (changes.selectedItem) {\n          changes = {\n            ...changes,\n            inputValue: itemToString(changes.selectedItem),\n          };\n        } else if (changes.inputValue !== '') {\n          // Otherwise if no selected value, clear any search from the input\n          changes = {\n            ...changes,\n            inputValue: '',\n          };\n        }\n      }\n\n      return changes;\n    },\n  });\n\n  const { inputRef, floatingRef, floatStyles, scrollRef } = useComboboxFloat(filteredOptions, isOpen);\n\n  const isAutoSize = width === 'auto';\n  const InputComponent = isAutoSize ? AutoSizeInput : Input;\n  const placeholder = (isOpen ? itemToString(selectedItem) : null) || placeholderProp;\n\n  const loading = props.loading || asyncLoading;\n\n  const inputSuffix = (\n    <>\n      {value !== undefined && value === selectedItem?.value && isClearable && (\n        <Icon\n          name=\"times\"\n          className={styles.clear}\n          title={t('combobox.clear.title', 'Clear value')}\n          tabIndex={0}\n          role=\"button\"\n          onClick={() => {\n            selectItem(null);\n          }}\n          onKeyDown={(e) => {\n            if (e.key === 'Enter' || e.key === ' ') {\n              selectItem(null);\n            }\n          }}\n        />\n      )}\n\n      <SuffixIcon isLoading={loading || false} isOpen={isOpen} />\n    </>\n  );\n\n  const { Wrapper, wrapperProps } = isAutoSize\n    ? {\n        Wrapper: 'div',\n        wrapperProps: { className: styles.adaptToParent },\n      }\n    : { Wrapper: React.Fragment };\n\n  return (\n    <Wrapper {...wrapperProps}>\n      <InputComponent\n        width={isAutoSize ? undefined : width}\n        {...(isAutoSize ? { minWidth, maxWidth } : {})}\n        autoFocus={autoFocus}\n        onBlur={onBlur}\n        disabled={disabled}\n        invalid={invalid}\n        className={styles.input}\n        suffix={inputSuffix}\n        {...getInputProps({\n          ref: inputRef,\n          onChange: noop, // Empty onCall to avoid TS error https://github.com/downshift-js/downshift/issues/718\n          'aria-labelledby': ariaLabelledBy, // Label should be handled with the Field component\n          placeholder,\n          'data-testid': dataTestId,\n        })}\n      />\n      <Portal root={portalContainer}>\n        <div\n          className={cx(styles.menu, !isOpen && styles.menuClosed)}\n          style={{\n            ...floatStyles,\n            pointerEvents: 'auto', // Override container's pointer-events: none\n          }}\n          {...getMenuProps({\n            ref: floatingRef,\n            'aria-labelledby': ariaLabelledBy,\n          })}\n        >\n          {isOpen && (\n            <ComboboxList\n              options={filteredOptions}\n              highlightedIndex={highlightedIndex}\n              selectedItems={selectedItem ? [selectedItem] : []}\n              scrollRef={scrollRef}\n              getItemProps={getItemProps}\n              error={asyncError}\n            />\n          )}\n        </div>\n      </Portal>\n    </Wrapper>\n  );\n};\n","import { css } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\n\ninterface Props {\n  label: string | undefined;\n  children?: React.ReactNode;\n}\n\nexport const TimeZoneGroup = (props: Props) => {\n  const { children, label } = props;\n  const styles = useStyles2(getStyles);\n\n  if (!label) {\n    return <div>{children}</div>;\n  }\n\n  return (\n    <div>\n      <div className={styles.header}>\n        <span className={styles.label}>{label}</span>\n      </div>\n      {children}\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    header: css({\n      padding: '7px 10px',\n      width: '100%',\n      borderTop: `1px solid ${theme.colors.border.weak}`,\n      textTransform: 'capitalize',\n    }),\n    label: css({\n      fontSize: theme.typography.size.sm,\n      color: theme.colors.text.secondary,\n      fontWeight: theme.typography.fontWeightMedium,\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { isString } from 'lodash';\n\nimport { GrafanaTheme2, TimeZone, dateTimeFormat } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\n\ninterface Props {\n  timestamp: number;\n  timeZone: TimeZone | undefined;\n  className?: string;\n}\n\nexport const TimeZoneOffset = (props: Props) => {\n  const { timestamp, timeZone, className } = props;\n  const styles = useStyles2(getStyles);\n\n  if (!isString(timeZone)) {\n    return null;\n  }\n\n  return (\n    <>\n      <span className={cx(styles.offset, className)}>{formatUtcOffset(timestamp, timeZone)}</span>\n    </>\n  );\n};\n\nexport const formatUtcOffset = (timestamp: number, timeZone: TimeZone): string => {\n  const offset = dateTimeFormat(timestamp, {\n    timeZone,\n    format: 'Z',\n  });\n\n  return `UTC${offset}`;\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const textBase = css({\n    fontWeight: 'normal',\n    fontSize: theme.typography.size.sm,\n    color: theme.colors.text.secondary,\n    whiteSpace: 'normal',\n  });\n\n  return {\n    offset: css(textBase, {\n      color: theme.colors.text.primary,\n      background: theme.colors.background.secondary,\n      padding: '2px 5px',\n      borderRadius: theme.shape.radius.default,\n      marginLeft: '4px',\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport { useMemo } from 'react';\n\nimport { GrafanaTheme2, TimeZoneInfo } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\n\ninterface Props {\n  info?: TimeZoneInfo;\n}\n\nexport const TimeZoneDescription = ({ info }: Props) => {\n  const styles = useStyles2(getStyles);\n  const description = useDescription(info);\n\n  if (!info) {\n    return null;\n  }\n\n  return <div className={styles.description}>{description}</div>;\n};\n\nconst useDescription = (info?: TimeZoneInfo): string => {\n  return useMemo(() => {\n    const parts: string[] = [];\n\n    if (!info) {\n      return '';\n    }\n\n    if (info.name === 'Europe/Simferopol') {\n      // See https://github.com/grafana/grafana/issues/72031\n      return 'Ukraine, EEST';\n    }\n\n    if (info.countries.length > 0) {\n      const country = info.countries[0];\n      parts.push(country.name);\n    }\n\n    if (info.abbreviation) {\n      parts.push(info.abbreviation);\n    }\n\n    return parts.join(', ');\n  }, [info]);\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    description: css({\n      fontWeight: 'normal',\n      fontSize: theme.typography.size.sm,\n      color: theme.colors.text.secondary,\n      whiteSpace: 'normal',\n      textOverflow: 'ellipsis',\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport { ReactNode } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\n\ninterface Props {\n  title: string | ReactNode;\n}\n\nexport const TimeZoneTitle = ({ title }: Props) => {\n  const styles = useStyles2(getStyles);\n\n  if (!title) {\n    return null;\n  }\n\n  return <span className={styles.title}>{title}</span>;\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    title: css({\n      fontWeight: theme.typography.fontWeightRegular,\n      textOverflow: 'ellipsis',\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { isString } from 'lodash';\nimport { PropsWithChildren, RefCallback } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, SelectableValue, getTimeZoneInfo } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { Icon } from '../../Icon/Icon';\n\nimport { TimeZoneDescription } from './TimeZoneDescription';\nimport { TimeZoneOffset } from './TimeZoneOffset';\nimport { TimeZoneTitle } from './TimeZoneTitle';\n\ninterface Props {\n  isFocused: boolean;\n  isSelected: boolean;\n  innerProps: JSX.IntrinsicElements['div'];\n  innerRef: RefCallback<HTMLDivElement>;\n  data: SelectableZone;\n}\n\nconst offsetClassName = 'tz-utc-offset';\n\nexport interface SelectableZone extends SelectableValue<string> {\n  searchIndex: string;\n}\n\nexport const WideTimeZoneOption = (props: PropsWithChildren<Props>) => {\n  const { children, innerProps, innerRef, data, isSelected, isFocused } = props;\n  const styles = useStyles2(getStyles);\n  const timestamp = Date.now();\n  const containerStyles = cx(styles.container, isFocused && styles.containerFocused);\n\n  if (!isString(data.value)) {\n    return null;\n  }\n\n  const timeZoneInfo = getTimeZoneInfo(data.value, timestamp);\n\n  return (\n    <div className={containerStyles} {...innerProps} ref={innerRef} data-testid={selectors.components.Select.option}>\n      <div className={cx(styles.leftColumn, styles.row)}>\n        <div className={cx(styles.leftColumn, styles.wideRow)}>\n          <TimeZoneTitle title={children} />\n          <div className={styles.spacer} />\n          <TimeZoneDescription info={timeZoneInfo} />\n        </div>\n        <div className={styles.rightColumn}>\n          <TimeZoneOffset\n            /* Use the timeZoneInfo to pass the correct timeZone name,\n               as 'Default' has value '' which defaults to browser timezone */\n            timeZone={timeZoneInfo?.ianaName || data.value}\n            timestamp={timestamp}\n            className={offsetClassName}\n          />\n          {isSelected && (\n            <span>\n              <Icon name=\"check\" />\n            </span>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport const CompactTimeZoneOption = (props: React.PropsWithChildren<Props>) => {\n  const { children, innerProps, innerRef, data, isSelected, isFocused } = props;\n  const styles = useStyles2(getStyles);\n  const timestamp = Date.now();\n  const containerStyles = cx(styles.container, isFocused && styles.containerFocused);\n\n  if (!isString(data.value)) {\n    return null;\n  }\n\n  const timeZoneInfo = getTimeZoneInfo(data.value, timestamp);\n\n  return (\n    <div className={containerStyles} {...innerProps} ref={innerRef} data-testid={selectors.components.Select.option}>\n      <div className={styles.body}>\n        <div className={styles.row}>\n          <div className={styles.leftColumn}>\n            <TimeZoneTitle title={children} />\n          </div>\n          <div className={styles.rightColumn}>\n            {isSelected && (\n              <span>\n                <Icon name=\"check\" />\n              </span>\n            )}\n          </div>\n        </div>\n        <div className={styles.row}>\n          <div className={styles.leftColumn}>\n            <TimeZoneDescription info={timeZoneInfo} />\n          </div>\n          <div className={styles.rightColumn}>\n            <TimeZoneOffset\n              timestamp={timestamp}\n              /* Use the timeZoneInfo to pass the correct timeZone name,\n                 as 'Default' has value '' which defaults to browser timezone */\n              timeZone={timeZoneInfo?.ianaName || data.value}\n              className={offsetClassName}\n            />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  container: css({\n    display: 'flex',\n    alignItems: 'center',\n    flexDirection: 'row',\n    flexShrink: 0,\n    whiteSpace: 'nowrap',\n    cursor: 'pointer',\n    padding: '6px 8px 4px',\n\n    '&:hover': {\n      background: theme.colors.action.hover,\n    },\n  }),\n  containerFocused: css({\n    background: theme.colors.action.hover,\n  }),\n  body: css({\n    display: 'flex',\n    fontWeight: theme.typography.fontWeightMedium,\n    flexDirection: 'column',\n    flexGrow: 1,\n  }),\n  row: css({\n    display: 'flex',\n    flexDirection: 'row',\n  }),\n  leftColumn: css({\n    flexGrow: 1,\n    textOverflow: 'ellipsis',\n  }),\n  rightColumn: css({\n    justifyContent: 'flex-end',\n    alignItems: 'center',\n  }),\n  wideRow: css({\n    display: 'flex',\n    flexDirection: 'row',\n    alignItems: 'baseline',\n  }),\n  spacer: css({\n    marginLeft: '6px',\n  }),\n});\n","import { toLower, isEmpty, isString } from 'lodash';\nimport { useMemo, useCallback } from 'react';\n\nimport {\n  SelectableValue,\n  getTimeZoneInfo,\n  TimeZoneInfo,\n  getTimeZoneGroups,\n  GroupedTimeZones,\n  TimeZone,\n  InternalTimeZones,\n} from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { Select } from '../Select/Select';\n\nimport { TimeZoneGroup } from './TimeZonePicker/TimeZoneGroup';\nimport { formatUtcOffset } from './TimeZonePicker/TimeZoneOffset';\nimport { CompactTimeZoneOption, WideTimeZoneOption, SelectableZone } from './TimeZonePicker/TimeZoneOption';\n\nexport interface Props {\n  onChange: (timeZone?: TimeZone) => void;\n  value?: TimeZone;\n  width?: number;\n  autoFocus?: boolean;\n  onBlur?: () => void;\n  includeInternal?: boolean | InternalTimeZones[];\n  disabled?: boolean;\n  inputId?: string;\n  menuShouldPortal?: boolean;\n  openMenuOnFocus?: boolean;\n}\n\nexport const TimeZonePicker = (props: Props) => {\n  const {\n    onChange,\n    width,\n    autoFocus = false,\n    onBlur,\n    value,\n    includeInternal = false,\n    disabled = false,\n    inputId,\n    menuShouldPortal = true,\n    openMenuOnFocus = true,\n  } = props;\n  const groupedTimeZones = useTimeZones(includeInternal);\n  const selected = useSelectedTimeZone(groupedTimeZones, value);\n  const filterBySearchIndex = useFilterBySearchIndex();\n  const TimeZoneOption = width && width <= 45 ? CompactTimeZoneOption : WideTimeZoneOption;\n\n  const onChangeTz = useCallback(\n    (selectable: SelectableValue<string>) => {\n      if (!selectable || !isString(selectable.value)) {\n        return onChange(value);\n      }\n      onChange(selectable.value);\n    },\n    [onChange, value]\n  );\n\n  return (\n    <Select\n      inputId={inputId}\n      value={selected}\n      placeholder={t('time-picker.zone.select-search-input', 'Type to search (country, city, abbreviation)')}\n      autoFocus={autoFocus}\n      menuShouldPortal={menuShouldPortal}\n      openMenuOnFocus={openMenuOnFocus}\n      width={width}\n      filterOption={filterBySearchIndex}\n      options={groupedTimeZones}\n      onChange={onChangeTz}\n      onBlur={onBlur}\n      components={{ Option: TimeZoneOption, Group: TimeZoneGroup }}\n      disabled={disabled}\n      aria-label={t('time-picker.zone.select-aria-label', 'Time zone picker')}\n    />\n  );\n};\n\ninterface SelectableZoneGroup extends SelectableValue<string> {\n  options: SelectableZone[];\n}\n\nconst useTimeZones = (includeInternal: boolean | InternalTimeZones[]): SelectableZoneGroup[] => {\n  const now = Date.now();\n\n  const timeZoneGroups = useMemo(() => {\n    return getTimeZoneGroups(includeInternal).map((group: GroupedTimeZones) => {\n      const options = group.zones.reduce((options: SelectableZone[], zone) => {\n        const info = getTimeZoneInfo(zone, now);\n\n        if (!info) {\n          return options;\n        }\n\n        const name = info.name.replace(/_/g, ' ');\n\n        options.push({\n          label: name,\n          value: info.zone,\n          searchIndex: getSearchIndex(name, info, now),\n        });\n\n        return options;\n      }, []);\n\n      return {\n        label: group.name,\n        options,\n      };\n    });\n  }, [includeInternal, now]);\n\n  return timeZoneGroups;\n};\n\nconst useSelectedTimeZone = (\n  groups: SelectableZoneGroup[],\n  timeZone: TimeZone | undefined\n): SelectableZone | undefined => {\n  return useMemo(() => {\n    if (timeZone === undefined) {\n      return undefined;\n    }\n\n    const tz = toLower(timeZone);\n\n    const group = groups.find((group) => {\n      if (!group.label) {\n        return isInternal(tz);\n      }\n      return tz.startsWith(toLower(group.label));\n    });\n\n    return group?.options.find((option) => {\n      if (isEmpty(tz)) {\n        return option.value === InternalTimeZones.default;\n      }\n      return toLower(option.value) === tz;\n    });\n  }, [groups, timeZone]);\n};\n\nconst isInternal = (timeZone: TimeZone): boolean => {\n  switch (timeZone) {\n    case InternalTimeZones.default:\n    case InternalTimeZones.localBrowserTime:\n    case InternalTimeZones.utc:\n      return true;\n\n    default:\n      return false;\n  }\n};\n\nconst useFilterBySearchIndex = () => {\n  return useCallback((option: SelectableValue, searchQuery: string) => {\n    if (!searchQuery || !option.data || !option.data.searchIndex) {\n      return true;\n    }\n    return option.data.searchIndex.indexOf(toLower(searchQuery)) > -1;\n  }, []);\n};\n\nconst getSearchIndex = (label: string, info: TimeZoneInfo, timestamp: number): string => {\n  const parts: string[] = [\n    toLower(info.zone),\n    toLower(info.abbreviation),\n    toLower(formatUtcOffset(timestamp, info.zone)),\n  ];\n\n  if (label !== info.zone) {\n    parts.push(toLower(label));\n  }\n\n  for (const country of info.countries) {\n    parts.push(toLower(country.name));\n    parts.push(toLower(country.code));\n  }\n\n  return parts.join('|');\n};\n","import { TimeOption } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { ComboboxOption } from '../Combobox/types';\n\nexport const getQuickOptions: () => TimeOption[] = () => [\n  { from: 'now-5m', to: 'now', display: t('grafana-ui.date-time-pickers.quick-options.last-5-mins', 'Last 5 minutes') },\n  {\n    from: 'now-15m',\n    to: 'now',\n    display: t('grafana-ui.date-time-pickers.quick-options.last-15-mins', 'Last 15 minutes'),\n  },\n  {\n    from: 'now-30m',\n    to: 'now',\n    display: t('grafana-ui.date-time-pickers.quick-options.last-30-mins', 'Last 30 minutes'),\n  },\n  { from: 'now-1h', to: 'now', display: t('grafana-ui.date-time-pickers.quick-options.last-1-hour', 'Last 1 hour') },\n  { from: 'now-3h', to: 'now', display: t('grafana-ui.date-time-pickers.quick-options.last-3-hours', 'Last 3 hours') },\n  { from: 'now-6h', to: 'now', display: t('grafana-ui.date-time-pickers.quick-options.last-6-hours', 'Last 6 hours') },\n  {\n    from: 'now-12h',\n    to: 'now',\n    display: t('grafana-ui.date-time-pickers.quick-options.last-12-hours', 'Last 12 hours'),\n  },\n  {\n    from: 'now-24h',\n    to: 'now',\n    display: t('grafana-ui.date-time-pickers.quick-options.last-24-hours', 'Last 24 hours'),\n  },\n  { from: 'now-2d', to: 'now', display: t('grafana-ui.date-time-pickers.quick-options.last-2-days', 'Last 2 days') },\n  { from: 'now-7d', to: 'now', display: t('grafana-ui.date-time-pickers.quick-options.last-7-days', 'Last 7 days') },\n  { from: 'now-30d', to: 'now', display: t('grafana-ui.date-time-pickers.quick-options.last-30-days', 'Last 30 days') },\n  { from: 'now-90d', to: 'now', display: t('grafana-ui.date-time-pickers.quick-options.last-90-days', 'Last 90 days') },\n  {\n    from: 'now-6M',\n    to: 'now',\n    display: t('grafana-ui.date-time-pickers.quick-options.last-6-months', 'Last 6 months'),\n  },\n  { from: 'now-1y', to: 'now', display: t('grafana-ui.date-time-pickers.quick-options.last-1-year', 'Last 1 year') },\n  { from: 'now-2y', to: 'now', display: t('grafana-ui.date-time-pickers.quick-options.last-2-years', 'Last 2 years') },\n  { from: 'now-5y', to: 'now', display: t('grafana-ui.date-time-pickers.quick-options.last-5-years', 'Last 5 years') },\n  { from: 'now-1d/d', to: 'now-1d/d', display: t('grafana-ui.date-time-pickers.quick-options.yesterday', 'Yesterday') },\n  {\n    from: 'now-2d/d',\n    to: 'now-2d/d',\n    display: t('grafana-ui.date-time-pickers.quick-options.day-before-yesterday', 'Day before yesterday'),\n  },\n  {\n    from: 'now-7d/d',\n    to: 'now-7d/d',\n    display: t('grafana-ui.date-time-pickers.quick-options.this-day-last-week', 'This day last week'),\n  },\n  {\n    from: 'now-1w/w',\n    to: 'now-1w/w',\n    display: t('grafana-ui.date-time-pickers.quick-options.previous-week', 'Previous week'),\n  },\n  {\n    from: 'now-1M/M',\n    to: 'now-1M/M',\n    display: t('grafana-ui.date-time-pickers.quick-options.previous-month', 'Previous month'),\n  },\n  {\n    from: 'now-1Q/fQ',\n    to: 'now-1Q/fQ',\n    display: t('grafana-ui.date-time-pickers.quick-options.previous-fiscal-quarter', 'Previous fiscal quarter'),\n  },\n  {\n    from: 'now-1y/y',\n    to: 'now-1y/y',\n    display: t('grafana-ui.date-time-pickers.quick-options.previous-year', 'Previous year'),\n  },\n  {\n    from: 'now-1y/fy',\n    to: 'now-1y/fy',\n    display: t('grafana-ui.date-time-pickers.quick-options.previous-fiscal-year', 'Previous fiscal year'),\n  },\n  { from: 'now/d', to: 'now/d', display: t('grafana-ui.date-time-pickers.quick-options.today', 'Today') },\n  { from: 'now/d', to: 'now', display: t('grafana-ui.date-time-pickers.quick-options.today-so-far', 'Today so far') },\n  { from: 'now/w', to: 'now/w', display: t('grafana-ui.date-time-pickers.quick-options.this-week', 'This week') },\n  {\n    from: 'now/w',\n    to: 'now',\n    display: t('grafana-ui.date-time-pickers.quick-options.this-week-so-far', 'This week so far'),\n  },\n  { from: 'now/M', to: 'now/M', display: t('grafana-ui.date-time-pickers.quick-options.this-month', 'This month') },\n  {\n    from: 'now/M',\n    to: 'now',\n    display: t('grafana-ui.date-time-pickers.quick-options.this-month-so-far', 'This month so far'),\n  },\n  { from: 'now/y', to: 'now/y', display: t('grafana-ui.date-time-pickers.quick-options.this-year', 'This year') },\n  {\n    from: 'now/y',\n    to: 'now',\n    display: t('grafana-ui.date-time-pickers.quick-options.this-year-so-far', 'This year so far'),\n  },\n  {\n    from: 'now/fQ',\n    to: 'now',\n    display: t('grafana-ui.date-time-pickers.quick-options.this-fiscal-quarter-so-far', 'This fiscal quarter so far'),\n  },\n  {\n    from: 'now/fQ',\n    to: 'now/fQ',\n    display: t('grafana-ui.date-time-pickers.quick-options.this-fiscal-quarter', 'This fiscal quarter'),\n  },\n  {\n    from: 'now/fy',\n    to: 'now',\n    display: t('grafana-ui.date-time-pickers.quick-options.this-fiscal-year-so-far', 'This fiscal year so far'),\n  },\n  {\n    from: 'now/fy',\n    to: 'now/fy',\n    display: t('grafana-ui.date-time-pickers.quick-options.this-fiscal-year', 'This fiscal year'),\n  },\n];\n\nexport const getMonthOptions: () => Array<ComboboxOption<number>> = () => [\n  { label: t('grafana-ui.date-time-pickers.month-options.label-january', 'January'), value: 0 },\n  { label: t('grafana-ui.date-time-pickers.month-options.label-february', 'February'), value: 1 },\n  { label: t('grafana-ui.date-time-pickers.month-options.label-march', 'March'), value: 2 },\n  { label: t('grafana-ui.date-time-pickers.month-options.label-april', 'April'), value: 3 },\n  { label: t('grafana-ui.date-time-pickers.month-options.label-may', 'May'), value: 4 },\n  { label: t('grafana-ui.date-time-pickers.month-options.label-june', 'June'), value: 5 },\n  { label: t('grafana-ui.date-time-pickers.month-options.label-july', 'July'), value: 6 },\n  { label: t('grafana-ui.date-time-pickers.month-options.label-august', 'August'), value: 7 },\n  { label: t('grafana-ui.date-time-pickers.month-options.label-september', 'September'), value: 8 },\n  { label: t('grafana-ui.date-time-pickers.month-options.label-october', 'October'), value: 9 },\n  { label: t('grafana-ui.date-time-pickers.month-options.label-november', 'November'), value: 10 },\n  { label: t('grafana-ui.date-time-pickers.month-options.label-december', 'December'), value: 11 },\n];\n","import { css, cx } from '@emotion/css';\nimport { isString } from 'lodash';\nimport { useCallback, useId, useState } from 'react';\nimport * as React from 'react';\n\nimport { getTimeZoneInfo, GrafanaTheme2, TimeZone } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { Button } from '../../Button/Button';\nimport { Combobox } from '../../Combobox/Combobox';\nimport { Field } from '../../Forms/Field';\nimport { Tab } from '../../Tabs/Tab';\nimport { TabContent } from '../../Tabs/TabContent';\nimport { TabsBar } from '../../Tabs/TabsBar';\nimport { TimeZonePicker } from '../TimeZonePicker';\nimport { TimeZoneDescription } from '../TimeZonePicker/TimeZoneDescription';\nimport { TimeZoneOffset } from '../TimeZonePicker/TimeZoneOffset';\nimport { TimeZoneTitle } from '../TimeZonePicker/TimeZoneTitle';\nimport { getMonthOptions } from '../options';\n\ninterface Props {\n  timeZone?: TimeZone;\n  fiscalYearStartMonth?: number;\n  timestamp?: number;\n  onChangeTimeZone: (timeZone: TimeZone) => void;\n  onChangeFiscalYearStartMonth?: (month: number) => void;\n}\n\nexport const TimePickerFooter = (props: Props) => {\n  const {\n    timeZone,\n    fiscalYearStartMonth,\n    timestamp = Date.now(),\n    onChangeTimeZone,\n    onChangeFiscalYearStartMonth,\n  } = props;\n  const [isEditing, setEditing] = useState(false);\n  const [editMode, setEditMode] = useState('tz');\n\n  const timeSettingsId = useId();\n  const timeZoneSettingsId = useId();\n  const fiscalYearSettingsId = useId();\n\n  const onToggleChangeTimeSettings = useCallback(\n    (event?: React.MouseEvent) => {\n      if (event) {\n        event.stopPropagation();\n      }\n      setEditing(!isEditing);\n    },\n    [isEditing, setEditing]\n  );\n\n  const style = useStyles2(getStyle);\n\n  if (!isString(timeZone)) {\n    return null;\n  }\n\n  const info = getTimeZoneInfo(timeZone, timestamp);\n\n  if (!info) {\n    return null;\n  }\n\n  return (\n    <div>\n      <section\n        aria-label={t('time-picker.footer.time-zone-selection', 'Time zone selection')}\n        className={style.container}\n      >\n        <div className={style.timeZoneContainer}>\n          <div className={style.timeZone}>\n            <TimeZoneTitle title={info.name} />\n            <div className={style.spacer} />\n            <TimeZoneDescription info={info} />\n          </div>\n          <TimeZoneOffset timeZone={timeZone} timestamp={timestamp} />\n        </div>\n        <div className={style.spacer} />\n        <Button\n          data-testid={selectors.components.TimeZonePicker.changeTimeSettingsButton}\n          variant=\"secondary\"\n          onClick={onToggleChangeTimeSettings}\n          size=\"sm\"\n          aria-expanded={isEditing}\n          aria-controls={timeSettingsId}\n          icon={isEditing ? 'angle-up' : 'angle-down'}\n        >\n          <Trans i18nKey=\"time-picker.footer.change-settings-button\">Change time settings</Trans>\n        </Button>\n      </section>\n      {isEditing ? (\n        <div className={style.editContainer} id={timeSettingsId}>\n          <TabsBar>\n            <Tab\n              label={t('time-picker.footer.time-zone-option', 'Time zone')}\n              active={editMode === 'tz'}\n              onChangeTab={() => {\n                setEditMode('tz');\n              }}\n              aria-controls={timeZoneSettingsId}\n            />\n            <Tab\n              label={t('time-picker.footer.fiscal-year-option', 'Fiscal year')}\n              active={editMode === 'fy'}\n              onChangeTab={() => {\n                setEditMode('fy');\n              }}\n              aria-controls={fiscalYearSettingsId}\n            />\n          </TabsBar>\n          <TabContent className={style.noBackground}>\n            {editMode === 'tz' ? (\n              <section\n                role=\"tabpanel\"\n                data-testid={selectors.components.TimeZonePicker.containerV2}\n                id={timeZoneSettingsId}\n                className={cx(style.timeZoneContainer, style.timeSettingContainer)}\n              >\n                <TimeZonePicker\n                  includeInternal={true}\n                  onChange={(timeZone) => {\n                    onToggleChangeTimeSettings();\n\n                    if (isString(timeZone)) {\n                      onChangeTimeZone(timeZone);\n                    }\n                  }}\n                  onBlur={onToggleChangeTimeSettings}\n                  menuShouldPortal={false}\n                />\n              </section>\n            ) : (\n              <section\n                role=\"tabpanel\"\n                data-testid={selectors.components.TimeZonePicker.containerV2}\n                id={fiscalYearSettingsId}\n                className={cx(style.timeZoneContainer, style.timeSettingContainer)}\n              >\n                <Field\n                  className={style.fiscalYearField}\n                  label={t('time-picker.footer.fiscal-year-start', 'Fiscal year start month')}\n                >\n                  <Combobox\n                    value={fiscalYearStartMonth ?? null}\n                    options={getMonthOptions()}\n                    onChange={(value) => {\n                      if (onChangeFiscalYearStartMonth) {\n                        onChangeFiscalYearStartMonth(value?.value ?? 0);\n                      }\n                    }}\n                  />\n                </Field>\n              </section>\n            )}\n          </TabContent>\n        </div>\n      ) : null}\n    </div>\n  );\n};\n\nconst getStyle = (theme: GrafanaTheme2) => ({\n  container: css({\n    borderTop: `1px solid ${theme.colors.border.weak}`,\n    padding: theme.spacing(1.5),\n    display: 'flex',\n    flexDirection: 'row',\n    justifyContent: 'space-between',\n    alignItems: 'center',\n  }),\n  editContainer: css({\n    borderTop: `1px solid ${theme.colors.border.weak}`,\n    padding: theme.spacing(1.5),\n    paddingTop: 0,\n    justifyContent: 'space-between',\n    alignItems: 'center',\n  }),\n  spacer: css({\n    marginLeft: '7px',\n  }),\n  timeSettingContainer: css({\n    paddingTop: theme.spacing(1),\n  }),\n  noBackground: css({\n    background: 'inherit',\n  }),\n  fiscalYearField: css({\n    marginBottom: 0,\n  }),\n  timeZoneContainer: css({\n    display: 'flex',\n    flexDirection: 'row',\n    justifyContent: 'space-between',\n    alignItems: 'center',\n    flexGrow: 1,\n  }),\n  timeZone: css({\n    display: 'flex',\n    flexDirection: 'row',\n    alignItems: 'baseline',\n    flexGrow: 1,\n  }),\n});\n","import { css } from '@emotion/css';\nimport { memo, PropsWithChildren } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    text: css({\n      fontSize: theme.typography.size.md,\n      fontWeight: theme.typography.fontWeightMedium,\n      color: theme.colors.text.primary,\n      margin: 0,\n      display: 'flex',\n    }),\n  };\n};\n\nexport const TimePickerTitle = memo<PropsWithChildren<{}>>(({ children }) => {\n  const styles = useStyles2(getStyles);\n\n  return <h3 className={styles.text}>{children}</h3>;\n});\n\nTimePickerTitle.displayName = 'TimePickerTitle';\n","import { FeatureToggles } from '@grafana/data';\n\ntype FeatureToggleName = keyof FeatureToggles;\n\n/**\n * Check a featureToggle\n * @param featureName featureToggle name\n * @param def default value if featureToggles aren't defined, false if not provided\n * @returns featureToggle value or def.\n */\nexport function getFeatureToggle(featureName: FeatureToggleName, def = false) {\n  return window.grafanaBootData?.settings.featureToggles[featureName] ?? def;\n}\n","import { getFeatureToggle } from '../../utils/featureToggle';\n\n// The moment.js format to use for datetime inputs when the regionalFormat option is set.\nconst COMMON_FORMAT = 'YYYY-MM-DD HH:mm:ss';\n\nexport const commonFormat = getFeatureToggle('localeFormatPreference') ? COMMON_FORMAT : undefined;\n","import { dateMath, dateTimeParse, isDateTime, TimeRange, TimeZone } from '@grafana/data';\n\nimport { commonFormat } from './commonFormat';\n\nexport function isValid(value: string, roundUp?: boolean, timeZone?: TimeZone): boolean {\n  if (isDateTime(value)) {\n    return value.isValid();\n  }\n\n  // handles `now` math\n  if (dateMath.isMathString(value)) {\n    return dateMath.isValid(value);\n  }\n\n  const parsed = dateTimeParse(value, { roundUp, timeZone, format: commonFormat });\n  return parsed.isValid();\n}\n\nexport function isValidTimeRange(range: TimeRange) {\n  return dateMath.isValid(range.from) && dateMath.isValid(range.to);\n}\n","import { useCallback, useMemo } from 'react';\n\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { Combobox } from '../Combobox/Combobox';\nimport { ComboboxOption } from '../Combobox/types';\n\nexport interface Props {\n  onChange: (weekStart?: WeekStart) => void;\n  value?: WeekStart;\n  width?: number;\n  autoFocus?: boolean;\n  onBlur?: () => void;\n  disabled?: boolean;\n  inputId?: string;\n}\n\nexport type WeekStart = 'saturday' | 'sunday' | 'monday';\n\nexport function isWeekStart(value: string): value is WeekStart {\n  return ['saturday', 'sunday', 'monday'].includes(value);\n}\n\n/**\n * Returns the system or user defined week start (as defined in bootData)\n * Or you can pass in an override weekStart string and have it be validated and returned as WeekStart type if valid\n */\nexport function getWeekStart(override?: string): WeekStart {\n  if (override && isWeekStart(override)) {\n    return override;\n  }\n\n  const preference = window?.grafanaBootData?.user?.weekStart;\n  if (preference && isWeekStart(preference)) {\n    return preference;\n  }\n\n  return 'monday';\n}\n\nexport const WeekStartPicker = (props: Props) => {\n  const { onChange, width, autoFocus = false, onBlur, value, disabled = false, inputId } = props;\n  const weekStarts: ComboboxOption[] = useMemo(\n    () => [\n      { value: '', label: t('grafana-ui.week-start-picker.weekStarts-label-default', 'Default') },\n      { value: 'saturday', label: t('grafana-ui.week-start-picker.weekStarts-label-saturday', 'Saturday') },\n      { value: 'sunday', label: t('grafana-ui.week-start-picker.weekStarts-label-sunday', 'Sunday') },\n      { value: 'monday', label: t('grafana-ui.week-start-picker.weekStarts-label-monday', 'Monday') },\n    ],\n    []\n  );\n\n  const onChangeWeekStart = useCallback(\n    (selectable: ComboboxOption | null) => {\n      if (selectable && selectable.value !== undefined) {\n        onChange(isWeekStart(selectable.value) ? selectable.value : undefined);\n      }\n    },\n    [onChange]\n  );\n\n  const selected = useMemo(() => weekStarts.find((item) => item.value === value)?.value ?? '', [value, weekStarts]);\n\n  return (\n    <Combobox\n      id={inputId}\n      value={selected}\n      placeholder={selectors.components.WeekStartPicker.placeholder}\n      autoFocus={autoFocus}\n      width={width}\n      options={weekStarts}\n      onChange={onChangeWeekStart}\n      onBlur={onBlur}\n      disabled={disabled}\n    />\n  );\n};\n","import { getZone } from '@grafana/data';\n\n/**\n * React calendar doesn't support showing dates in other time zones, so attempting to show\n * values near midnight in another time zone than your browsers may end up showing the wrong date\n *\n * This function adjusts a date by \"moving\" the time to appear as if it's local.\n * e.g. make 5 PM New York \"look like\" 5 PM in the user's local browser time.\n * See also https://github.com/wojtekmaj/react-calendar/issues/511#issuecomment-835333976\n */\nexport function adjustDateForReactCalendar(date: Date, timeZone: string): Date {\n  const zone = getZone(timeZone);\n  if (!zone) {\n    return date;\n  }\n\n  // get utc offset for timezone preference\n  const timezonePrefOffset = zone.utcOffset(date.getTime());\n\n  // get utc offset for local timezone\n  const localOffset = date.getTimezoneOffset();\n\n  // calculate difference between timezone preference and local timezone\n  const diff = timezonePrefOffset - localOffset;\n\n  const newDate = new Date(date.getTime() - diff * 1000 * 60);\n  return newDate;\n}\n","import { css } from '@emotion/css';\nimport { useCallback } from 'react';\nimport Calendar, { CalendarType } from 'react-calendar';\n\nimport { GrafanaTheme2, dateTimeParse, DateTime, TimeZone } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { Icon } from '../../Icon/Icon';\nimport { getWeekStart, WeekStart } from '../WeekStartPicker';\nimport { adjustDateForReactCalendar } from '../utils/adjustDateForReactCalendar';\n\nimport { TimePickerCalendarProps } from './TimePickerCalendar';\n\nconst weekStartMap: Record<WeekStart, CalendarType> = {\n  saturday: 'islamic',\n  sunday: 'gregory',\n  monday: 'iso8601',\n};\n\nexport function Body({ onChange, from, to, timeZone, weekStart }: TimePickerCalendarProps) {\n  const value = inputToValue(from, to, new Date(), timeZone);\n  const onCalendarChange = useOnCalendarChange(onChange, timeZone);\n  const styles = useStyles2(getBodyStyles);\n  const weekStartValue = getWeekStart(weekStart);\n\n  return (\n    <Calendar\n      selectRange={true}\n      next2Label={null}\n      prev2Label={null}\n      className={styles.body}\n      tileClassName={styles.title}\n      value={value}\n      nextLabel={<Icon name=\"angle-right\" />}\n      nextAriaLabel={t('time-picker.calendar.next-month', 'Next month')}\n      prevLabel={<Icon name=\"angle-left\" />}\n      prevAriaLabel={t('time-picker.calendar.previous-month', 'Previous month')}\n      onChange={onCalendarChange}\n      locale=\"en\"\n      calendarType={weekStartMap[weekStartValue]}\n    />\n  );\n}\n\nBody.displayName = 'Body';\n\nexport function inputToValue(\n  from: DateTime,\n  to: DateTime,\n  invalidDateDefault: Date = new Date(),\n  timezone?: string\n): [Date, Date] {\n  let fromAsDate = from.isValid() ? from.toDate() : invalidDateDefault;\n  let toAsDate = to.isValid() ? to.toDate() : invalidDateDefault;\n\n  if (timezone) {\n    fromAsDate = adjustDateForReactCalendar(fromAsDate, timezone);\n    toAsDate = adjustDateForReactCalendar(toAsDate, timezone);\n  }\n\n  if (fromAsDate > toAsDate) {\n    return [toAsDate, fromAsDate];\n  }\n\n  return [fromAsDate, toAsDate];\n}\n\nfunction useOnCalendarChange(onChange: (from: DateTime, to: DateTime) => void, timeZone?: TimeZone) {\n  return useCallback<NonNullable<React.ComponentProps<typeof Calendar>['onChange']>>(\n    (value) => {\n      if (!Array.isArray(value)) {\n        return console.error('onCalendarChange: should be run in selectRange={true}');\n      }\n\n      if (value[0] && value[1]) {\n        const from = dateTimeParse(dateInfo(value[0]), { timeZone });\n        const to = dateTimeParse(dateInfo(value[1]), { timeZone });\n\n        onChange(from, to);\n      }\n    },\n    [onChange, timeZone]\n  );\n}\n\nfunction dateInfo(date: Date): number[] {\n  return [date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()];\n}\n\nexport const getBodyStyles = (theme: GrafanaTheme2) => {\n  // If a time range is part of only 1 day but does not encompass the whole day,\n  // the class that react-calendar uses is '--hasActive' by itself (without being part of a '--range')\n  const hasActiveSelector = `.react-calendar__tile--hasActive:not(.react-calendar__tile--range)`;\n\n  return {\n    title: css({\n      color: theme.colors.text.primary,\n      backgroundColor: theme.colors.background.primary,\n      fontSize: theme.typography.size.md,\n      border: '1px solid transparent',\n\n      '&:hover, &:focus': {\n        position: 'relative',\n      },\n\n      '&:disabled': {\n        color: theme.colors.action.disabledText,\n        cursor: 'not-allowed',\n      },\n    }),\n    body: css({\n      zIndex: theme.zIndex.modal,\n      backgroundColor: theme.colors.background.elevated,\n      width: '268px',\n\n      '.react-calendar__navigation': {\n        display: 'flex',\n      },\n\n      '.react-calendar__navigation__label, .react-calendar__navigation__arrow, .react-calendar__navigation': {\n        paddingTop: '4px',\n        backgroundColor: 'inherit',\n        color: theme.colors.text.primary,\n        border: 0,\n        fontWeight: theme.typography.fontWeightMedium,\n      },\n\n      '.react-calendar__month-view__weekdays': {\n        backgroundColor: 'inherit',\n        textAlign: 'center',\n        color: theme.colors.primary.text,\n\n        abbr: {\n          border: 0,\n          textDecoration: 'none',\n          cursor: 'default',\n          display: 'block',\n          padding: '4px 0 4px 0',\n        },\n      },\n\n      '.react-calendar__month-view__days': {\n        backgroundColor: 'inherit',\n      },\n\n      '.react-calendar__tile, .react-calendar__tile--now': {\n        marginBottom: '4px',\n        backgroundColor: 'inherit',\n        height: '26px',\n      },\n\n      '.react-calendar__navigation__label, .react-calendar__navigation > button:focus, .time-picker-calendar-tile:focus':\n        {\n          outline: 0,\n        },\n\n      // The --hover modifier is active when the user is selecting a range and hovering over a tile - it shows the pending range.\n      // It is applied to all dates between the clicked date and the hovered date.\n      // The *clicked* date should have primary bg, while *pending* range dates should have hover bg.\n      '.react-calendar__tile--hover': {\n        backgroundColor: theme.colors.action.hover,\n        // eslint-disable-next-line @grafana/no-border-radius-literal\n        borderRadius: 0,\n      },\n\n      '.react-calendar__tile--hoverStart': {\n        borderTopLeftRadius: theme.shape.radius.pill,\n        borderBottomLeftRadius: theme.shape.radius.pill,\n      },\n\n      '.react-calendar__tile--hoverEnd': {\n        borderTopRightRadius: theme.shape.radius.pill,\n        borderBottomRightRadius: theme.shape.radius.pill,\n      },\n\n      // Addiitonally, when hovering a date before clicking any, it should show the hover bg.\n      '.react-calendar__tile:hover:not(.react-calendar__tile--hover):not(.react-calendar__tile--active):not(.react-calendar__tile--hasActive)':\n        {\n          backgroundColor: theme.colors.action.hover,\n          borderRadius: theme.shape.radius.pill,\n        },\n\n      // When the user is selecting a range (they've clicked one date, tiles have --hover), both --rangeStart and --rangeEnd are on the tile.\n      // The --hover classes above  handle the rounding of the tiles so they're contigious with the range\n      [`${hasActiveSelector}, .react-calendar__tile--rangeStart:not(.react-calendar__tile--hover)`]: {\n        borderTopLeftRadius: theme.shape.radius.pill,\n        borderBottomLeftRadius: theme.shape.radius.pill,\n      },\n\n      [`${hasActiveSelector}, .react-calendar__tile--rangeEnd:not(.react-calendar__tile--hover)`]: {\n        borderTopRightRadius: theme.shape.radius.pill,\n        borderBottomRightRadius: theme.shape.radius.pill,\n      },\n\n      [`${hasActiveSelector}, .react-calendar__tile--active, .react-calendar__tile--rangeEnd, .react-calendar__tile--rangeStart`]:\n        {\n          color: theme.colors.primary.contrastText,\n          fontWeight: theme.typography.fontWeightMedium,\n          background: theme.colors.primary.main,\n          border: '0px',\n        },\n    }),\n  };\n};\n","import { Trans } from '@grafana/i18n';\n\nimport { Button } from '../../Button/Button';\nimport { Stack } from '../../Layout/Stack/Stack';\n\nimport { TimePickerCalendarProps } from './TimePickerCalendar';\n\nexport function Footer({ onClose, onApply }: TimePickerCalendarProps) {\n  return (\n    <Stack gap={2} justifyContent=\"space-between\">\n      <Button variant=\"secondary\" onClick={onClose}>\n        <Trans i18nKey=\"time-picker.calendar.cancel-button\">Cancel</Trans>\n      </Button>\n\n      <Button onClick={onApply}>\n        <Trans i18nKey=\"time-picker.calendar.apply-button\">Apply time range</Trans>\n      </Button>\n    </Stack>\n  );\n}\n\nFooter.displayName = 'Footer';\n","import { selectors } from '@grafana/e2e-selectors';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { IconButton } from '../../IconButton/IconButton';\nimport { Stack } from '../../Layout/Stack/Stack';\n\nimport { TimePickerCalendarProps } from './TimePickerCalendar';\nimport { TimePickerTitle } from './TimePickerTitle';\n\nexport function Header({ onClose }: TimePickerCalendarProps) {\n  return (\n    <Stack justifyContent=\"space-between\">\n      <TimePickerTitle>\n        <Trans i18nKey=\"time-picker.calendar.select-time\">Select a time range</Trans>\n      </TimePickerTitle>\n\n      <IconButton\n        data-testid={selectors.components.TimePicker.calendar.closeButton}\n        tooltip={t(`time-picker.calendar.close`, 'Close calendar')}\n        name=\"times\"\n        variant=\"secondary\"\n        onClick={onClose}\n      />\n    </Stack>\n  );\n}\n\nHeader.displayName = 'Header';\n","import { css } from '@emotion/css';\nimport { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { OverlayContainer, useOverlay } from '@react-aria/overlays';\nimport { createRef, FormEvent, memo } from 'react';\n\nimport { DateTime, GrafanaTheme2, TimeZone } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2, useTheme2 } from '../../../themes/ThemeContext';\nimport { getModalStyles } from '../../Modal/getModalStyles';\nimport { WeekStart } from '../WeekStartPicker';\n\nimport { Body } from './CalendarBody';\nimport { Footer } from './CalendarFooter';\nimport { Header } from './CalendarHeader';\n\nexport const getStyles = (theme: GrafanaTheme2, isReversed = false) => {\n  return {\n    container: css({\n      top: 0,\n      position: 'absolute',\n      [`${isReversed ? 'left' : 'right'}`]: '546px', // lmao\n    }),\n\n    modalContainer: css({\n      label: 'modalContainer',\n      margin: '0 auto',\n    }),\n\n    calendar: css({\n      display: 'flex',\n      flexDirection: 'column',\n      gap: theme.spacing(1),\n      padding: theme.spacing(1),\n      label: 'calendar',\n      boxShadow: theme.shadows.z3,\n      backgroundColor: theme.colors.background.elevated,\n      border: `1px solid ${theme.colors.border.weak}`,\n      borderRadius: theme.shape.radius.default,\n    }),\n\n    modal: css({\n      label: 'modal',\n      boxShadow: theme.shadows.z3,\n      left: '50%',\n      position: 'fixed',\n      top: '50%',\n      transform: 'translate(-50%, -50%)',\n      zIndex: theme.zIndex.modal,\n    }),\n  };\n};\n\nexport interface TimePickerCalendarProps {\n  isOpen: boolean;\n  from: DateTime;\n  to: DateTime;\n  onClose: () => void;\n  onApply: (e: FormEvent<HTMLButtonElement>) => void;\n  onChange: (from: DateTime, to: DateTime) => void;\n  weekStart?: WeekStart;\n\n  /**\n   * When true, the calendar is rendered as a floating \"tooltip\" next to the input.\n   * When false, the calendar is rendered \"fullscreen\" in a modal. Yes. Don't ask.\n   */\n  isFullscreen: boolean;\n  timeZone?: TimeZone;\n  isReversed?: boolean;\n}\n\nfunction TimePickerCalendar(props: TimePickerCalendarProps) {\n  const theme = useTheme2();\n  const { modalBackdrop } = useStyles2(getModalStyles);\n  const styles = getStyles(theme, props.isReversed);\n  const { isOpen, isFullscreen: isFullscreenProp, onClose } = props;\n  const ref = createRef<HTMLElement>();\n  const { dialogProps } = useDialog(\n    {\n      'aria-label': selectors.components.TimePicker.calendar.label,\n    },\n    ref\n  );\n  const { overlayProps } = useOverlay(\n    {\n      isDismissable: true,\n      isOpen,\n      onClose,\n    },\n    ref\n  );\n\n  // This prop is confusingly worded, so rename it to something more intuitive.\n  const showInModal = !isFullscreenProp;\n\n  if (!isOpen) {\n    return null;\n  }\n\n  const calendar = (\n    <section\n      className={styles.calendar}\n      ref={ref}\n      {...overlayProps}\n      {...dialogProps}\n      data-testid={selectors.components.TimePicker.calendar.label}\n    >\n      <Header {...props} />\n      <Body {...props} />\n      {showInModal && <Footer {...props} />}\n    </section>\n  );\n\n  if (!showInModal) {\n    return (\n      <FocusScope contain restoreFocus autoFocus>\n        <div className={styles.container}>{calendar}</div>\n      </FocusScope>\n    );\n  }\n\n  return (\n    <OverlayContainer>\n      <div className={modalBackdrop} />\n\n      <FocusScope contain autoFocus restoreFocus>\n        <div className={styles.modal}>\n          <div className={styles.modalContainer}>{calendar}</div>\n        </div>\n      </FocusScope>\n    </OverlayContainer>\n  );\n}\nexport default memo(TimePickerCalendar);\nTimePickerCalendar.displayName = 'TimePickerCalendar';\n","import { css } from '@emotion/css';\nimport { FormEvent, useCallback, useEffect, useId, useState } from 'react';\nimport * as React from 'react';\n\nimport {\n  DateTime,\n  dateTimeFormat,\n  dateTimeParse,\n  GrafanaTheme2,\n  isDateTime,\n  rangeUtil,\n  RawTimeRange,\n  TimeRange,\n  TimeZone,\n} from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { Button } from '../../Button/Button';\nimport { Field } from '../../Forms/Field';\nimport { Icon } from '../../Icon/Icon';\nimport { Input } from '../../Input/Input';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { WeekStart } from '../WeekStartPicker';\nimport { commonFormat } from '../commonFormat';\nimport { isValid } from '../utils';\n\nimport TimePickerCalendar from './TimePickerCalendar';\n\ninterface Props {\n  isFullscreen: boolean;\n  value: TimeRange;\n  onApply: (range: TimeRange) => void;\n  timeZone?: TimeZone;\n  fiscalYearStartMonth?: number;\n  roundup?: boolean;\n  isReversed?: boolean;\n  onError?: (error?: string) => void;\n  weekStart?: WeekStart;\n}\n\ninterface InputState {\n  value: string;\n  invalid: boolean;\n  errorMessage: string;\n}\n\nconst ERROR_MESSAGES = {\n  default: () => t('time-picker.range-content.default-error', 'Please enter a past date or \"{{now}}\"', { now: 'now' }),\n  range: () => t('time-picker.range-content.range-error', '\"From\" can\\'t be after \"To\"'),\n};\n\nexport const TimeRangeContent = (props: Props) => {\n  const {\n    value,\n    isFullscreen = false,\n    timeZone,\n    onApply: onApplyFromProps,\n    isReversed,\n    fiscalYearStartMonth,\n    onError,\n    weekStart,\n  } = props;\n  const [fromValue, toValue] = valueToState(value.raw.from, value.raw.to, timeZone);\n  const style = useStyles2(getStyles);\n\n  const [from, setFrom] = useState<InputState>(fromValue);\n  const [to, setTo] = useState<InputState>(toValue);\n  const [isOpen, setOpen] = useState(false);\n\n  const fromFieldId = useId();\n  const toFieldId = useId();\n\n  // Synchronize internal state with external value\n  useEffect(() => {\n    const [fromValue, toValue] = valueToState(value.raw.from, value.raw.to, timeZone);\n    setFrom(fromValue);\n    setTo(toValue);\n  }, [value.raw.from, value.raw.to, timeZone]);\n\n  const onOpen = useCallback(\n    (event: FormEvent<HTMLElement>) => {\n      event.preventDefault();\n      setOpen(true);\n    },\n    [setOpen]\n  );\n\n  const onApply = useCallback(() => {\n    if (to.invalid || from.invalid) {\n      return;\n    }\n\n    const raw: RawTimeRange = { from: from.value, to: to.value };\n    const timeRange = rangeUtil.convertRawToRange(raw, timeZone, fiscalYearStartMonth, commonFormat);\n\n    onApplyFromProps(timeRange);\n  }, [from.invalid, from.value, onApplyFromProps, timeZone, to.invalid, to.value, fiscalYearStartMonth]);\n\n  const onChange = useCallback(\n    (from: DateTime | string, to: DateTime | string) => {\n      const [fromValue, toValue] = valueToState(from, to, timeZone);\n      setFrom(fromValue);\n      setTo(toValue);\n    },\n    [timeZone]\n  );\n\n  const submitOnEnter = (event: React.KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === 'Enter') {\n      onApply();\n    }\n  };\n\n  const onCopy = () => {\n    const rawSource: RawTimeRange = value.raw;\n    const clipboardPayload = rangeUtil.formatRawTimeRange(rawSource);\n    navigator.clipboard.writeText(JSON.stringify(clipboardPayload));\n  };\n\n  const onPaste = async () => {\n    const raw = await navigator.clipboard.readText();\n    let range;\n\n    try {\n      range = JSON.parse(raw);\n    } catch (error) {\n      if (onError) {\n        onError(raw);\n      }\n      return;\n    }\n\n    const [fromValue, toValue] = valueToState(range.from, range.to, timeZone);\n    setFrom(fromValue);\n    setTo(toValue);\n  };\n\n  const fiscalYear = rangeUtil.convertRawToRange({ from: 'now/fy', to: 'now/fy' }, timeZone, fiscalYearStartMonth);\n\n  const fyTooltip = (\n    <div className={style.tooltip}>\n      {rangeUtil.isFiscal(value) ? (\n        <Tooltip\n          content={t('time-picker.range-content.fiscal-year', 'Fiscal year: {{from}} - {{to}}', {\n            from: fiscalYear.from.format('MMM-DD'),\n            to: fiscalYear.to.format('MMM-DD'),\n          })}\n        >\n          <Icon name=\"info-circle\" />\n        </Tooltip>\n      ) : null}\n    </div>\n  );\n\n  const icon = (\n    <Button\n      aria-label={t('time-picker.range-content.open-input-calendar', 'Open calendar')}\n      data-testid={selectors.components.TimePicker.calendar.openButton}\n      icon=\"calendar-alt\"\n      variant=\"secondary\"\n      type=\"button\"\n      onClick={onOpen}\n    />\n  );\n\n  return (\n    <div>\n      <div className={style.fieldContainer}>\n        <Field\n          label={t('time-picker.range-content.from-input', 'From')}\n          invalid={from.invalid}\n          error={from.errorMessage}\n        >\n          <Input\n            id={fromFieldId}\n            onClick={(event) => event.stopPropagation()}\n            onChange={(event) => onChange(event.currentTarget.value, to.value)}\n            addonAfter={icon}\n            onKeyDown={submitOnEnter}\n            data-testid={selectors.components.TimePicker.fromField}\n            value={from.value}\n          />\n        </Field>\n        {fyTooltip}\n      </div>\n      <div className={style.fieldContainer}>\n        <Field label={t('time-picker.range-content.to-input', 'To')} invalid={to.invalid} error={to.errorMessage}>\n          <Input\n            id={toFieldId}\n            onClick={(event) => event.stopPropagation()}\n            onChange={(event) => onChange(from.value, event.currentTarget.value)}\n            addonAfter={icon}\n            onKeyDown={submitOnEnter}\n            data-testid={selectors.components.TimePicker.toField}\n            value={to.value}\n          />\n        </Field>\n        {fyTooltip}\n      </div>\n      <div className={style.buttonsContainer}>\n        <Button\n          data-testid={selectors.components.TimePicker.copyTimeRange}\n          icon=\"copy\"\n          variant=\"secondary\"\n          tooltip={t('time-picker.copy-paste.tooltip-copy', 'Copy time range to clipboard')}\n          type=\"button\"\n          onClick={onCopy}\n        />\n        <Button\n          data-testid={selectors.components.TimePicker.pasteTimeRange}\n          icon=\"clipboard-alt\"\n          variant=\"secondary\"\n          tooltip={t('time-picker.copy-paste.tooltip-paste', 'Paste time range')}\n          type=\"button\"\n          onClick={onPaste}\n        />\n        <Button data-testid={selectors.components.TimePicker.applyTimeRange} type=\"button\" onClick={onApply}>\n          <Trans i18nKey=\"time-picker.range-content.apply-button\">Apply time range</Trans>\n        </Button>\n      </div>\n\n      <TimePickerCalendar\n        isFullscreen={isFullscreen}\n        isOpen={isOpen}\n        from={dateTimeParse(from.value, { timeZone })}\n        to={dateTimeParse(to.value, { timeZone })}\n        onApply={onApply}\n        onClose={() => setOpen(false)}\n        onChange={onChange}\n        timeZone={timeZone}\n        isReversed={isReversed}\n        weekStart={weekStart}\n      />\n    </div>\n  );\n};\n\nfunction isRangeInvalid(from: string, to: string, timezone?: string): boolean {\n  const raw: RawTimeRange = { from, to };\n  const timeRange = rangeUtil.convertRawToRange(raw, timezone, undefined, commonFormat);\n  const valid = timeRange.from.isSame(timeRange.to) || timeRange.from.isBefore(timeRange.to);\n\n  return !valid;\n}\n\nfunction valueToState(\n  rawFrom: DateTime | string,\n  rawTo: DateTime | string,\n  timeZone?: TimeZone\n): [InputState, InputState] {\n  const fromValue = valueAsString(rawFrom, timeZone);\n  const toValue = valueAsString(rawTo, timeZone);\n  const fromInvalid = !isValid(fromValue, false, timeZone);\n  const toInvalid = !isValid(toValue, true, timeZone);\n  // If \"To\" is invalid, we should not check the range anyways\n  const rangeInvalid = isRangeInvalid(fromValue, toValue, timeZone) && !toInvalid;\n\n  return [\n    {\n      value: fromValue,\n      invalid: fromInvalid || rangeInvalid,\n      errorMessage: rangeInvalid && !fromInvalid ? ERROR_MESSAGES.range() : ERROR_MESSAGES.default(),\n    },\n    { value: toValue, invalid: toInvalid, errorMessage: ERROR_MESSAGES.default() },\n  ];\n}\n\nfunction valueAsString(value: DateTime | string, timeZone?: TimeZone): string {\n  if (isDateTime(value)) {\n    return dateTimeFormat(value, { timeZone, format: commonFormat });\n  }\n\n  if (value.endsWith('Z')) {\n    const dt = dateTimeParse(value);\n    return dateTimeFormat(dt, { timeZone, format: commonFormat });\n  }\n\n  return value;\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n  return {\n    fieldContainer: css({\n      display: 'flex',\n    }),\n    buttonsContainer: css({\n      display: 'flex',\n      gap: theme.spacing(0.5),\n      marginTop: theme.spacing(1),\n    }),\n    tooltip: css({\n      paddingLeft: theme.spacing(1),\n      paddingTop: theme.spacing(3),\n    }),\n  };\n}\n","import { css, cx } from '@emotion/css';\nimport { memo } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { GrafanaTheme2, TimeOption } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { getFocusStyles } from '../../../themes/mixins';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      display: 'flex',\n      alignItems: 'center',\n      flexDirection: 'row-reverse',\n      justifyContent: 'space-between',\n      position: 'relative',\n    }),\n    radio: css({\n      opacity: 0,\n      width: '0 !important',\n      '&:focus-visible + label': getFocusStyles(theme),\n    }),\n    label: css({\n      cursor: 'pointer',\n      flex: 1,\n      padding: theme.spacing(1),\n      borderRadius: theme.shape.radius.default,\n\n      '&:hover': {\n        background: theme.colors.action.hover,\n        cursor: 'pointer',\n      },\n    }),\n    labelSelected: css({\n      background: theme.colors.action.selected,\n\n      '&::before': {\n        backgroundImage: theme.colors.gradients.brandVertical,\n        borderRadius: theme.shape.radius.default,\n        content: '\" \"',\n        display: 'block',\n        height: '100%',\n        position: 'absolute',\n        width: theme.spacing(0.5),\n        left: 0,\n        top: 0,\n      },\n    }),\n  };\n};\n\ninterface Props {\n  value: TimeOption;\n  selected?: boolean;\n  onSelect: (option: TimeOption) => void;\n  /**\n   *  Input identifier. This should be the same for all options in a group.\n   */\n  name: string;\n}\n\nexport const TimeRangeOption = memo<Props>(({ value, onSelect, selected = false, name }) => {\n  const styles = useStyles2(getStyles);\n  // In case there are more of the same timerange in the list\n  const id = uuidv4();\n\n  return (\n    <li className={styles.container}>\n      <input\n        className={styles.radio}\n        checked={selected}\n        name={name}\n        type=\"checkbox\"\n        data-role=\"item\"\n        tabIndex={-1}\n        id={id}\n        onChange={() => onSelect(value)}\n      />\n      <label className={cx(styles.label, selected && styles.labelSelected)} htmlFor={id}>\n        {value.display}\n      </label>\n    </li>\n  );\n});\n\nTimeRangeOption.displayName = 'TimeRangeOption';\n","import { RefObject, useEffect, useState } from 'react';\n\nimport { TimeOption } from '@grafana/data';\n\nconst modulo = (a: number, n: number) => ((a % n) + n) % n;\nconst CAUGHT_KEYS = ['ArrowUp', 'ArrowDown', 'Home', 'End', 'Enter', 'Tab'];\n\n/** @internal */\nexport interface UseListFocusProps {\n  localRef: RefObject<HTMLUListElement>;\n  options: TimeOption[];\n}\n\n/** @internal */\nexport type UseListFocusReturn = [(event: React.KeyboardEvent) => void];\n\n/** @internal */\nexport const useListFocus = ({ localRef, options }: UseListFocusProps): UseListFocusReturn => {\n  const [focusedItem, setFocusedItem] = useState(0);\n\n  useEffect(() => {\n    const items = localRef.current?.querySelectorAll<HTMLInputElement>('[data-role=\"item\"]') || [];\n    const checkedIndex = Array.from(items).findIndex((item) => item.checked);\n    const newFocusedIndex = checkedIndex >= 0 ? checkedIndex : 0;\n    items.forEach((item, i) => {\n      item.tabIndex = i === newFocusedIndex ? 0 : -1;\n    });\n    // Reset focused item when options have changed\n    setFocusedItem(newFocusedIndex);\n  }, [localRef, options]);\n\n  const handleKeys = (event: React.KeyboardEvent) => {\n    const items = localRef?.current?.querySelectorAll<HTMLInputElement>('[data-role=\"item\"]');\n    const itemsCount = items?.length ?? 0;\n\n    if (CAUGHT_KEYS.indexOf(event.key) > -1) {\n      event.preventDefault();\n      if (event.key !== 'Tab') {\n        event.stopPropagation();\n      }\n    }\n\n    let newFocusedIndex = null;\n\n    switch (event.key) {\n      case 'ArrowUp':\n        newFocusedIndex = modulo(focusedItem - 1, itemsCount);\n        break;\n      case 'ArrowDown':\n        newFocusedIndex = modulo(focusedItem + 1, itemsCount);\n        break;\n      case 'Home':\n        newFocusedIndex = 0;\n        break;\n      case 'End':\n        newFocusedIndex = itemsCount - 1;\n        break;\n      case 'Enter':\n        items?.[focusedItem]?.click();\n        break;\n      default:\n        break;\n    }\n\n    if (newFocusedIndex !== null) {\n      setFocusedItem(newFocusedIndex);\n      items?.[newFocusedIndex]?.focus();\n      items?.forEach((item, i) => {\n        item.tabIndex = i === newFocusedIndex ? 0 : -1;\n      });\n    }\n  };\n\n  return [handleKeys];\n};\n","import { css } from '@emotion/css';\nimport { useRef, ReactNode } from 'react';\n\nimport { GrafanaTheme2, TimeOption } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\n\nimport { TimePickerTitle } from './TimePickerTitle';\nimport { TimeRangeOption } from './TimeRangeOption';\nimport { useListFocus } from './hooks';\n\ninterface Props {\n  title?: string;\n  options: TimeOption[];\n  value?: TimeOption;\n  onChange: (option: TimeOption) => void;\n  placeholderEmpty?: ReactNode;\n}\n\nexport const TimeRangeList = (props: Props) => {\n  const styles = useStyles2(getStyles);\n  const { title, options, placeholderEmpty } = props;\n\n  if (typeof placeholderEmpty !== 'undefined' && options.length <= 0) {\n    return <>{placeholderEmpty}</>;\n  }\n\n  if (!title) {\n    return <Options {...props} />;\n  }\n\n  return (\n    <section aria-label={title}>\n      <fieldset>\n        <div className={styles.title}>\n          <TimePickerTitle>{title}</TimePickerTitle>\n        </div>\n        <Options {...props} />\n      </fieldset>\n    </section>\n  );\n};\n\nconst Options = ({ options, value, onChange, title }: Props) => {\n  const styles = useStyles2(getOptionsStyles);\n\n  const localRef = useRef<HTMLUListElement>(null);\n  const [handleKeys] = useListFocus({ localRef, options });\n\n  return (\n    <>\n      <ul\n        role=\"presentation\"\n        onKeyDown={handleKeys}\n        ref={localRef}\n        aria-roledescription={t('time-picker.time-range.aria-role', 'Time range selection')}\n        className={styles.list}\n      >\n        {options.map((option, index) => (\n          <TimeRangeOption\n            key={keyForOption(option, index)}\n            value={option}\n            selected={isEqual(option, value)}\n            onSelect={onChange}\n            name={title ?? t('time-picker.time-range.default-title', 'Time ranges')}\n          />\n        ))}\n      </ul>\n    </>\n  );\n};\n\nfunction keyForOption(option: TimeOption, index: number): string {\n  return `${option.from}-${option.to}-${index}`;\n}\n\nfunction isEqual(x: TimeOption, y?: TimeOption): boolean {\n  if (!y || !x) {\n    return false;\n  }\n  return y.from === x.from && y.to === x.to;\n}\n\nconst getStyles = () => ({\n  title: css({\n    display: 'flex',\n    alignItems: 'center',\n    justifyContent: 'space-between',\n    padding: '8px 16px 5px 9px',\n  }),\n});\n\nconst getOptionsStyles = (theme: GrafanaTheme2) => ({\n  list: css({\n    padding: theme.spacing(0.5),\n  }),\n});\n","import { TimeOption, TimeRange, TimeZone, rangeUtil, dateTimeFormat } from '@grafana/data';\n\nimport { getFeatureToggle } from '../../../utils/featureToggle';\nimport { commonFormat } from '../commonFormat';\n\n/**\n * Takes a printable TimeOption and builds a TimeRange with DateTime properties from it\n */\nexport const mapOptionToTimeRange = (option: TimeOption, timeZone?: TimeZone): TimeRange => {\n  return rangeUtil.convertRawToRange({ from: option.from, to: option.to }, timeZone, undefined, commonFormat);\n};\n\n/**\n * Takes a TimeRange and makes a printable TimeOption with formatted date strings correct for the timezone from it\n */\nexport const mapRangeToTimeOption = (range: TimeRange, timeZone?: TimeZone): TimeOption => {\n  const from = dateTimeFormat(range.from, { timeZone, format: commonFormat });\n  const to = dateTimeFormat(range.to, { timeZone, format: commonFormat });\n\n  let display = `${from} to ${to}`;\n\n  if (getFeatureToggle('localeFormatPreference')) {\n    display = rangeUtil.describeTimeRange(range, timeZone);\n  }\n\n  return {\n    from,\n    to,\n    display,\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { memo, useMemo, useState } from 'react';\n\nimport { GrafanaTheme2, isDateTime, rangeUtil, RawTimeRange, TimeOption, TimeRange, TimeZone } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2, useTheme2 } from '../../../themes/ThemeContext';\nimport { getFocusStyles } from '../../../themes/mixins';\nimport { FilterInput } from '../../FilterInput/FilterInput';\nimport { Icon } from '../../Icon/Icon';\nimport { TextLink } from '../../Link/TextLink';\nimport { WeekStart } from '../WeekStartPicker';\n\nimport { TimePickerFooter } from './TimePickerFooter';\nimport { TimePickerTitle } from './TimePickerTitle';\nimport { TimeRangeContent } from './TimeRangeContent';\nimport { TimeRangeList } from './TimeRangeList';\nimport { mapOptionToTimeRange, mapRangeToTimeOption } from './mapper';\n\ninterface Props {\n  value: TimeRange;\n  onChange: (timeRange: TimeRange) => void;\n  onChangeTimeZone: (timeZone: TimeZone) => void;\n  onChangeFiscalYearStartMonth?: (month: number) => void;\n  onError?: (error?: string) => void;\n  timeZone?: TimeZone;\n  fiscalYearStartMonth?: number;\n  quickOptions?: TimeOption[];\n  history?: TimeRange[];\n  showHistory?: boolean;\n  className?: string;\n  hideTimeZone?: boolean;\n  /** Reverse the order of relative and absolute range pickers. Used to left align the picker in forms */\n  isReversed?: boolean;\n  hideQuickRanges?: boolean;\n  widthOverride?: number;\n  weekStart?: WeekStart;\n}\n\nexport interface PropsWithScreenSize extends Props {\n  isFullscreen: boolean;\n}\n\ninterface FormProps extends Omit<Props, 'history'> {\n  historyOptions?: TimeOption[];\n}\n\nexport const TimePickerContentWithScreenSize = (props: PropsWithScreenSize) => {\n  const {\n    quickOptions = [],\n    isReversed,\n    isFullscreen,\n    hideQuickRanges,\n    timeZone,\n    fiscalYearStartMonth,\n    value,\n    onChange,\n    history,\n    showHistory,\n    className,\n    hideTimeZone,\n    onChangeTimeZone,\n    onChangeFiscalYearStartMonth,\n  } = props;\n  const isHistoryEmpty = !history?.length;\n  const isContainerTall =\n    (isFullscreen && showHistory) || (!isFullscreen && ((showHistory && !isHistoryEmpty) || !hideQuickRanges));\n  const styles = useStyles2(getStyles, isReversed, hideQuickRanges, isContainerTall, isFullscreen);\n  const historyOptions = mapToHistoryOptions(history, timeZone);\n  const timeOption = useTimeOption(value.raw, quickOptions);\n  const [searchTerm, setSearchQuery] = useState('');\n\n  const filteredQuickOptions = quickOptions.filter((o) => o.display.toLowerCase().includes(searchTerm.toLowerCase()));\n\n  const onChangeTimeOption = (timeOption: TimeOption) => {\n    return onChange(mapOptionToTimeRange(timeOption));\n  };\n\n  return (\n    <div id=\"TimePickerContent\" className={cx(styles.container, className)}>\n      <div className={styles.body}>\n        {(!isFullscreen || !hideQuickRanges) && (\n          <div className={styles.rightSide}>\n            <div className={styles.timeRangeFilter}>\n              <FilterInput\n                width={0}\n                value={searchTerm}\n                onChange={setSearchQuery}\n                placeholder={t('time-picker.content.filter-placeholder', 'Search quick ranges')}\n              />\n            </div>\n            <div className={styles.scrollContent}>\n              {!isFullscreen && <NarrowScreenForm {...props} historyOptions={historyOptions} />}\n              {!hideQuickRanges && (\n                <TimeRangeList options={filteredQuickOptions} onChange={onChangeTimeOption} value={timeOption} />\n              )}\n            </div>\n          </div>\n        )}\n        {isFullscreen && (\n          <div className={styles.leftSide}>\n            <FullScreenForm {...props} historyOptions={historyOptions} />\n          </div>\n        )}\n      </div>\n      {!hideTimeZone && isFullscreen && (\n        <TimePickerFooter\n          timeZone={timeZone}\n          fiscalYearStartMonth={fiscalYearStartMonth}\n          onChangeTimeZone={onChangeTimeZone}\n          onChangeFiscalYearStartMonth={onChangeFiscalYearStartMonth}\n        />\n      )}\n    </div>\n  );\n};\n\nexport const TimePickerContent = (props: Props) => {\n  const { widthOverride } = props;\n  const theme = useTheme2();\n  const isFullscreen = (widthOverride || window.innerWidth) >= theme.breakpoints.values.lg;\n  return <TimePickerContentWithScreenSize {...props} isFullscreen={isFullscreen} />;\n};\n\nconst NarrowScreenForm = (props: FormProps) => {\n  const { value, hideQuickRanges, onChange, timeZone, historyOptions = [], showHistory, onError, weekStart } = props;\n  const styles = useStyles2(getNarrowScreenStyles);\n  const isAbsolute = isDateTime(value.raw.from) || isDateTime(value.raw.to);\n  const [collapsedFlag, setCollapsedFlag] = useState(!isAbsolute);\n  const collapsed = hideQuickRanges ? false : collapsedFlag;\n\n  const onChangeTimeOption = (timeOption: TimeOption) => {\n    return onChange(mapOptionToTimeRange(timeOption, timeZone));\n  };\n\n  return (\n    <fieldset>\n      <div className={styles.header}>\n        <button\n          type={'button'}\n          className={styles.expandButton}\n          onClick={() => {\n            if (!hideQuickRanges) {\n              setCollapsedFlag(!collapsed);\n            }\n          }}\n          data-testid={selectors.components.TimePicker.absoluteTimeRangeTitle}\n          aria-expanded={!collapsed}\n          aria-controls=\"expanded-timerange\"\n        >\n          <TimePickerTitle>\n            <Trans i18nKey=\"time-picker.absolute.title\">Absolute time range</Trans>\n          </TimePickerTitle>\n          {!hideQuickRanges && <Icon name={!collapsed ? 'angle-up' : 'angle-down'} />}\n        </button>\n      </div>\n      {!collapsed && (\n        <div className={styles.body} id=\"expanded-timerange\">\n          <div className={styles.form}>\n            <TimeRangeContent\n              value={value}\n              onApply={onChange}\n              timeZone={timeZone}\n              isFullscreen={false}\n              onError={onError}\n              weekStart={weekStart}\n            />\n          </div>\n          {showHistory && (\n            <TimeRangeList\n              title={t('time-picker.absolute.recent-title', 'Recently used absolute ranges')}\n              options={historyOptions}\n              onChange={onChangeTimeOption}\n              placeholderEmpty={null}\n            />\n          )}\n        </div>\n      )}\n    </fieldset>\n  );\n};\n\nconst FullScreenForm = (props: FormProps) => {\n  const { onChange, value, timeZone, fiscalYearStartMonth, isReversed, historyOptions, onError, weekStart } = props;\n  const styles = useStyles2(getFullScreenStyles, props.hideQuickRanges);\n  const onChangeTimeOption = (timeOption: TimeOption) => {\n    return onChange(mapOptionToTimeRange(timeOption, timeZone));\n  };\n\n  return (\n    <>\n      <div className={styles.container}>\n        <div className={styles.title} data-testid={selectors.components.TimePicker.absoluteTimeRangeTitle}>\n          <TimePickerTitle>\n            <Trans i18nKey=\"time-picker.absolute.title\">Absolute time range</Trans>\n          </TimePickerTitle>\n        </div>\n        <TimeRangeContent\n          value={value}\n          timeZone={timeZone}\n          fiscalYearStartMonth={fiscalYearStartMonth}\n          onApply={onChange}\n          isFullscreen={true}\n          isReversed={isReversed}\n          onError={onError}\n          weekStart={weekStart}\n        />\n      </div>\n      {props.showHistory && (\n        <div className={styles.recent}>\n          <TimeRangeList\n            title={t('time-picker.absolute.recent-title', 'Recently used absolute ranges')}\n            options={historyOptions || []}\n            onChange={onChangeTimeOption}\n            placeholderEmpty={<EmptyRecentList />}\n          />\n        </div>\n      )}\n    </>\n  );\n};\n\nconst EmptyRecentList = memo(() => {\n  const styles = useStyles2(getEmptyListStyles);\n  const emptyRecentListText = t(\n    'time-picker.content.empty-recent-list-info',\n    \"It looks like you haven't used this time picker before. As soon as you enter some time intervals, recently used intervals will appear here.\"\n  );\n\n  return (\n    <div className={styles.container}>\n      <div>\n        <span>{emptyRecentListText}</span>\n      </div>\n      <Trans i18nKey=\"time-picker.content.empty-recent-list-docs\">\n        <div>\n          <TextLink href=\"https://grafana.com/docs/grafana/latest/dashboards/time-range-controls\" external>\n            Read the documentation\n          </TextLink>\n          <span> to find out more about how to enter custom time ranges.</span>\n        </div>\n      </Trans>\n    </div>\n  );\n});\n\nfunction mapToHistoryOptions(ranges?: TimeRange[], timeZone?: TimeZone): TimeOption[] {\n  if (!Array.isArray(ranges) || ranges.length === 0) {\n    return [];\n  }\n\n  return ranges.map((range) => mapRangeToTimeOption(range, timeZone));\n}\n\nEmptyRecentList.displayName = 'EmptyRecentList';\n\nconst useTimeOption = (raw: RawTimeRange, quickOptions: TimeOption[]): TimeOption | undefined => {\n  return useMemo(() => {\n    if (!rangeUtil.isRelativeTimeRange(raw)) {\n      return;\n    }\n    return quickOptions.find((option) => {\n      return option.from === raw.from && option.to === raw.to;\n    });\n  }, [raw, quickOptions]);\n};\n\nconst getStyles = (\n  theme: GrafanaTheme2,\n  isReversed?: boolean,\n  hideQuickRanges?: boolean,\n  isContainerTall?: boolean,\n  isFullscreen?: boolean\n) => ({\n  container: css({\n    background: theme.colors.background.elevated,\n    boxShadow: theme.shadows.z3,\n    width: `${isFullscreen ? '546px' : '262px'}`,\n    borderRadius: theme.shape.radius.default,\n    border: `1px solid ${theme.colors.border.weak}`,\n    [`${isReversed ? 'left' : 'right'}`]: 0,\n    display: 'flex',\n    flexDirection: 'column',\n  }),\n  body: css({\n    display: 'flex',\n    flexDirection: 'row-reverse',\n    height: `${isContainerTall ? '381px' : '217px'}`,\n    maxHeight: '100vh',\n  }),\n  leftSide: css({\n    display: 'flex',\n    flexDirection: 'column',\n    borderRight: `${isReversed ? 'none' : `1px solid ${theme.colors.border.weak}`}`,\n    width: `${!hideQuickRanges ? '60%' : '100%'}`,\n    overflow: 'auto',\n    scrollbarWidth: 'thin',\n    order: isReversed ? 1 : 0,\n  }),\n  rightSide: css({\n    width: `${isFullscreen ? '40%' : '100%'}; !important`,\n    borderRight: isReversed ? `1px solid ${theme.colors.border.weak}` : 'none',\n    display: 'flex',\n    flexDirection: 'column',\n  }),\n  timeRangeFilter: css({\n    padding: theme.spacing(1),\n  }),\n  spacing: css({\n    marginTop: '16px',\n  }),\n  scrollContent: css({\n    overflowY: 'auto',\n    scrollbarWidth: 'thin',\n  }),\n});\n\nconst getNarrowScreenStyles = (theme: GrafanaTheme2) => ({\n  header: css({\n    display: 'flex',\n    flexDirection: 'row',\n    justifyContent: 'space-between',\n    alignItems: 'center',\n    borderBottom: `1px solid ${theme.colors.border.weak}`,\n    padding: '7px 9px 7px 9px',\n  }),\n  expandButton: css({\n    backgroundColor: 'transparent',\n    border: 'none',\n    display: 'flex',\n    width: '100%',\n\n    '&:focus-visible': getFocusStyles(theme),\n  }),\n  body: css({\n    borderBottom: `1px solid ${theme.colors.border.weak}`,\n  }),\n  form: css({\n    padding: '7px 9px 7px 9px',\n  }),\n});\n\nconst getFullScreenStyles = (theme: GrafanaTheme2, hideQuickRanges?: boolean) => ({\n  container: css({\n    paddingTop: '9px',\n    paddingLeft: '11px',\n    paddingRight: !hideQuickRanges ? '20%' : '11px',\n  }),\n  title: css({\n    marginBottom: '11px',\n  }),\n  recent: css({\n    flexGrow: 1,\n    display: 'flex',\n    flexDirection: 'column',\n    justifyContent: 'flex-end',\n    paddingTop: theme.spacing(1),\n  }),\n});\n\nconst getEmptyListStyles = (theme: GrafanaTheme2) => ({\n  container: css({\n    padding: '12px',\n    margin: '12px',\n\n    'a, span': {\n      fontSize: '13px',\n    },\n  }),\n});\n","import { ReactNode, createContext, useEffect, useMemo, useState, useContext } from 'react';\n\nimport { TimeRange } from '@grafana/data';\n\ntype TimeRangeContextValue = TimeRangeContextHookValue & {\n  // These are to be used internally and aren't passed to the users of the hook.\n\n  // Called when picker is mounted to update the picker count.\n  addPicker(): void;\n\n  // Called when picker is unmounted to update the picker count.\n  removePicker(): void;\n};\n\nexport type TimeRangeContextHookValue = {\n  // If the time range is synced, this is the value that all pickers should show.\n  syncedValue?: TimeRange;\n\n  // If the time range is synced across all visible pickers.\n  synced: boolean;\n\n  // If it is possible to sync the time range. This is based just on the number of pickers that are visible so if\n  // there is only one, the sync button can be hidden.\n  syncPossible: boolean;\n\n  // Action passed to the picker to interact with the sync state.\n  // Sync the time range across all pickers with the provided value. Can be also used just to update a value when\n  // already synced.\n  sync(value: TimeRange): void;\n  unSync(): void;\n};\n\nconst TimeRangeContext = createContext<TimeRangeContextValue | undefined>(undefined);\n\nexport function TimeRangeProvider({ children }: { children: ReactNode }) {\n  // We simply keep the count of the pickers visible by letting them call the addPicker and removePicker functions.\n  const [pickersCount, setPickersCount] = useState(0);\n  const [syncedValue, setSyncedValue] = useState<TimeRange>();\n\n  const contextVal = useMemo(() => {\n    return {\n      sync: (value: TimeRange) => setSyncedValue(value),\n      unSync: () => setSyncedValue(undefined),\n      addPicker: () => setPickersCount((val) => val + 1),\n      removePicker: () => {\n        setPickersCount((val) => {\n          const newVal = val - 1;\n          if (newVal < 2) {\n            setSyncedValue(undefined);\n          }\n          return newVal;\n        });\n      },\n      syncPossible: pickersCount > 1,\n      synced: Boolean(syncedValue),\n      syncedValue,\n    };\n  }, [pickersCount, syncedValue]);\n\n  return <TimeRangeContext.Provider value={contextVal}>{children}</TimeRangeContext.Provider>;\n}\n\nexport function useTimeRangeContext(initialSyncValue?: TimeRange): TimeRangeContextHookValue | undefined {\n  const context = useContext(TimeRangeContext);\n\n  // Automatically add and remove the picker when the component mounts and unmounts or if context changes (but that\n  // should not happen). We ignore the initialSyncValue to make this value really just an initial value and isn't a\n  // prop by which you could control the picker.\n  useEffect(() => {\n    // We want the pickers to still function even if they are not used in a context. Not sure, this will be a common\n    // usecase, but it does not seem like it will cost us anything.\n    if (context) {\n      context.addPicker();\n      if (initialSyncValue) {\n        context.sync(initialSyncValue);\n      }\n      return () => {\n        context.removePicker();\n      };\n    }\n    return () => {};\n    // We want to do this only on mount and unmount.\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  return useMemo(() => {\n    // We want the pickers to still function even if they are not used in a context. Not sure, this will be a common\n    // usecase, but it does not seem like it will cost us anything.\n    if (!context) {\n      return context;\n    }\n\n    // We just remove the addPicker/removePicker function as that is done automatically here and picker does not need\n    // them.\n    return {\n      sync: context.sync,\n      unSync: context.unSync,\n      syncPossible: context.syncPossible,\n      synced: context.synced,\n      syncedValue: context.syncedValue,\n    };\n  }, [context]);\n}\n","import { t } from '@grafana/i18n';\n\nimport { ToolbarButton } from '../ToolbarButton/ToolbarButton';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\ninterface TimeSyncButtonProps {\n  isSynced: boolean;\n  onClick: () => void;\n}\n\nexport function TimeSyncButton(props: TimeSyncButtonProps) {\n  const { onClick, isSynced } = props;\n\n  const syncTimesTooltip = () => {\n    const tooltip = isSynced ? 'Unsync all views' : 'Sync all views to this time range';\n    return <>{tooltip}</>;\n  };\n\n  return (\n    <Tooltip content={syncTimesTooltip} placement=\"bottom\">\n      <ToolbarButton\n        icon=\"link\"\n        variant={isSynced ? 'active' : 'canvas'}\n        aria-label={\n          isSynced\n            ? t('grafana-ui.time-sync-button.aria-label-unsync', 'Unsync times')\n            : t('grafana-ui.time-sync-button.aria-label-sync', 'Sync times')\n        }\n        onClick={onClick}\n      />\n    </Tooltip>\n  );\n}\n","import { useCallback, useEffect } from 'react';\nimport { usePrevious } from 'react-use';\n\nimport { TimeRange } from '@grafana/data';\n\nimport { useTimeRangeContext } from '../TimeRangeContext';\nimport { TimeSyncButton } from '../TimeSyncButton';\n\n/**\n * Handle the behaviour of the time sync button and syncing the time range between pickers. It also takes care of\n * backward compatibility with the manually controlled isSynced prop.\n * @param options\n */\nexport function useTimeSync(options: {\n  initialIsSynced?: boolean;\n  value: TimeRange;\n  isSyncedProp?: boolean;\n  timeSyncButtonProp?: JSX.Element;\n  onChangeProp: (value: TimeRange) => void;\n}) {\n  const { value, onChangeProp, isSyncedProp, initialIsSynced, timeSyncButtonProp } = options;\n  const timeRangeContext = useTimeRangeContext(initialIsSynced && value ? value : undefined);\n\n  // Destructure to make it easier to use in hook deps.\n  const timeRangeContextSynced = timeRangeContext?.synced;\n  const timeRangeContextSyncedValue = timeRangeContext?.syncedValue;\n  const timeRangeContextSyncFunc = timeRangeContext?.sync;\n\n  // This is to determine if we should use the context to sync or not. This is for backward compatibility so that\n  // Explore with multiple panes still works as it is controlling the sync state itself for now.\n  const usingTimeRangeContext = Boolean(options.isSyncedProp === undefined && timeRangeContext);\n\n  // Create new onChange that handles propagating the value to the context if possible and synced is true.\n  const onChangeWithSync = useCallback(\n    (timeRange: TimeRange) => {\n      onChangeProp(timeRange);\n      if (usingTimeRangeContext && timeRangeContextSynced) {\n        timeRangeContextSyncFunc?.(timeRange);\n      }\n    },\n    [onChangeProp, usingTimeRangeContext, timeRangeContextSyncFunc, timeRangeContextSynced]\n  );\n\n  const prevValue = usePrevious(value);\n  const prevSyncedValue = usePrevious(timeRangeContext?.syncedValue);\n\n  // As timepicker is controlled component we need to sync the global sync value back to the parent with onChange\n  // handler whenever the outside global value changes. We do it here while checking if we are actually supposed\n  // to and making sure we don't go into a loop.\n  useEffect(() => {\n    // only react if we are actually synced\n    if (usingTimeRangeContext && timeRangeContextSynced) {\n      if (value !== prevValue && value !== timeRangeContextSyncedValue) {\n        // The value changed outside the picker. To keep the sync working we need to update the synced value.\n        timeRangeContextSyncFunc?.(value);\n      } else if (\n        timeRangeContextSyncedValue &&\n        timeRangeContextSyncedValue !== prevSyncedValue &&\n        timeRangeContextSyncedValue !== value\n      ) {\n        // The global synced value changed, so we need to update the picker value.\n        onChangeProp(timeRangeContextSyncedValue);\n      }\n    }\n  }, [\n    usingTimeRangeContext,\n    timeRangeContextSynced,\n    timeRangeContextSyncedValue,\n    timeRangeContextSyncFunc,\n    prevSyncedValue,\n    value,\n    prevValue,\n    onChangeProp,\n  ]);\n\n  // Decide if we are in synced state or not. This is complicated by the manual controlled isSynced prop that is used\n  // in Explore for now.\n  const isSynced = usingTimeRangeContext ? timeRangeContext?.synced : isSyncedProp;\n\n  // Again in Explore the sync button is controlled prop so here we also decide what kind of button to use.\n  const button = usingTimeRangeContext\n    ? timeRangeContext?.syncPossible && (\n        <TimeSyncButton\n          isSynced={timeRangeContext?.synced}\n          onClick={() => (timeRangeContext?.synced ? timeRangeContext.unSync() : timeRangeContext.sync(value))}\n        />\n      )\n    : timeSyncButtonProp;\n\n  return {\n    onChangeWithSync,\n    isSynced,\n    timeSyncButton: button,\n  };\n}\n","import { css, cx } from '@emotion/css';\nimport { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay } from '@react-aria/overlays';\nimport { memo, createRef, useState, useEffect } from 'react';\n\nimport {\n  rangeUtil,\n  GrafanaTheme2,\n  dateTimeFormat,\n  timeZoneFormatUserFriendly,\n  TimeOption,\n  TimeRange,\n  TimeZone,\n  dateMath,\n  getTimeZoneInfo,\n} from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { ButtonGroup } from '../Button/ButtonGroup';\nimport { getModalStyles } from '../Modal/getModalStyles';\nimport { getPortalContainer } from '../Portal/Portal';\nimport { ToolbarButton } from '../ToolbarButton/ToolbarButton';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\nimport { TimePickerContent } from './TimeRangePicker/TimePickerContent';\nimport { TimeZoneDescription } from './TimeZonePicker/TimeZoneDescription';\nimport { WeekStart } from './WeekStartPicker';\nimport { getQuickOptions } from './options';\nimport { useTimeSync } from './utils/useTimeSync';\n\n/** @public */\nexport interface TimeRangePickerProps {\n  hideText?: boolean;\n  value: TimeRange;\n  timeZone?: TimeZone;\n  fiscalYearStartMonth?: number;\n\n  /**\n   * If you handle sync state between pickers yourself use this prop to pass the sync button component.\n   * Otherwise, a default one will show automatically if sync is possible.\n   */\n  timeSyncButton?: JSX.Element;\n\n  // Use to manually set the synced styles for the time range picker if you need to control the sync state yourself.\n  isSynced?: boolean;\n\n  // Use to manually set the initial sync state for the time range picker. It will use the current value to sync.\n  initialIsSynced?: boolean;\n\n  onChange: (timeRange: TimeRange) => void;\n  onChangeTimeZone: (timeZone: TimeZone) => void;\n  onChangeFiscalYearStartMonth?: (month: number) => void;\n  onMoveBackward: () => void;\n  onMoveForward: () => void;\n  onZoom: () => void;\n  onError?: (error?: string) => void;\n  history?: TimeRange[];\n  quickRanges?: TimeOption[];\n  hideQuickRanges?: boolean;\n  widthOverride?: number;\n  isOnCanvas?: boolean;\n  onToolbarTimePickerClick?: () => void;\n  /** Which day of the week the calendar should start on. Possible values: \"saturday\", \"sunday\" or \"monday\" */\n  weekStart?: WeekStart;\n}\n\nexport interface State {\n  isOpen: boolean;\n}\n\nexport function TimeRangePicker(props: TimeRangePickerProps) {\n  const [isOpen, setOpen] = useState(false);\n\n  const {\n    value,\n    onMoveBackward,\n    onMoveForward,\n    onZoom,\n    onError,\n    timeZone,\n    fiscalYearStartMonth,\n    history,\n    onChangeTimeZone,\n    onChangeFiscalYearStartMonth,\n    quickRanges,\n    hideQuickRanges,\n    widthOverride,\n    isOnCanvas,\n    onToolbarTimePickerClick,\n    weekStart,\n    initialIsSynced,\n  } = props;\n\n  const { onChangeWithSync, isSynced, timeSyncButton } = useTimeSync({\n    initialIsSynced,\n    value,\n    onChangeProp: props.onChange,\n    isSyncedProp: props.isSynced,\n    timeSyncButtonProp: props.timeSyncButton,\n  });\n\n  const onChange = (timeRange: TimeRange) => {\n    onChangeWithSync(timeRange);\n    setOpen(false);\n  };\n\n  useEffect(() => {\n    if (isOpen && onToolbarTimePickerClick) {\n      onToolbarTimePickerClick();\n    }\n  }, [isOpen, onToolbarTimePickerClick]);\n\n  const onToolbarButtonSwitch = () => {\n    setOpen((prevState) => !prevState);\n  };\n\n  const onClose = () => {\n    setOpen(false);\n  };\n\n  const overlayRef = createRef<HTMLElement>();\n  const buttonRef = createRef<HTMLElement>();\n  const { overlayProps, underlayProps } = useOverlay(\n    {\n      onClose,\n      isDismissable: true,\n      isOpen,\n      shouldCloseOnInteractOutside: (element) => {\n        const portalContainer = getPortalContainer();\n        return !buttonRef.current?.contains(element) && !portalContainer.contains(element);\n      },\n    },\n    overlayRef\n  );\n  const { dialogProps } = useDialog({}, overlayRef);\n\n  const styles = useStyles2(getStyles);\n  const { modalBackdrop } = useStyles2(getModalStyles);\n\n  const variant = isSynced ? 'active' : isOnCanvas ? 'canvas' : 'default';\n\n  const isFromAfterTo = value?.to?.isBefore(value.from);\n  const timePickerIcon = isFromAfterTo ? 'exclamation-triangle' : 'clock-nine';\n\n  const currentTimeRange = formattedRange(value, timeZone, quickRanges);\n\n  return (\n    <ButtonGroup className={styles.container}>\n      <ToolbarButton\n        aria-label={t('time-picker.range-picker.backwards-time-aria-label', 'Move time range backwards')}\n        variant={variant}\n        onClick={onMoveBackward}\n        icon=\"angle-left\"\n        type=\"button\"\n        narrow\n      />\n\n      <Tooltip\n        ref={buttonRef}\n        content={<TimePickerTooltip timeRange={value} timeZone={timeZone} />}\n        placement=\"bottom\"\n        interactive\n      >\n        <ToolbarButton\n          data-testid={selectors.components.TimePicker.openButton}\n          aria-label={t('time-picker.range-picker.current-time-selected', 'Time range selected: {{currentTimeRange}}', {\n            currentTimeRange,\n          })}\n          aria-controls=\"TimePickerContent\"\n          onClick={onToolbarButtonSwitch}\n          icon={timePickerIcon}\n          isOpen={isOpen}\n          type=\"button\"\n          variant={variant}\n        >\n          <TimePickerButtonLabel {...props} />\n        </ToolbarButton>\n      </Tooltip>\n      {isOpen && (\n        <div data-testid={selectors.components.TimePicker.overlayContent}>\n          <div role=\"presentation\" className={cx(modalBackdrop, styles.backdrop)} {...underlayProps} />\n          <FocusScope contain autoFocus restoreFocus>\n            <section className={styles.content} ref={overlayRef} {...overlayProps} {...dialogProps}>\n              <TimePickerContent\n                timeZone={timeZone}\n                fiscalYearStartMonth={fiscalYearStartMonth}\n                value={value}\n                onChange={onChange}\n                quickOptions={quickRanges || getQuickOptions()}\n                history={history}\n                showHistory\n                widthOverride={widthOverride}\n                onChangeTimeZone={onChangeTimeZone}\n                onChangeFiscalYearStartMonth={onChangeFiscalYearStartMonth}\n                hideQuickRanges={hideQuickRanges}\n                onError={onError}\n                weekStart={weekStart}\n              />\n            </section>\n          </FocusScope>\n        </div>\n      )}\n\n      {timeSyncButton}\n\n      <ToolbarButton\n        aria-label={t('time-picker.range-picker.forwards-time-aria-label', 'Move time range forwards')}\n        onClick={onMoveForward}\n        icon=\"angle-right\"\n        narrow\n        type=\"button\"\n        variant={variant}\n      />\n\n      <Tooltip content={ZoomOutTooltip} placement=\"bottom\">\n        <ToolbarButton\n          aria-label={t('time-picker.range-picker.zoom-out-button', 'Zoom out time range')}\n          onClick={onZoom}\n          icon=\"search-minus\"\n          type=\"button\"\n          variant={variant}\n        />\n      </Tooltip>\n    </ButtonGroup>\n  );\n}\n\nTimeRangePicker.displayName = 'TimeRangePicker';\n\nconst ZoomOutTooltip = () => (\n  <>\n    <Trans i18nKey=\"time-picker.range-picker.zoom-out-tooltip\">\n      Time range zoom out <br /> CTRL+Z\n    </Trans>\n  </>\n);\n\nexport const TimePickerTooltip = ({ timeRange, timeZone }: { timeRange: TimeRange; timeZone?: TimeZone }) => {\n  const styles = useStyles2(getLabelStyles);\n  const now = Date.now();\n\n  // Get timezone info only if timeZone is provided\n  const timeZoneInfo = timeZone ? getTimeZoneInfo(timeZone, now) : undefined;\n\n  return (\n    <>\n      <div className=\"text-center\">\n        {dateTimeFormat(timeRange.from, { timeZone })}\n        <div className=\"text-center\">\n          <Trans i18nKey=\"time-picker.range-picker.to\">to</Trans>\n        </div>\n        {dateTimeFormat(timeRange.to, { timeZone })}\n      </div>\n      <div className={styles.container}>\n        <span className={styles.utc}>{timeZoneFormatUserFriendly(timeZone)}</span>\n        <TimeZoneDescription info={timeZoneInfo} />\n      </div>\n    </>\n  );\n};\n\ntype LabelProps = Pick<TimeRangePickerProps, 'hideText' | 'value' | 'timeZone' | 'quickRanges'>;\n\nexport const TimePickerButtonLabel = memo<LabelProps>(({ hideText, value, timeZone, quickRanges }) => {\n  const styles = useStyles2(getLabelStyles);\n\n  if (hideText) {\n    return null;\n  }\n\n  return (\n    <span className={styles.container} aria-live=\"polite\" aria-atomic=\"true\">\n      <span>{formattedRange(value, timeZone, quickRanges)}</span>\n      <span className={styles.utc}>{rangeUtil.describeTimeRangeAbbreviation(value, timeZone)}</span>\n    </span>\n  );\n});\n\nTimePickerButtonLabel.displayName = 'TimePickerButtonLabel';\n\nconst formattedRange = (value: TimeRange, timeZone?: TimeZone, quickRanges?: TimeOption[]) => {\n  const adjustedTimeRange = {\n    to: dateMath.isMathString(value.raw.to) ? value.raw.to : value.to,\n    from: dateMath.isMathString(value.raw.from) ? value.raw.from : value.from,\n  };\n  return rangeUtil.describeTimeRange(adjustedTimeRange, timeZone, quickRanges);\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      position: 'relative',\n      display: 'flex',\n      verticalAlign: 'middle',\n    }),\n    backdrop: css({\n      display: 'none',\n      [theme.breakpoints.down('sm')]: {\n        display: 'block',\n      },\n    }),\n    content: css({\n      position: 'absolute',\n      right: 0,\n      top: '116%',\n      zIndex: theme.zIndex.dropdown,\n\n      [theme.breakpoints.down('sm')]: {\n        position: 'fixed',\n        right: '50%',\n        top: '50%',\n        transform: 'translate(50%, -50%)',\n        zIndex: theme.zIndex.modal,\n      },\n    }),\n  };\n};\n\nconst getLabelStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      display: 'flex',\n      alignItems: 'center',\n      whiteSpace: 'nowrap',\n      columnGap: theme.spacing(0.5),\n    }),\n    utc: css({\n      color: theme.v1.palette.orange,\n      fontSize: theme.typography.size.sm,\n      paddingLeft: '6px',\n      lineHeight: '28px',\n      verticalAlign: 'bottom',\n      fontWeight: theme.typography.fontWeightMedium,\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport { memo } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { TimePickerButtonLabel, TimeRangePickerProps } from '../TimeRangePicker';\nimport { isValidTimeRange } from '../utils';\n\ntype LabelProps = Pick<TimeRangePickerProps, 'hideText' | 'value' | 'timeZone'> & {\n  placeholder?: string;\n  className?: string;\n};\n\nexport const TimeRangeLabel = memo<LabelProps>(function TimePickerLabel({\n  hideText,\n  value,\n  timeZone = 'browser',\n  placeholder = 'No time range selected',\n  className,\n}) {\n  const styles = useStyles2(getLabelStyles);\n\n  if (hideText) {\n    return null;\n  }\n\n  return (\n    <span className={className}>\n      {isValidTimeRange(value) ? (\n        <TimePickerButtonLabel value={value} timeZone={timeZone} />\n      ) : (\n        <span className={styles.placeholder}>{placeholder}</span>\n      )}\n    </span>\n  );\n});\n\nconst getLabelStyles = (theme: GrafanaTheme2) => {\n  return {\n    placeholder: css({\n      color: theme.colors.text.disabled,\n      opacity: 1,\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { Moment } from 'moment';\nimport RcPicker, { PickerProps } from 'rc-picker';\nimport generateConfig from 'rc-picker/lib/generate/moment';\nimport locale from 'rc-picker/lib/locale/en_US';\n\nimport { dateTime, DateTime, dateTimeAsMoment, GrafanaTheme2, isDateTimeInput } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { inputSizes } from '../Forms/commonStyles';\nimport { FormInputSize } from '../Forms/types';\nimport { Icon } from '../Icon/Icon';\nimport 'rc-picker/assets/index.css';\n\ninterface BaseProps {\n  onChange: (value: DateTime) => void | ((value?: DateTime) => void);\n  value?: DateTime;\n  showHour?: boolean;\n  showSeconds?: boolean;\n  minuteStep?: PickerProps['minuteStep'];\n  size?: FormInputSize;\n  disabled?: boolean;\n  disabledHours?: () => number[];\n  disabledMinutes?: () => number[];\n  disabledSeconds?: () => number[];\n  placeholder?: string;\n  allowEmpty?: boolean;\n  id?: string;\n}\n\ninterface AllowEmptyProps extends BaseProps {\n  allowEmpty: true;\n  onChange: (value?: DateTime) => void;\n}\n\ninterface NoAllowEmptyProps extends BaseProps {\n  allowEmpty?: false;\n  onChange: (value: DateTime) => void;\n}\n\nexport type Props = AllowEmptyProps | NoAllowEmptyProps;\n\nexport const POPUP_CLASS_NAME = 'time-of-day-picker-panel';\n\nexport const TimeOfDayPicker = ({\n  minuteStep = 1,\n  showHour = true,\n  showSeconds = false,\n  value,\n  size = 'auto',\n  disabled,\n  disabledHours,\n  disabledMinutes,\n  disabledSeconds,\n  id,\n  placeholder,\n  // note: we can't destructure allowEmpty/onChange here\n  // in order to discriminate the types properly later in the onChange handler\n  ...restProps\n}: Props) => {\n  const styles = useStyles2(getStyles);\n  const allowClear = restProps.allowEmpty ?? false;\n\n  return (\n    <RcPicker<Moment>\n      id={id}\n      generateConfig={generateConfig}\n      locale={locale}\n      allowClear={\n        allowClear && {\n          clearIcon: <Icon name=\"times\" className={styles.clearIcon} />,\n        }\n      }\n      className={cx(inputSizes()[size], styles.input)}\n      classNames={{\n        popup: cx(styles.picker, POPUP_CLASS_NAME),\n      }}\n      defaultValue={restProps.allowEmpty ? undefined : dateTimeAsMoment()}\n      disabled={disabled}\n      disabledTime={() => ({\n        disabledHours,\n        disabledMinutes,\n        disabledSeconds,\n      })}\n      format={generateFormat(showHour, showSeconds)}\n      minuteStep={minuteStep}\n      onChange={(value) => {\n        if (isDateTimeInput(value)) {\n          if (restProps.allowEmpty) {\n            return restProps.onChange(value ? dateTime(value) : undefined);\n          } else {\n            return restProps.onChange(dateTime(value));\n          }\n        }\n      }}\n      picker=\"time\"\n      placeholder={placeholder}\n      showNow={false}\n      needConfirm={false}\n      suffixIcon={<Caret wrapperStyle={styles.caretWrapper} />}\n      value={value ? dateTimeAsMoment(value) : value}\n    />\n  );\n};\n\nfunction generateFormat(showHour = true, showSeconds = false) {\n  const maybeHour = showHour ? 'HH:' : '';\n  const maybeSecond = showSeconds ? ':ss' : '';\n  return maybeHour + 'mm' + maybeSecond;\n}\n\ninterface CaretProps {\n  wrapperStyle?: string;\n}\n\nconst Caret = ({ wrapperStyle = '' }: CaretProps) => {\n  return (\n    <div className={wrapperStyle}>\n      <Icon name=\"angle-down\" />\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const bgColor = theme.components.input.background;\n  const optionBgHover = theme.colors.action.hover;\n  const borderRadius = theme.shape.radius.default;\n  const borderColor = theme.components.input.borderColor;\n\n  return {\n    caretWrapper: css({\n      position: 'relative',\n      top: '50%',\n      transform: 'translateY(-50%)',\n      display: 'inline-block',\n      color: theme.colors.text.secondary,\n    }),\n    clearIcon: css({\n      color: theme.colors.text.secondary,\n\n      '&:hover': {\n        color: theme.colors.text.maxContrast,\n      },\n    }),\n    picker: css({\n      '&.rc-picker-dropdown': {\n        boxShadow: 'none',\n        zIndex: theme.zIndex.portal,\n      },\n      '.rc-picker-time-panel-column': {\n        fontSize: theme.typography.htmlFontSize,\n        backgroundColor: bgColor,\n        color: theme.colors.text.secondary,\n        padding: 'unset',\n        overflowY: 'auto',\n        scrollbarWidth: 'thin',\n        width: theme.spacing(8),\n        li: {\n          paddingRight: theme.spacing(2),\n          width: 'auto',\n          '&.rc-picker-time-panel-cell-selected': {\n            backgroundColor: 'inherit',\n            border: `1px solid ${theme.colors.action.selectedBorder}`,\n            borderRadius,\n            color: theme.colors.text.primary,\n          },\n\n          '&:hover': {\n            background: optionBgHover,\n            color: theme.colors.text.primary,\n          },\n\n          '&.rc-picker-time-panel-cell-disabled': {\n            color: theme.colors.action.disabledText,\n          },\n        },\n\n        '.rc-picker-time-panel-cell-inner': {\n          color: 'inherit',\n        },\n\n        '&:not(:last-of-type)': {\n          borderRight: `1px solid ${borderColor}`,\n        },\n      },\n\n      '.rc-picker-panel': {\n        boxShadow: theme.shadows.z3,\n        backgroundColor: bgColor,\n        borderColor,\n        borderRadius,\n        overflow: 'hidden',\n      },\n    }),\n    input: css({\n      '&.rc-picker-focused': {\n        border: 'none',\n\n        '.rc-picker-input': getFocusStyles(theme),\n      },\n\n      '&.rc-picker-disabled': {\n        '.rc-picker-input': {\n          backgroundColor: theme.colors.action.disabledBackground,\n          color: theme.colors.action.disabledText,\n          border: `1px solid ${theme.colors.action.disabledBackground}`,\n          '&:focus': {\n            boxShadow: 'none',\n          },\n        },\n      },\n\n      '.rc-picker-input': {\n        backgroundColor: bgColor,\n        borderRadius,\n        borderColor,\n        borderStyle: 'solid',\n        borderWidth: '1px',\n        color: theme.colors.text.primary,\n        height: theme.spacing(4),\n        padding: theme.spacing(0, 1),\n\n        input: {\n          color: 'unset',\n          backgroundColor: 'unset',\n          '&:focus': {\n            outline: 'none',\n          },\n\n          '&::placeholder': {\n            color: theme.colors.text.disabled,\n          },\n        },\n      },\n\n      '.rc-picker-clear': {\n        alignItems: 'center',\n        display: 'flex',\n        insetInlineEnd: 'unset',\n        position: 'relative',\n      },\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport { memo } from 'react';\nimport Calendar from 'react-calendar';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { ClickOutsideWrapper } from '../../ClickOutsideWrapper/ClickOutsideWrapper';\nimport { Icon } from '../../Icon/Icon';\nimport { getBodyStyles } from '../TimeRangePicker/CalendarBody';\n\n/** @public */\nexport interface DatePickerProps {\n  isOpen?: boolean;\n  onClose: () => void;\n  onChange: (value: Date) => void;\n  value?: Date;\n  minDate?: Date;\n  maxDate?: Date;\n}\n\n/** @public */\nexport const DatePicker = memo<DatePickerProps>((props) => {\n  const styles = useStyles2(getStyles);\n  const { isOpen, onClose } = props;\n\n  if (!isOpen) {\n    return null;\n  }\n\n  return (\n    <ClickOutsideWrapper useCapture={true} includeButtonPress={false} onClick={onClose}>\n      <div className={styles.modal} data-testid=\"date-picker\">\n        <Body {...props} />\n      </div>\n    </ClickOutsideWrapper>\n  );\n});\n\nDatePicker.displayName = 'DatePicker';\n\nconst Body = memo<DatePickerProps>(({ value, minDate, maxDate, onChange }) => {\n  const styles = useStyles2(getBodyStyles);\n\n  return (\n    <Calendar\n      className={styles.body}\n      tileClassName={styles.title}\n      value={value || new Date()}\n      minDate={minDate}\n      maxDate={maxDate}\n      nextLabel={<Icon name=\"angle-right\" />}\n      prevLabel={<Icon name=\"angle-left\" />}\n      onChange={(ev) => {\n        if (ev && !Array.isArray(ev)) {\n          onChange(ev);\n        }\n      }}\n      locale=\"en\"\n    />\n  );\n});\n\nBody.displayName = 'Body';\n\nexport const getStyles = (theme: GrafanaTheme2) => {\n  return {\n    modal: css({\n      zIndex: theme.zIndex.modal,\n      boxShadow: theme.shadows.z3,\n      backgroundColor: theme.colors.background.primary,\n      border: `1px solid ${theme.colors.border.weak}`,\n      borderTopLeftRadius: theme.shape.radius.default,\n      borderBottomLeftRadius: theme.shape.radius.default,\n\n      'button:disabled': {\n        color: theme.colors.text.disabled,\n      },\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport { autoUpdate, flip, shift, useClick, useDismiss, useFloating, useInteractions } from '@floating-ui/react';\nimport { ChangeEvent, forwardRef, useImperativeHandle, useState } from 'react';\n\nimport { GrafanaTheme2, dateTime } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { Props as InputProps, Input } from '../../Input/Input';\nimport { DatePicker } from '../DatePicker/DatePicker';\n\nexport const formatDate = (date: Date | string) => dateTime(date).format('L');\n\n/** @public */\nexport interface DatePickerWithInputProps extends Omit<InputProps, 'value' | 'onChange'> {\n  /** Value selected by the DatePicker */\n  value?: Date | string;\n  /** The minimum date the value can be set to */\n  minDate?: Date;\n  /** The maximum date the value can be set to */\n  maxDate?: Date;\n  /** Handles changes when a new date is selected */\n  onChange: (value: Date | string) => void;\n  /** Hide the calendar when date is selected */\n  closeOnSelect?: boolean;\n  /** Text that appears when the input has no text */\n  placeholder?: string;\n}\n\n/** @public */\nexport const DatePickerWithInput = forwardRef<HTMLInputElement, DatePickerWithInputProps>(\n  ({ value, minDate, maxDate, onChange, closeOnSelect, placeholder = 'Date', ...rest }, ref) => {\n    const [open, setOpen] = useState(false);\n    const styles = useStyles2(getStyles);\n\n    // the order of middleware is important!\n    // see https://floating-ui.com/docs/arrow#order\n    const middleware = [\n      flip({\n        // see https://floating-ui.com/docs/flip#combining-with-shift\n        crossAxis: false,\n        boundary: document.body,\n      }),\n      shift(),\n    ];\n\n    const { context, refs, floatingStyles } = useFloating<HTMLInputElement>({\n      open,\n      placement: 'bottom-start',\n      onOpenChange: setOpen,\n      middleware,\n      whileElementsMounted: autoUpdate,\n      strategy: 'fixed',\n    });\n\n    const click = useClick(context);\n    const dismiss = useDismiss(context);\n    const { getReferenceProps, getFloatingProps } = useInteractions([dismiss, click]);\n\n    useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(ref, () => refs.domReference.current, [\n      refs.domReference,\n    ]);\n\n    return (\n      <div className={styles.container}>\n        <Input\n          ref={refs.setReference}\n          type=\"text\"\n          autoComplete={'off'}\n          placeholder={placeholder}\n          value={value ? formatDate(value) : value}\n          onChange={(ev: ChangeEvent<HTMLInputElement>) => {\n            // Allow resetting the date\n            if (ev.target.value === '') {\n              onChange('');\n            }\n          }}\n          className={styles.input}\n          {...rest}\n          {...getReferenceProps()}\n        />\n        <div className={styles.popover} ref={refs.setFloating} style={floatingStyles} {...getFloatingProps()}>\n          <DatePicker\n            isOpen={open}\n            value={value && typeof value !== 'string' ? value : dateTime().toDate()}\n            minDate={minDate}\n            maxDate={maxDate}\n            onChange={(ev) => {\n              onChange(ev);\n              if (closeOnSelect) {\n                setOpen(false);\n              }\n            }}\n            onClose={() => setOpen(false)}\n          />\n        </div>\n      </div>\n    );\n  }\n);\n\nDatePickerWithInput.displayName = 'DatePickerWithInput';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      position: 'relative',\n    }),\n    input: css({\n      /* hides the native Calendar picker icon given when using type=date */\n      \"input[type='date']::-webkit-inner-spin-button, input[type='date']::-webkit-calendar-picker-indicator\": {\n        display: 'none',\n        WebkitAppearance: 'none',\n      },\n    }),\n    popover: css({\n      zIndex: theme.zIndex.tooltip,\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { autoUpdate, flip, shift, useFloating } from '@floating-ui/react';\nimport { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay } from '@react-aria/overlays';\nimport { FormEvent, ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport * as React from 'react';\nimport Calendar from 'react-calendar';\nimport { useMedia } from 'react-use';\n\nimport {\n  dateTimeFormat,\n  DateTime,\n  dateTime,\n  GrafanaTheme2,\n  isDateTime,\n  dateTimeForTimeZone,\n  getTimeZone,\n  TimeZone,\n} from '@grafana/data';\nimport { Components } from '@grafana/e2e-selectors';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2, useTheme2 } from '../../../themes/ThemeContext';\nimport { Button } from '../../Button/Button';\nimport { InlineField } from '../../Forms/InlineField';\nimport { Icon } from '../../Icon/Icon';\nimport { Input } from '../../Input/Input';\nimport { Stack } from '../../Layout/Stack/Stack';\nimport { getModalStyles } from '../../Modal/getModalStyles';\nimport { Portal } from '../../Portal/Portal';\nimport { TimeOfDayPicker, POPUP_CLASS_NAME } from '../TimeOfDayPicker';\nimport { getBodyStyles } from '../TimeRangePicker/CalendarBody';\nimport { isValid } from '../utils';\nimport { adjustDateForReactCalendar } from '../utils/adjustDateForReactCalendar';\n\nexport interface Props {\n  /** Input date for the component */\n  date?: DateTime;\n  /** Callback for returning the selected date */\n  onChange: (date?: DateTime) => void;\n  /** label for the input field */\n  label?: ReactNode;\n  /** Set the latest selectable date */\n  maxDate?: Date;\n  /** Set the minimum selectable date */\n  minDate?: Date;\n  /** Display seconds on the time picker */\n  showSeconds?: boolean;\n  /** Set the hours that can't be selected */\n  disabledHours?: () => number[];\n  /** Set the minutes that can't be selected */\n  disabledMinutes?: () => number[];\n  /** Set the seconds that can't be selected */\n  disabledSeconds?: () => number[];\n  /** Can input be cleared/have empty values */\n  clearable?: boolean;\n  /** Custom timezone for the date/time display */\n  timeZone?: TimeZone;\n}\n\nexport const DateTimePicker = ({\n  date,\n  maxDate,\n  minDate,\n  label,\n  onChange,\n  disabledHours,\n  disabledMinutes,\n  disabledSeconds,\n  timeZone,\n  showSeconds = true,\n  clearable = false,\n}: Props) => {\n  const [isOpen, setOpen] = useState(false);\n\n  const ref = useRef<HTMLDivElement>(null);\n  const { overlayProps, underlayProps } = useOverlay(\n    {\n      onClose: () => setOpen(false),\n      isDismissable: true,\n      isOpen,\n      shouldCloseOnInteractOutside: (element) => {\n        const popupElement = document.getElementsByClassName(POPUP_CLASS_NAME)[0];\n        return !(popupElement && popupElement.contains(element));\n      },\n    },\n    ref\n  );\n  const { dialogProps } = useDialog({}, ref);\n\n  const theme = useTheme2();\n  const { modalBackdrop } = useStyles2(getModalStyles);\n  const isFullscreen = useMedia(`(min-width: ${theme.breakpoints.values.lg}px)`);\n  const styles = useStyles2(getStyles);\n\n  // the order of middleware is important!\n  // see https://floating-ui.com/docs/arrow#order\n  const middleware = [\n    flip({\n      // see https://floating-ui.com/docs/flip#combining-with-shift\n      crossAxis: false,\n      boundary: document.body,\n    }),\n    shift(),\n  ];\n\n  const { refs, floatingStyles } = useFloating({\n    open: isOpen,\n    placement: 'bottom-start',\n    onOpenChange: setOpen,\n    middleware,\n    whileElementsMounted: autoUpdate,\n    strategy: 'fixed',\n  });\n\n  const onApply = useCallback(\n    (date: DateTime) => {\n      setOpen(false);\n      onChange(date);\n    },\n    [onChange]\n  );\n\n  const onOpen = useCallback(\n    (event: FormEvent<HTMLElement>) => {\n      event.preventDefault();\n      setOpen(true);\n    },\n    [setOpen]\n  );\n\n  return (\n    <div data-testid=\"date-time-picker\" style={{ position: 'relative' }}>\n      <DateTimeInput\n        date={date}\n        onChange={onChange}\n        isFullscreen={isFullscreen}\n        onOpen={onOpen}\n        label={label}\n        ref={refs.setReference}\n        showSeconds={showSeconds}\n        clearable={clearable}\n        timeZone={timeZone}\n      />\n      {isOpen ? (\n        isFullscreen ? (\n          <Portal>\n            <FocusScope contain autoFocus restoreFocus>\n              <div ref={ref} {...overlayProps} {...dialogProps}>\n                <DateTimeCalendar\n                  date={date}\n                  onChange={onApply}\n                  isFullscreen={true}\n                  onClose={() => setOpen(false)}\n                  maxDate={maxDate}\n                  minDate={minDate}\n                  ref={refs.setFloating}\n                  style={floatingStyles}\n                  showSeconds={showSeconds}\n                  disabledHours={disabledHours}\n                  disabledMinutes={disabledMinutes}\n                  disabledSeconds={disabledSeconds}\n                  timeZone={timeZone}\n                />\n              </div>\n            </FocusScope>\n          </Portal>\n        ) : (\n          <Portal>\n            <div className={modalBackdrop} {...underlayProps} />\n            <FocusScope contain autoFocus restoreFocus>\n              <div ref={ref} {...overlayProps} {...dialogProps}>\n                <div className={styles.modal}>\n                  <DateTimeCalendar\n                    date={date}\n                    maxDate={maxDate}\n                    minDate={minDate}\n                    onChange={onApply}\n                    isFullscreen={false}\n                    onClose={() => setOpen(false)}\n                    showSeconds={showSeconds}\n                    disabledHours={disabledHours}\n                    disabledMinutes={disabledMinutes}\n                    disabledSeconds={disabledSeconds}\n                    timeZone={timeZone}\n                  />\n                </div>\n              </div>\n            </FocusScope>\n          </Portal>\n        )\n      ) : null}\n    </div>\n  );\n};\n\ninterface DateTimeCalendarProps extends Omit<Props, 'label' | 'clearable' | 'onChange'> {\n  onChange: (date: DateTime) => void;\n  onClose: () => void;\n  isFullscreen: boolean;\n  style?: React.CSSProperties;\n}\n\ntype InputProps = Pick<Props, 'onChange' | 'label' | 'date' | 'showSeconds' | 'clearable' | 'timeZone'> & {\n  isFullscreen: boolean;\n  onOpen: (event: FormEvent<HTMLElement>) => void;\n};\n\ntype InputState = {\n  value: string;\n  invalid: boolean;\n};\n\nconst DateTimeInput = React.forwardRef<HTMLInputElement, InputProps>(\n  ({ date, label, onChange, onOpen, timeZone, showSeconds = true, clearable = false }, ref) => {\n    const styles = useStyles2(getStyles);\n    const format = showSeconds ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD HH:mm';\n    const [internalDate, setInternalDate] = useState<InputState>(() => {\n      return {\n        value: date ? dateTimeFormat(date, { timeZone }) : !clearable ? dateTimeFormat(dateTime(), { timeZone }) : '',\n        invalid: false,\n      };\n    });\n\n    useEffect(() => {\n      if (date) {\n        const formattedDate = dateTimeFormat(date, { format, timeZone });\n        setInternalDate({\n          invalid: !isValid(formattedDate),\n          value: isDateTime(date) ? formattedDate : date,\n        });\n      }\n    }, [date, format, timeZone]);\n\n    const onChangeDate = useCallback((event: FormEvent<HTMLInputElement>) => {\n      const isInvalid = !isValid(event.currentTarget.value);\n      setInternalDate({\n        value: event.currentTarget.value,\n        invalid: isInvalid,\n      });\n    }, []);\n\n    const onBlur = useCallback(() => {\n      if (!internalDate.invalid && internalDate.value) {\n        const date = dateTimeForTimeZone(getTimeZone({ timeZone }), internalDate.value);\n        onChange(date);\n      }\n    }, [internalDate, onChange, timeZone]);\n\n    const clearInternalDate = useCallback(() => {\n      setInternalDate({ value: '', invalid: false });\n      onChange();\n    }, [onChange]);\n\n    const icon = (\n      <Button\n        aria-label={t('grafana-ui.date-time-picker.calendar-icon-label', 'Time picker')}\n        icon=\"calendar-alt\"\n        variant=\"secondary\"\n        onClick={onOpen}\n      />\n    );\n    return (\n      <InlineField label={label} invalid={!!(internalDate.value && internalDate.invalid)} className={styles.field}>\n        <Input\n          onChange={onChangeDate}\n          addonAfter={icon}\n          value={internalDate.value}\n          onBlur={onBlur}\n          data-testid={Components.DateTimePicker.input}\n          placeholder={t('grafana-ui.date-time-picker.select-placeholder', 'Select date/time')}\n          ref={ref}\n          suffix={\n            clearable &&\n            internalDate.value && <Icon name=\"times\" className={styles.clearIcon} onClick={clearInternalDate} />\n          }\n        />\n      </InlineField>\n    );\n  }\n);\n\nDateTimeInput.displayName = 'DateTimeInput';\n\nconst DateTimeCalendar = React.forwardRef<HTMLDivElement, DateTimeCalendarProps>(\n  (\n    {\n      date,\n      onClose,\n      onChange,\n      isFullscreen,\n      maxDate,\n      minDate,\n      style,\n      showSeconds = true,\n      disabledHours,\n      disabledMinutes,\n      disabledSeconds,\n      timeZone,\n    },\n    ref\n  ) => {\n    const calendarStyles = useStyles2(getBodyStyles);\n    const styles = useStyles2(getStyles);\n\n    // need to keep these 2 separate in state since react-calendar doesn't support different timezones\n    const [timeOfDayDateTime, setTimeOfDayDateTime] = useState(() => {\n      if (date && date.isValid()) {\n        return dateTimeForTimeZone(getTimeZone({ timeZone }), date);\n      }\n\n      return dateTimeForTimeZone(getTimeZone({ timeZone }), new Date());\n    });\n    const [reactCalendarDate, setReactCalendarDate] = useState<Date>(() => {\n      if (date && date.isValid()) {\n        return adjustDateForReactCalendar(date.toDate(), getTimeZone({ timeZone }));\n      }\n\n      return adjustDateForReactCalendar(new Date(), getTimeZone({ timeZone }));\n    });\n\n    const onChangeDate = useCallback<NonNullable<React.ComponentProps<typeof Calendar>['onChange']>>((date) => {\n      if (date && !Array.isArray(date)) {\n        setReactCalendarDate(date);\n      }\n    }, []);\n\n    const onChangeTime = useCallback((date: DateTime) => {\n      setTimeOfDayDateTime(date);\n    }, []);\n\n    // here we need to stitch the 2 date objects back together\n    const handleApply = () => {\n      // we take the date that's set by TimeOfDayPicker\n      const newDate = dateTime(timeOfDayDateTime);\n\n      // and apply the date/month/year set by react-calendar\n      newDate.set('date', reactCalendarDate.getDate());\n      newDate.set('month', reactCalendarDate.getMonth());\n      newDate.set('year', reactCalendarDate.getFullYear());\n\n      onChange(newDate);\n    };\n\n    return (\n      <div className={cx(styles.container, { [styles.fullScreen]: isFullscreen })} style={style} ref={ref}>\n        <Calendar\n          next2Label={null}\n          prev2Label={null}\n          value={reactCalendarDate}\n          nextLabel={<Icon name=\"angle-right\" />}\n          nextAriaLabel={t('grafana-ui.date-time-picker.next-label', 'Next month')}\n          prevLabel={<Icon name=\"angle-left\" />}\n          prevAriaLabel={t('grafana-ui.date-time-picker.previous-label', 'Previous month')}\n          onChange={onChangeDate}\n          locale=\"en\"\n          className={calendarStyles.body}\n          tileClassName={calendarStyles.title}\n          maxDate={maxDate}\n          minDate={minDate}\n        />\n        <div className={styles.time}>\n          <TimeOfDayPicker\n            showSeconds={showSeconds}\n            onChange={onChangeTime}\n            value={timeOfDayDateTime}\n            disabledHours={disabledHours}\n            disabledMinutes={disabledMinutes}\n            disabledSeconds={disabledSeconds}\n          />\n        </div>\n        <Stack>\n          <Button type=\"button\" onClick={handleApply}>\n            <Trans i18nKey=\"grafana-ui.date-time-picker.apply\">Apply</Trans>\n          </Button>\n          <Button variant=\"secondary\" type=\"button\" onClick={onClose}>\n            <Trans i18nKey=\"grafana-ui.date-time-picker.cancel\">Cancel</Trans>\n          </Button>\n        </Stack>\n      </div>\n    );\n  }\n);\n\nDateTimeCalendar.displayName = 'DateTimeCalendar';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  container: css({\n    padding: theme.spacing(1),\n    border: `1px ${theme.colors.border.weak} solid`,\n    borderRadius: theme.shape.radius.default,\n    backgroundColor: theme.colors.background.primary,\n    zIndex: theme.zIndex.modal,\n  }),\n  fullScreen: css({\n    position: 'absolute',\n  }),\n  time: css({\n    marginBottom: theme.spacing(2),\n  }),\n  modal: css({\n    position: 'fixed',\n    top: '50%',\n    left: '50%',\n    transform: 'translate(-50%, -50%)',\n    zIndex: theme.zIndex.modal,\n    maxWidth: '280px',\n  }),\n  clearIcon: css({\n    cursor: 'pointer',\n  }),\n  field: css({\n    marginBottom: 0,\n    width: '100%',\n  }),\n});\n","import { cx, css } from '@emotion/css';\nimport { PureComponent } from 'react';\n\nimport { stylesFactory } from '../../themes/stylesFactory';\n\nexport interface ListProps<T> {\n  items: T[];\n  renderItem: (item: T, index: number) => JSX.Element;\n  getItemKey?: (item: T) => string;\n  className?: string;\n}\n\ninterface AbstractListProps<T> extends ListProps<T> {\n  inline?: boolean;\n}\n\nconst getStyles = stylesFactory((inlineList = false) => ({\n  list: css({\n    listStyleType: 'none',\n    margin: 0,\n    padding: 0,\n  }),\n\n  item: css({\n    display: (inlineList && 'inline-block') || 'block',\n  }),\n}));\n\nexport class AbstractList<T> extends PureComponent<AbstractListProps<T>> {\n  constructor(props: AbstractListProps<T>) {\n    super(props);\n  }\n\n  render() {\n    const { items, renderItem, getItemKey, className, inline } = this.props;\n    const styles = getStyles(inline);\n\n    return (\n      <ul className={cx(styles.list, className)}>\n        {items.map((item, i) => {\n          return (\n            <li className={styles.item} key={getItemKey ? getItemKey(item) : i}>\n              {renderItem(item, i)}\n            </li>\n          );\n        })}\n      </ul>\n    );\n  }\n}\n","import { PureComponent } from 'react';\n\nimport { ListProps, AbstractList } from './AbstractList';\n\n/** @deprecated Use ul/li/arr.map directly instead */\nexport class List<T> extends PureComponent<ListProps<T>> {\n  render() {\n    return <AbstractList {...this.props} />;\n  }\n}\n","import { css, cx } from '@emotion/css';\nimport { useMemo } from 'react';\n\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Button, ButtonVariant } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\n\nexport interface Props {\n  /** The current page index being shown. */\n  currentPage: number;\n  /** Number of total pages. */\n  numberOfPages: number;\n  /** Callback function for fetching the selected page.  */\n  onNavigate: (toPage: number) => void;\n  /** When set to true and the pagination result is only one page it will not render the pagination at all. */\n  hideWhenSinglePage?: boolean;\n  /** Small version only shows the current page and the navigation buttons. */\n  showSmallVersion?: boolean;\n  className?: string;\n}\n\nexport const Pagination = ({\n  currentPage,\n  numberOfPages,\n  onNavigate,\n  hideWhenSinglePage,\n  showSmallVersion,\n  className,\n}: Props) => {\n  const styles = useStyles2(getStyles);\n  const pageLengthToCondense = showSmallVersion ? 1 : 8;\n\n  const pageButtons = useMemo(() => {\n    const pages = [...new Array(numberOfPages).keys()];\n\n    const condensePages = numberOfPages > pageLengthToCondense;\n    const getListItem = (page: number, variant: 'primary' | 'secondary') => (\n      <li key={page} className={styles.item}>\n        <Button size=\"sm\" variant={variant} onClick={() => onNavigate(page)}>\n          {page}\n        </Button>\n      </li>\n    );\n\n    return pages.reduce<JSX.Element[]>((pagesToRender, pageIndex) => {\n      const page = pageIndex + 1;\n      const variant: ButtonVariant = page === currentPage ? 'primary' : 'secondary';\n\n      // The indexes at which to start and stop condensing pages\n      const lowerBoundIndex = pageLengthToCondense;\n      const upperBoundIndex = numberOfPages - pageLengthToCondense + 1;\n      // When the indexes overlap one another this number is negative\n      const differenceOfBounds = upperBoundIndex - lowerBoundIndex;\n\n      const isFirstOrLastPage = page === 1 || page === numberOfPages;\n      // This handles when the lowerBoundIndex < currentPage < upperBoundIndex\n      const currentPageIsBetweenBounds =\n        differenceOfBounds > -1 && currentPage >= lowerBoundIndex && currentPage <= upperBoundIndex;\n\n      // Show ellipsis after that many pages\n      const ellipsisOffset = showSmallVersion ? 1 : 3;\n\n      // The offset to show more pages when currentPageIsBetweenBounds\n      const pageOffset = showSmallVersion ? 0 : 2;\n\n      if (condensePages) {\n        if (\n          isFirstOrLastPage ||\n          (currentPage < lowerBoundIndex && page < lowerBoundIndex) ||\n          (differenceOfBounds >= 0 && currentPage > upperBoundIndex && page > upperBoundIndex) ||\n          (differenceOfBounds < 0 && currentPage >= lowerBoundIndex && page > upperBoundIndex) ||\n          (currentPageIsBetweenBounds && page >= currentPage - pageOffset && page <= currentPage + pageOffset)\n        ) {\n          // Renders a button for the page\n          pagesToRender.push(getListItem(page, variant));\n        } else if (\n          (page === lowerBoundIndex && currentPage < lowerBoundIndex) ||\n          (page === upperBoundIndex && currentPage > upperBoundIndex) ||\n          (currentPageIsBetweenBounds &&\n            (page === currentPage - ellipsisOffset || page === currentPage + ellipsisOffset))\n        ) {\n          // Renders and ellipsis to represent condensed pages\n          pagesToRender.push(\n            <li key={page} className={styles.item}>\n              <Icon className={styles.ellipsis} name=\"ellipsis-v\" data-testid=\"pagination-ellipsis-icon\" />\n            </li>\n          );\n        }\n      } else {\n        pagesToRender.push(getListItem(page, variant));\n      }\n      return pagesToRender;\n    }, []);\n  }, [currentPage, numberOfPages, onNavigate, pageLengthToCondense, showSmallVersion, styles.ellipsis, styles.item]);\n\n  if (hideWhenSinglePage && numberOfPages <= 1) {\n    return null;\n  }\n\n  const previousPageLabel = t('grafana-ui.pagination.previous-page', 'previous page');\n  const nextPageLabel = t('grafana-ui.pagination.next-page', 'next page');\n\n  return (\n    <div className={cx(styles.container, className)} role=\"navigation\">\n      <ol>\n        <li className={styles.item}>\n          <Button\n            aria-label={previousPageLabel}\n            size=\"sm\"\n            variant=\"secondary\"\n            onClick={() => onNavigate(currentPage - 1)}\n            disabled={currentPage === 1}\n          >\n            <Icon name=\"angle-left\" />\n          </Button>\n        </li>\n        {pageButtons}\n        <li className={styles.item}>\n          <Button\n            aria-label={nextPageLabel}\n            size=\"sm\"\n            variant=\"secondary\"\n            onClick={() => onNavigate(currentPage + 1)}\n            disabled={currentPage === numberOfPages}\n          >\n            <Icon name=\"angle-right\" />\n          </Button>\n        </li>\n      </ol>\n    </div>\n  );\n};\n\nconst getStyles = () => {\n  return {\n    container: css({\n      float: 'right',\n    }),\n    item: css({\n      display: 'inline-block',\n      paddingLeft: '10px',\n      marginBottom: '5px',\n    }),\n    ellipsis: css({\n      transform: 'rotate(90deg)',\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport { CellProps, HeaderProps } from 'react-table';\n\nimport { t } from '@grafana/i18n';\n\nimport { IconButton } from '../../IconButton/IconButton';\n\nconst expanderContainerStyles = css({\n  display: 'flex',\n  alignItems: 'center',\n  height: '100%',\n});\n\nexport function ExpanderCell<K extends object>({ row, __rowID }: CellProps<K, void>) {\n  return (\n    <div className={expanderContainerStyles}>\n      <IconButton\n        tooltip={t('grafana-ui.interactive-table.expand-row-tooltip', 'Toggle row expanded')}\n        aria-controls={__rowID}\n        // @ts-expect-error react-table doesn't ship with useExpanded types and we can't use declaration merging without affecting the table viz\n        name={row.isExpanded ? 'angle-down' : 'angle-right'}\n        // @ts-expect-error same as the line above\n        aria-expanded={row.isExpanded}\n        // @ts-expect-error same as the line above\n        {...row.getToggleRowExpandedProps()}\n        size=\"lg\"\n      />\n    </div>\n  );\n}\n\nexport function ExpanderHeader<K extends object>({ isAllRowsExpanded, toggleAllRowsExpanded }: HeaderProps<K>) {\n  return (\n    <div className={expanderContainerStyles}>\n      <IconButton\n        aria-label={\n          !isAllRowsExpanded\n            ? t('grafana-ui.interactive-table.aria-label-expand-all', 'Expand all rows')\n            : t('grafana-ui.interactive-table.aria-label-collapse-all', 'Collapse all rows')\n        }\n        name={!isAllRowsExpanded ? 'table-expand-all' : 'table-collapse-all'}\n        onClick={() => toggleAllRowsExpanded()}\n        size={'lg'}\n        tooltip={\n          !isAllRowsExpanded\n            ? t('grafana-ui.interactive-table.tooltip-expand-all', 'Expand all rows')\n            : t('grafana-ui.interactive-table.tooltip-collapse-all', 'Collapse all rows')\n        }\n        variant={'secondary'}\n      />\n    </div>\n  );\n}\n","import { Column as RTColumn } from 'react-table';\n\nimport { ExpanderCell, ExpanderHeader } from './Expander';\nimport { Column } from './types';\n\nexport const EXPANDER_CELL_ID = '__expander' as const;\n\ntype InternalColumn<T extends object> = RTColumn<T> & {\n  visible?: (data: T[]) => boolean;\n};\n\n// Returns the columns in a \"react-table\" acceptable format\nexport function getColumns<K extends object>(\n  columns: Array<Column<K>>,\n  showExpandAll = false\n): Array<InternalColumn<K>> {\n  return [\n    {\n      id: EXPANDER_CELL_ID,\n      Cell: ExpanderCell,\n      ...(showExpandAll && {\n        Header: ExpanderHeader,\n      }),\n      disableSortBy: true,\n      width: 0,\n    },\n    // @ts-expect-error react-table expects each column key(id) to have data associated with it and therefore complains about\n    // column.id being possibly undefined and not keyof T (where T is the data object)\n    // We do not want to be that strict as we simply pass undefined to cells that do not have data associated with them.\n    ...columns.map((column) => ({\n      id: column.id,\n      accessor: column.id,\n      Header: column.header || (() => null),\n      sortType: column.sortType || 'alphanumeric',\n      disableSortBy: !Boolean(column.sortType),\n      width: column.disableGrow ? 0 : undefined,\n      visible: column.visible,\n      ...(column.cell && { Cell: column.cell }),\n    })),\n  ];\n}\n","import { css, cx } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { Fragment, ReactNode, useCallback, useEffect, useMemo } from 'react';\nimport {\n  HeaderGroup,\n  PluginHook,\n  Row,\n  SortingRule,\n  TableOptions,\n  useExpanded,\n  usePagination,\n  useSortBy,\n  useTable,\n} from 'react-table';\n\nimport { GrafanaTheme2, IconName, isTruthy } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\nimport { Pagination } from '../Pagination/Pagination';\nimport { Tooltip } from '../Tooltip/Tooltip';\nimport { PopoverContent } from '../Tooltip/types';\n\nimport { Column } from './types';\nimport { EXPANDER_CELL_ID, getColumns } from './utils';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const rowHoverBg = theme.colors.emphasize(theme.colors.background.primary, 0.03);\n\n  return {\n    container: css({\n      display: 'flex',\n      gap: theme.spacing(2),\n      flexDirection: 'column',\n      width: '100%',\n      overflowX: 'auto',\n    }),\n    cell: css({\n      padding: theme.spacing(1),\n      minWidth: theme.spacing(3),\n    }),\n    table: css({\n      borderRadius: theme.shape.radius.default,\n      width: '100%',\n    }),\n    disableGrow: css({\n      width: 0,\n    }),\n    header: css({\n      borderBottom: `1px solid ${theme.colors.border.weak}`,\n      minWidth: theme.spacing(3),\n      '&, & > button': {\n        position: 'relative',\n        whiteSpace: 'nowrap',\n        padding: theme.spacing(1),\n      },\n      '& > button': {\n        '&:after': {\n          content: '\"\\\\00a0\"',\n        },\n        width: '100%',\n        height: '100%',\n        background: 'none',\n        border: 'none',\n        paddingRight: theme.spacing(2.5),\n        textAlign: 'left',\n        fontWeight: theme.typography.fontWeightMedium,\n      },\n    }),\n    row: css({\n      label: 'row',\n      borderBottom: `1px solid ${theme.colors.border.weak}`,\n\n      '&:hover': {\n        backgroundColor: rowHoverBg,\n      },\n\n      '&:last-child': {\n        borderBottom: 0,\n      },\n    }),\n    expandedRow: css({\n      label: 'expanded-row-content',\n      borderBottom: 'none',\n    }),\n    expandedContentCell: css({\n      borderBottom: `1px solid ${theme.colors.border.weak}`,\n      position: 'relative',\n      padding: theme.spacing(2, 2, 2, 5),\n\n      '&:before': {\n        content: '\"\"',\n        position: 'absolute',\n        width: '1px',\n        top: 0,\n        left: '16px',\n        bottom: theme.spacing(2),\n        background: theme.colors.border.medium,\n      },\n    }),\n    expandedContentRow: css({\n      label: 'expanded-row-content',\n    }),\n    sortableHeader: css({\n      /* increases selector's specificity so that it always takes precedence over default styles  */\n      '&&': {\n        padding: 0,\n      },\n    }),\n  };\n};\n\nexport type InteractiveTableHeaderTooltip = {\n  content: PopoverContent;\n  iconName?: IconName;\n};\n\nexport type FetchDataArgs<Data> = { sortBy: Array<SortingRule<Data>> };\nexport type FetchDataFunc<Data> = ({ sortBy }: FetchDataArgs<Data>) => void;\n\ninterface BaseProps<TableData extends object> {\n  className?: string;\n  /**\n   * Table's columns definition. Must be memoized.\n   */\n  columns: Array<Column<TableData>>;\n  /**\n   * The data to display in the table. Must be memoized.\n   */\n  data: TableData[];\n  /**\n   * Must return a unique id for each row\n   */\n  getRowId: TableOptions<TableData>['getRowId'];\n  /**\n   * Optional tooltips for the table headers. The key must match the column id.\n   */\n  headerTooltips?: Record<string, InteractiveTableHeaderTooltip>;\n  /**\n   * Number of rows per page. A value of zero disables pagination. Defaults to 0.\n   * A React hooks error will be thrown if pageSize goes from greater than 0 to 0 or vice versa. If enabling pagination,\n   * make sure pageSize remains a non-zero value.\n   */\n  pageSize?: number;\n  /**\n   * A custom function to fetch data when the table is sorted. If not provided, the table will be sorted client-side.\n   * It's important for this function to have a stable identity, e.g. being wrapped into useCallback to prevent unnecessary\n   * re-renders of the table.\n   */\n  fetchData?: FetchDataFunc<TableData>;\n  /**\n   * Optional way to set how the table is sorted from the beginning. Must be memoized.\n   */\n  initialSortBy?: Array<SortingRule<TableData>>;\n}\n\ninterface WithExpandableRow<TableData extends object> extends BaseProps<TableData> {\n  /**\n   * Render function for the expanded row. if not provided, the tables rows will not be expandable.\n   */\n  renderExpandedRow: (row: TableData) => ReactNode;\n  /**\n   * Whether to show the \"Expand all\" button. Depends on renderExpandedRow to be provided. Defaults to false.\n   */\n  showExpandAll?: boolean;\n}\n\ninterface WithoutExpandableRow<TableData extends object> extends BaseProps<TableData> {\n  renderExpandedRow?: never;\n  showExpandAll?: never;\n}\n\ntype Props<TableData extends object> = WithExpandableRow<TableData> | WithoutExpandableRow<TableData>;\n\n/** @alpha */\nexport function InteractiveTable<TableData extends object>({\n  className,\n  columns,\n  data,\n  getRowId,\n  headerTooltips,\n  pageSize = 0,\n  renderExpandedRow,\n  showExpandAll = false,\n  fetchData,\n  initialSortBy = [],\n}: Props<TableData>) {\n  const styles = useStyles2(getStyles);\n  const tableColumns = useMemo(() => {\n    return getColumns<TableData>(columns, showExpandAll);\n  }, [columns, showExpandAll]);\n  const id = useUniqueId();\n  const getRowHTMLID = useCallback(\n    (row: Row<TableData>) => {\n      return `${id}-${row.id}`.replace(/\\s/g, '');\n    },\n    [id]\n  );\n\n  const tableHooks: Array<PluginHook<TableData>> = [useSortBy, useExpanded];\n\n  const multiplePages = data.length > pageSize;\n  const paginationEnabled = pageSize > 0;\n\n  if (paginationEnabled) {\n    tableHooks.push(usePagination);\n  }\n\n  const tableInstance = useTable<TableData>(\n    {\n      columns: tableColumns,\n      data,\n      autoResetExpanded: false,\n      autoResetSortBy: false,\n      disableMultiSort: true,\n      // If fetchData is provided, we disable client-side sorting\n      manualSortBy: Boolean(fetchData),\n      getRowId,\n      initialState: {\n        hiddenColumns: [\n          !renderExpandedRow && EXPANDER_CELL_ID,\n          ...tableColumns\n            .filter((col) => !(col.visible ? col.visible(data) : true))\n            .map((c) => c.id)\n            .filter(isTruthy),\n        ].filter(isTruthy),\n        sortBy: initialSortBy,\n      },\n    },\n    ...tableHooks\n  );\n\n  const { getTableProps, getTableBodyProps, headerGroups, prepareRow } = tableInstance;\n\n  const { sortBy } = tableInstance.state;\n  useEffect(() => {\n    if (fetchData) {\n      fetchData({ sortBy });\n    }\n  }, [sortBy, fetchData]);\n\n  useEffect(() => {\n    if (paginationEnabled) {\n      tableInstance.setPageSize(pageSize);\n    }\n  }, [paginationEnabled, pageSize, tableInstance.setPageSize, tableInstance]);\n\n  return (\n    <div className={styles.container}>\n      <table {...getTableProps()} className={cx(styles.table, className)}>\n        <thead>\n          {headerGroups.map((headerGroup) => {\n            const { key, ...headerRowProps } = headerGroup.getHeaderGroupProps();\n\n            return (\n              <tr key={key} {...headerRowProps}>\n                {headerGroup.headers.map((column) => {\n                  const { key, ...headerCellProps } = column.getHeaderProps();\n\n                  const headerTooltip = headerTooltips?.[column.id];\n\n                  return (\n                    <th\n                      key={key}\n                      className={cx(styles.header, {\n                        [styles.disableGrow]: column.width === 0,\n                        [styles.sortableHeader]: column.canSort,\n                      })}\n                      {...headerCellProps}\n                      {...(column.isSorted && { 'aria-sort': column.isSortedDesc ? 'descending' : 'ascending' })}\n                    >\n                      <ColumnHeader column={column} headerTooltip={headerTooltip} />\n                    </th>\n                  );\n                })}\n              </tr>\n            );\n          })}\n        </thead>\n\n        <tbody {...getTableBodyProps()}>\n          {(paginationEnabled ? tableInstance.page : tableInstance.rows).map((row) => {\n            prepareRow(row);\n\n            const { key, ...otherRowProps } = row.getRowProps();\n            const rowId = getRowHTMLID(row);\n            // @ts-expect-error react-table doesn't ship with useExpanded types, and we can't use declaration merging without affecting the table viz\n            const isExpanded = row.isExpanded;\n\n            return (\n              <Fragment key={key}>\n                <tr {...otherRowProps} className={cx(styles.row, isExpanded && styles.expandedRow)}>\n                  {row.cells.map((cell) => {\n                    const { key, ...otherCellProps } = cell.getCellProps();\n                    return (\n                      <td className={styles.cell} key={key} {...otherCellProps}>\n                        {cell.render('Cell', { __rowID: rowId })}\n                      </td>\n                    );\n                  })}\n                </tr>\n                {isExpanded && renderExpandedRow && (\n                  <tr {...otherRowProps} id={rowId} className={styles.expandedContentRow}>\n                    <td className={styles.expandedContentCell} colSpan={row.cells.length}>\n                      {renderExpandedRow(row.original)}\n                    </td>\n                  </tr>\n                )}\n              </Fragment>\n            );\n          })}\n        </tbody>\n      </table>\n      {paginationEnabled && multiplePages && (\n        <span>\n          <Pagination\n            currentPage={tableInstance.state.pageIndex + 1}\n            numberOfPages={tableInstance.pageOptions.length}\n            onNavigate={(toPage) => tableInstance.gotoPage(toPage - 1)}\n          />\n        </span>\n      )}\n    </div>\n  );\n}\n\nconst useUniqueId = () => {\n  return useMemo(() => uniqueId('InteractiveTable'), []);\n};\n\nconst getColumnHeaderStyles = (theme: GrafanaTheme2) => ({\n  sortIcon: css({\n    position: 'absolute',\n    top: theme.spacing(1),\n  }),\n  headerTooltipIcon: css({\n    marginLeft: theme.spacing(0.5),\n  }),\n});\n\nfunction ColumnHeader<T extends object>({\n  column: { canSort, render, isSorted, isSortedDesc, getSortByToggleProps },\n  headerTooltip,\n}: {\n  column: HeaderGroup<T>;\n  headerTooltip?: InteractiveTableHeaderTooltip;\n}) {\n  const styles = useStyles2(getColumnHeaderStyles);\n  const { onClick } = getSortByToggleProps();\n\n  const children = (\n    <>\n      {render('Header')}\n      {headerTooltip && (\n        <Tooltip theme=\"info-alt\" content={headerTooltip.content} placement=\"top-end\">\n          <Icon\n            className={styles.headerTooltipIcon}\n            name={headerTooltip.iconName || 'info-circle'}\n            data-testid={'header-tooltip-icon'}\n          />\n        </Tooltip>\n      )}\n      {isSorted && (\n        <span aria-hidden=\"true\" className={styles.sortIcon}>\n          <Icon name={isSortedDesc ? 'angle-down' : 'angle-up'} />\n        </span>\n      )}\n    </>\n  );\n\n  if (canSort) {\n    return (\n      <button type=\"button\" onClick={onClick}>\n        {children}\n      </button>\n    );\n  }\n\n  return children;\n}\n","const TAG_COLORS = [\n  '#D32D20',\n  '#1E72B8',\n  '#B240A2',\n  '#705DA0',\n  '#466803',\n  '#497A3C',\n  '#3D71AA',\n  '#B15415',\n  '#890F02',\n  '#6E6E6E',\n  '#0A437C',\n  '#6D1F62',\n  '#584477',\n  '#4C7A3F',\n  '#2F4F4F',\n  '#BF1B00',\n  '#7662B1',\n  '#8A2EB8',\n  '#517A00',\n  '#000000',\n  '#3F6833',\n  '#2F575E',\n  '#99440A',\n  '#AE561A',\n  '#0E4AB4',\n  '#58140C',\n  '#052B51',\n  '#511749',\n  '#3F2B5B',\n];\n\nconst TAG_BORDER_COLORS = [\n  '#FF7368',\n  '#459EE7',\n  '#E069CF',\n  '#9683C6',\n  '#6C8E29',\n  '#76AC68',\n  '#6AA4E2',\n  '#E7823D',\n  '#AF3528',\n  '#9B9B9B',\n  '#3069A2',\n  '#934588',\n  '#7E6A9D',\n  '#88C477',\n  '#557575',\n  '#E54126',\n  '#A694DD',\n  '#B054DE',\n  '#8FC426',\n  '#262626',\n  '#658E59',\n  '#557D84',\n  '#BF6A30',\n  '#FF9B53',\n  '#3470DA',\n  '#7E3A32',\n  '#2B5177',\n  '#773D6F',\n  '#655181',\n];\n\nexport function getTagColorIndexFromName(name = ''): number {\n  const hash = djb2(name.toLowerCase());\n  return Math.abs(hash % TAG_COLORS.length);\n}\n\n/**\n * Returns tag badge background and border colors based on hashed tag name.\n * @param name tag name\n */\nexport function getTagColorsFromName(name = ''): { color: string; borderColor: string } {\n  const index = getTagColorIndexFromName(name);\n  return getTagColor(index);\n}\n\nexport function getTagColor(index: number): { color: string; borderColor: string } {\n  return { color: TAG_COLORS[index], borderColor: TAG_BORDER_COLORS[index] };\n}\n\nfunction djb2(str: string) {\n  let hash = 5381;\n  for (let i = 0; i < str.length; i++) {\n    hash = (hash << 5) + hash + str.charCodeAt(i); /* hash * 33 + c */\n  }\n  return hash;\n}\n\nexport default {\n  getTagColorsFromName,\n};\n","import { css, cx } from '@emotion/css';\nimport { useMemo } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getTagColorsFromName } from '../../utils/tags';\nimport { IconButton } from '../IconButton/IconButton';\n\ninterface Props {\n  name: string;\n  disabled?: boolean;\n  onRemove: (tag: string) => void;\n\n  /** Colours the tags 'randomly' based on the name. Defaults to true */\n  autoColors?: boolean;\n}\n\n/**\n * @internal\n * Only used internally by TagsInput\n * */\nexport const TagItem = ({ name, disabled, onRemove, autoColors = true }: Props) => {\n  const styles = useStyles2(getStyles);\n\n  // If configured, use random colors based on name.\n  // Otherwise, a default class name will be applied to the tag.\n  const tagStyle = useMemo(() => {\n    if (autoColors) {\n      const { color, borderColor } = getTagColorsFromName(name);\n      return { backgroundColor: color, borderColor };\n    }\n    return undefined;\n  }, [name, autoColors]);\n\n  return (\n    <li className={cx(styles.itemStyle, !tagStyle && styles.defaultTagColor)} style={tagStyle}>\n      <span className={styles.nameStyle}>{name}</span>\n      <IconButton\n        name=\"times\"\n        size=\"lg\"\n        disabled={disabled}\n        tooltip={t('grafana-ui.tags-input.remove', 'Remove tag: {{name}}', { name })}\n        onClick={() => onRemove(name)}\n        className={styles.buttonStyles}\n      />\n    </li>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const height = theme.spacing.gridSize * 3;\n\n  return {\n    itemStyle: css({\n      display: 'flex',\n      gap: '3px',\n      alignItems: 'center',\n      height: `${height}px`,\n      lineHeight: `${height - 2}px`,\n      borderWidth: '1px',\n      borderStyle: 'solid',\n      borderRadius: theme.shape.radius.default,\n      padding: `0 ${theme.spacing(0.5)}`,\n      whiteSpace: 'nowrap',\n      textShadow: 'none',\n      fontWeight: 500,\n      fontSize: theme.typography.size.sm,\n      color: '#fff',\n    }),\n    defaultTagColor: css({\n      backgroundColor: theme.colors.background.secondary,\n      borderColor: theme.components.input.borderColor,\n      color: theme.colors.text.primary,\n    }),\n    nameStyle: css({\n      maxWidth: '25ch',\n      textOverflow: 'ellipsis',\n      overflow: 'hidden',\n    }),\n    buttonStyles: css({\n      margin: 0,\n      '&:hover::before': {\n        display: 'none',\n      },\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { useCallback, useState, forwardRef } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\nimport { Button } from '../Button/Button';\nimport { Input } from '../Input/Input';\n\nimport { TagItem } from './TagItem';\n\nexport interface Props {\n  placeholder?: string;\n  /** Array of selected tags */\n  tags?: string[];\n  onChange: (tags: string[]) => void;\n  width?: number;\n  id?: string;\n  className?: string;\n  /** Toggle disabled state */\n  disabled?: boolean;\n  /** Enable adding new tags when input loses focus */\n  addOnBlur?: boolean;\n  /** Toggle invalid state */\n  invalid?: boolean;\n  /** Colours the tags 'randomly' based on the name. Defaults to true */\n  autoColors?: boolean;\n}\n\nexport const TagsInput = forwardRef<HTMLInputElement, Props>(\n  (\n    {\n      placeholder: placeholderProp,\n      tags = [],\n      onChange,\n      width,\n      className,\n      disabled,\n      addOnBlur,\n      invalid,\n      id,\n      autoColors = true,\n    },\n    ref\n  ) => {\n    const placeholder = placeholderProp ?? t('grafana-ui.tags-input.placeholder-new-tag', 'New tag (enter key to add)');\n    const [newTagName, setNewTagName] = useState('');\n    const styles = useStyles2(getStyles);\n    const theme = useTheme2();\n\n    const onNameChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n      setNewTagName(event.target.value);\n    }, []);\n\n    const onRemove = (tagToRemove: string) => {\n      onChange(tags.filter((x) => x !== tagToRemove));\n    };\n\n    const onAdd = (event?: React.MouseEvent | React.KeyboardEvent) => {\n      event?.preventDefault();\n      if (!tags.includes(newTagName)) {\n        onChange(tags.concat(newTagName));\n      }\n      setNewTagName('');\n    };\n\n    const onBlur = () => {\n      if (addOnBlur && newTagName) {\n        onAdd();\n      }\n    };\n\n    const onKeyboardAdd = (event: React.KeyboardEvent) => {\n      if (event.key === 'Enter' && newTagName !== '') {\n        onAdd(event);\n      }\n    };\n\n    return (\n      <div className={cx(styles.wrapper, className, width ? css({ width: theme.spacing(width) }) : '')}>\n        <Input\n          ref={ref}\n          id={id}\n          disabled={disabled}\n          placeholder={placeholder}\n          onChange={onNameChange}\n          value={newTagName}\n          onKeyDown={onKeyboardAdd}\n          onBlur={onBlur}\n          invalid={invalid}\n          suffix={\n            <Button\n              fill=\"text\"\n              className={styles.addButtonStyle}\n              onClick={onAdd}\n              size=\"md\"\n              disabled={newTagName.length <= 0}\n            >\n              <Trans i18nKey=\"grafana-ui.tags-input.add\">Add</Trans>\n            </Button>\n          }\n        />\n        {tags?.length > 0 && (\n          <ul className={styles.tags}>\n            {tags.map((tag) => (\n              <TagItem key={tag} name={tag} onRemove={onRemove} disabled={disabled} autoColors={autoColors} />\n            ))}\n          </ul>\n        )}\n      </div>\n    );\n  }\n);\n\nTagsInput.displayName = 'TagsInput';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  wrapper: css({\n    minHeight: theme.spacing(4),\n    display: 'flex',\n    flexDirection: 'column',\n    gap: theme.spacing(1),\n    flexWrap: 'wrap',\n  }),\n  tags: css({\n    display: 'flex',\n    justifyContent: 'flex-start',\n    flexWrap: 'wrap',\n    gap: theme.spacing(0.5),\n  }),\n  addButtonStyle: css({\n    margin: `0 -${theme.spacing(1)}`,\n  }),\n});\n","import { css, keyframes } from '@emotion/css';\nimport { memo } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport const EllipsisAnimated = memo(() => {\n  const styles = useStyles2(getStyles);\n  return (\n    <div className={styles.ellipsis}>\n      <span className={styles.firstDot}>{'.'}</span>\n      <span className={styles.secondDot}>{'.'}</span>\n      <span className={styles.thirdDot}>{'.'}</span>\n    </div>\n  );\n});\n\nEllipsisAnimated.displayName = 'EllipsisAnimated';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    ellipsis: css({\n      display: 'inline',\n    }),\n    firstDot: css({\n      [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n        animation: `${firstDot} 2s linear infinite`,\n      },\n    }),\n    secondDot: css({\n      [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n        animation: `${secondDot} 2s linear infinite`,\n      },\n    }),\n    thirdDot: css({\n      [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n        animation: `${thirdDot} 2s linear infinite`,\n      },\n    }),\n  };\n};\n\nconst firstDot = keyframes`\n  0% {\n    opacity: 1;\n  }\n  65% {\n    opacity: 1;\n  }\n  66% {\n    opacity: 0.5;\n  }\n  100% {\n    opacity: 0;\n  }\n  `;\n\nconst secondDot = keyframes`\n  0% {\n    opacity: 0;\n  }\n  21% {\n    opacity: 0.5;\n  }\n  22% {\n    opacity: 1;\n  }\n  65% {\n    opacity: 1;\n  }\n  66% {\n    opacity: 0.5;\n  }\n  100% {\n    opacity: 0;\n  }\n  `;\n\nconst thirdDot = keyframes`\n  0% {\n    opacity: 0;\n  }\n  43% {\n    opacity: 0.5;\n  }\n  44% {\n    opacity: 1;\n  }\n  65% {\n    opacity: 1;\n  }\n  66% {\n    opacity: 0.5;\n  }\n  100% {\n    opacity: 0;\n  }\n  `;\n","import { css } from '@emotion/css';\nimport { debounce } from 'lodash';\nimport { useCallback, useMemo, useRef } from 'react';\nimport * as React from 'react';\n\nimport { Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Field, FieldProps } from '../Forms/Field';\nimport { InlineToast } from '../InlineToast/InlineToast';\n\nimport { EllipsisAnimated } from './EllipsisAnimated';\n\nconst SHOW_SUCCESS_DURATION = 2 * 1000;\n\nexport interface Props<T = string> extends Omit<FieldProps, 'children'> {\n  /** Saving request that will be triggered 600ms after changing the value */\n  onFinishChange: (inputValue: T) => Promise<void>;\n  /** Custom error message to display on saving */\n  saveErrorMessage?: string;\n  /** Input that will save its value on change  */\n  children: (onChange: (newValue: T) => void) => React.ReactElement;\n}\nexport function AutoSaveField<T = string>(props: Props<T>) {\n  const {\n    invalid,\n    loading,\n    onFinishChange,\n    saveErrorMessage = 'Error saving this value',\n    error,\n    children,\n    disabled,\n    ...restProps\n  } = props;\n\n  const [fieldState, setFieldState] = React.useState({\n    isLoading: false,\n    showSuccess: false,\n    showError: invalid,\n  });\n\n  const fieldRef = useRef<HTMLDivElement>(null);\n\n  React.useEffect(() => {\n    let timeoutId: ReturnType<typeof setTimeout>;\n    if (fieldState.showSuccess) {\n      const time = fieldState.showError ? 0 : SHOW_SUCCESS_DURATION;\n      timeoutId = setTimeout(() => {\n        setFieldState({ ...fieldState, showSuccess: false });\n      }, time);\n    }\n\n    return () => {\n      window.clearTimeout(timeoutId);\n    };\n  }, [fieldState]);\n\n  const handleChange = useCallback(\n    (nextValue: T) => {\n      if (invalid) {\n        return;\n      }\n      setFieldState({ ...fieldState, isLoading: true, showSuccess: false });\n      onFinishChange(nextValue)\n        .then(() => {\n          setFieldState({\n            isLoading: false,\n            showSuccess: true,\n            showError: false,\n          });\n        })\n        .catch(() => {\n          setFieldState({\n            ...fieldState,\n            isLoading: false,\n            showError: true,\n          });\n        });\n    },\n    [invalid, fieldState, onFinishChange]\n  );\n\n  const lodashDebounce = useMemo(() => debounce(handleChange, 600, { leading: false }), [handleChange]);\n  //We never want to pass false to field, because it won't be deleted with deleteUndefinedProps() being false\n  const isInvalid = invalid || fieldState.showError || undefined;\n  /**\n   * use Field around input to pass the error message\n   * use InlineToast.tsx to show the save message\n   */\n  const styles = useStyles2(getStyles);\n\n  return (\n    <>\n      <Field\n        {...restProps}\n        loading={loading || undefined}\n        invalid={isInvalid}\n        disabled={disabled}\n        error={error || (fieldState.showError && saveErrorMessage)}\n        ref={fieldRef}\n        className={styles.widthFitContent}\n      >\n        {React.cloneElement(\n          children((newValue) => {\n            lodashDebounce(newValue);\n          })\n        )}\n      </Field>\n      {fieldState.isLoading && (\n        <InlineToast referenceElement={fieldRef.current} placement=\"right\">\n          <Trans i18nKey=\"grafana-ui.auto-save-field.saving\">\n            Saving <EllipsisAnimated />\n          </Trans>\n        </InlineToast>\n      )}\n      {fieldState.showSuccess && (\n        <InlineToast suffixIcon={'check'} referenceElement={fieldRef.current} placement=\"right\">\n          <Trans i18nKey=\"grafana-ui.auto-save-field.saved\">Saved!</Trans>\n        </InlineToast>\n      )}\n    </>\n  );\n}\n\nAutoSaveField.displayName = 'AutoSaveField';\n\nconst getStyles = () => {\n  return {\n    widthFitContent: css({\n      width: 'fit-content',\n    }),\n  };\n};\n","import { keyframes } from '@emotion/css';\nimport * as React from 'react';\n\nconst fadeIn = keyframes({\n  '0%': {\n    opacity: 0,\n  },\n  '100%': {\n    opacity: 1,\n  },\n});\n\nexport const skeletonAnimation = {\n  animationName: fadeIn,\n  animationDelay: '100ms',\n  animationTimingFunction: 'ease-in',\n  animationDuration: '100ms',\n  animationFillMode: 'backwards',\n};\n\ninterface SkeletonProps {\n  /**\n   * Spread these props at the root of your skeleton to handle animation logic\n   */\n  rootProps: {\n    style: React.CSSProperties;\n  };\n}\n\nexport type SkeletonComponent<P = {}> = React.ComponentType<P & SkeletonProps>;\n\n/**\n * Use this to attach a skeleton as a static property on the component.\n * e.g. if you render a component with `<Component />`, you can render the skeleton with `<Component.Skeleton />`.\n * @param Component   A functional or class component\n * @param Skeleton    A functional or class skeleton component\n * @returns           A wrapped component with a static skeleton property\n */\nexport const attachSkeleton = <C extends object, P>(Component: C, Skeleton: SkeletonComponent<P>) => {\n  const skeletonWrapper = (props: P) => {\n    return (\n      <Skeleton\n        {...props}\n        rootProps={{\n          style: skeletonAnimation,\n        }}\n      />\n    );\n  };\n  return Object.assign(Component, { Skeleton: skeletonWrapper });\n};\n","import { cx, css } from '@emotion/css';\nimport { forwardRef, HTMLAttributes } from 'react';\nimport * as React from 'react';\nimport Skeleton from 'react-loading-skeleton';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\nimport { IconName } from '../../types/icon';\nimport { SkeletonComponent, attachSkeleton } from '../../utils/skeleton';\nimport { getTagColor, getTagColorsFromName } from '../../utils/tags';\nimport { Icon } from '../Icon/Icon';\n\n/**\n * @public\n */\nexport type OnTagClick = (name: string, event: React.MouseEvent<HTMLElement>) => void;\n\nexport interface Props extends Omit<HTMLAttributes<HTMLElement>, 'onClick'> {\n  /** Name of the tag to display */\n  name: string;\n  icon?: IconName;\n  /** Use constant color from TAG_COLORS. Using index instead of color directly so we can match other styling. */\n  colorIndex?: number;\n  onClick?: OnTagClick;\n}\n\nconst TagComponent = forwardRef<HTMLElement, Props>(({ name, onClick, icon, className, colorIndex, ...rest }, ref) => {\n  const theme = useTheme2();\n  const styles = getTagStyles(theme, name, colorIndex);\n\n  const onTagClick = (event: React.MouseEvent<HTMLElement>) => {\n    event.preventDefault();\n    event.stopPropagation();\n\n    onClick?.(name, event);\n  };\n\n  const classes = cx(styles.wrapper, className, { [styles.hover]: onClick !== undefined });\n\n  return onClick ? (\n    <button {...rest} className={classes} onClick={onTagClick} ref={ref as React.ForwardedRef<HTMLButtonElement>}>\n      {icon && <Icon name={icon} />}\n      {name}\n    </button>\n  ) : (\n    <span {...rest} className={classes} ref={ref}>\n      {icon && <Icon name={icon} />}\n      {name}\n    </span>\n  );\n});\nTagComponent.displayName = 'Tag';\n\nconst TagSkeleton: SkeletonComponent = ({ rootProps }) => {\n  const styles = useStyles2(getSkeletonStyles);\n  return <Skeleton width={60} height={22} containerClassName={styles.container} {...rootProps} />;\n};\n\nexport const Tag = attachSkeleton(TagComponent, TagSkeleton);\n\nconst getSkeletonStyles = () => ({\n  container: css({\n    lineHeight: 1,\n  }),\n});\n\nconst getTagStyles = (theme: GrafanaTheme2, name: string, colorIndex?: number) => {\n  let colors;\n  if (colorIndex === undefined) {\n    colors = getTagColorsFromName(name);\n  } else {\n    colors = getTagColor(colorIndex);\n  }\n  return {\n    wrapper: css({\n      appearance: 'none',\n      borderStyle: 'none',\n      fontWeight: theme.typography.fontWeightMedium,\n      fontSize: theme.typography.size.sm,\n      lineHeight: theme.typography.bodySmall.lineHeight,\n      verticalAlign: 'baseline',\n      backgroundColor: colors.color,\n      color: theme.v1.palette.gray98,\n      whiteSpace: 'pre',\n      textShadow: 'none',\n      padding: '3px 6px',\n      borderRadius: theme.shape.radius.default,\n    }),\n    hover: css({\n      '&:hover': {\n        opacity: 0.85,\n        cursor: 'pointer',\n      },\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { forwardRef, memo } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\nimport { IconName } from '../../types/icon';\nimport { SkeletonComponent, attachSkeleton } from '../../utils/skeleton';\n\nimport { OnTagClick, Tag } from './Tag';\n\nexport interface Props {\n  /** Maximum number of the tags to display */\n  displayMax?: number;\n  /** Names of the tags to display */\n  tags: string[];\n  /** Callback when the tag is clicked */\n  onClick?: OnTagClick;\n  /** Custom styles for the wrapper component */\n  className?: string;\n  /** aria-label for the `i`-th Tag component */\n  getAriaLabel?: (name: string, i: number) => string;\n  //** Should return an index of a color defined in the TAG_COLORS array */\n  getColorIndex?: (name: string, i: number) => number;\n  /** Icon to show next to tag label */\n  icon?: IconName;\n}\n\nconst TagListComponent = memo(\n  forwardRef<HTMLUListElement, Props>(\n    ({ displayMax, tags, icon, onClick, className, getAriaLabel, getColorIndex }, ref) => {\n      const theme = useTheme2();\n      const styles = getStyles(theme, Boolean(displayMax && displayMax > 0));\n      const numTags = tags.length;\n      const tagsToDisplay = displayMax ? tags.slice(0, displayMax) : tags;\n      return (\n        <ul className={cx(styles.wrapper, className)} aria-label={t('grafana-ui.tags.list-label', 'Tags')} ref={ref}>\n          {tagsToDisplay.map((tag, i) => (\n            <li className={styles.li} key={tag}>\n              <Tag\n                name={tag}\n                icon={icon}\n                onClick={onClick}\n                aria-label={getAriaLabel?.(tag, i)}\n                data-tag-id={i}\n                colorIndex={getColorIndex?.(tag, i)}\n              />\n            </li>\n          ))}\n          {displayMax && displayMax > 0 && numTags - displayMax > 0 && (\n            <li className={styles.li}>\n              <span className={styles.moreTagsLabel}>\n                {'+ '}\n                {numTags - displayMax}\n              </span>\n            </li>\n          )}\n        </ul>\n      );\n    }\n  )\n);\nTagListComponent.displayName = 'TagList';\n\nconst TagListSkeleton: SkeletonComponent = ({ rootProps }) => {\n  const styles = useStyles2(getSkeletonStyles);\n  return (\n    <div className={styles.container} {...rootProps}>\n      <Tag.Skeleton />\n      <Tag.Skeleton />\n    </div>\n  );\n};\n\nexport const TagList = attachSkeleton(TagListComponent, TagListSkeleton);\n\nconst getSkeletonStyles = (theme: GrafanaTheme2) => ({\n  container: css({\n    display: 'flex',\n    gap: theme.spacing(1),\n  }),\n});\n\nconst getStyles = (theme: GrafanaTheme2, isTruncated: boolean) => {\n  return {\n    wrapper: css({\n      position: 'relative',\n      alignItems: isTruncated ? 'center' : 'unset',\n      display: 'flex',\n      flex: '1 1 auto',\n      flexWrap: 'wrap',\n      flexShrink: isTruncated ? 0 : 1,\n      justifyContent: 'flex-end',\n      gap: '6px',\n    }),\n    moreTagsLabel: css({\n      color: theme.colors.text.secondary,\n      fontSize: theme.typography.size.sm,\n    }),\n    li: css({\n      listStyle: 'none',\n    }),\n  };\n};\n","import * as React from 'react';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { IconName } from '../../types/icon';\n\nimport { getModalStyles } from './getModalStyles';\n\ninterface Props {\n  title: string;\n  id?: string;\n  /** @deprecated */\n  icon?: IconName;\n  /** @deprecated */\n  iconTooltip?: string;\n}\n\n/** @internal */\nexport const ModalHeader = ({ icon, iconTooltip, title, children, id }: React.PropsWithChildren<Props>) => {\n  const styles = useStyles2(getModalStyles);\n\n  return (\n    <>\n      <h2 className={styles.modalHeaderTitle} id={id}>\n        {title}\n      </h2>\n      {children}\n    </>\n  );\n};\n","import { cx } from '@emotion/css';\nimport { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { OverlayContainer, useOverlay } from '@react-aria/overlays';\nimport { PropsWithChildren, useRef } from 'react';\nimport * as React from 'react';\n\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { IconName } from '../../types/icon';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Stack } from '../Layout/Stack/Stack';\n\nimport { ModalHeader } from './ModalHeader';\nimport { getModalStyles } from './getModalStyles';\n\nexport interface Props {\n  /** @deprecated no longer used */\n  icon?: IconName;\n  /** @deprecated no longer used */\n  iconTooltip?: string;\n  /** Title for the modal or custom header element */\n  title: string | JSX.Element;\n  className?: string;\n  contentClassName?: string;\n  closeOnEscape?: boolean;\n  closeOnBackdropClick?: boolean;\n  trapFocus?: boolean;\n\n  isOpen?: boolean;\n  onDismiss?: () => void;\n\n  /** If not set will call onDismiss if that is set. */\n  onClickBackdrop?: () => void;\n}\n\nexport function Modal(props: PropsWithChildren<Props>) {\n  const {\n    title,\n    children,\n    isOpen = false,\n    closeOnEscape = true,\n    closeOnBackdropClick = true,\n    className,\n    contentClassName,\n    onDismiss,\n    onClickBackdrop,\n    trapFocus = true,\n  } = props;\n  const styles = useStyles2(getModalStyles);\n\n  const ref = useRef<HTMLDivElement>(null);\n\n  // Handle interacting outside the dialog and pressing\n  // the Escape key to close the modal.\n  const { overlayProps, underlayProps } = useOverlay(\n    { isKeyboardDismissDisabled: !closeOnEscape, isOpen, onClose: onDismiss },\n    ref\n  );\n\n  // Get props for the dialog and its title\n  const { dialogProps, titleProps } = useDialog({}, ref);\n\n  if (!isOpen) {\n    return null;\n  }\n\n  const headerClass = cx(styles.modalHeader, typeof title !== 'string' && styles.modalHeaderWithTabs);\n\n  return (\n    <OverlayContainer>\n      <div\n        role=\"presentation\"\n        className={styles.modalBackdrop}\n        onClick={onClickBackdrop || (closeOnBackdropClick ? onDismiss : undefined)}\n        {...underlayProps}\n      />\n      <FocusScope contain={trapFocus} autoFocus restoreFocus>\n        <div className={cx(styles.modal, className)} ref={ref} {...overlayProps} {...dialogProps}>\n          <div className={headerClass}>\n            {typeof title === 'string' && <DefaultModalHeader {...props} title={title} id={titleProps.id} />}\n            {\n              // FIXME: custom title components won't get an accessible title.\n              // Do we really want to support them or shall we just limit this ModalTabsHeader?\n              typeof title !== 'string' && title\n            }\n            <div className={styles.modalHeaderClose}>\n              <IconButton\n                name=\"times\"\n                size=\"xl\"\n                onClick={onDismiss}\n                aria-label={t('grafana-ui.modal.close-tooltip', 'Close')}\n              />\n            </div>\n          </div>\n          <div className={cx(styles.modalContent, contentClassName)}>{children}</div>\n        </div>\n      </FocusScope>\n    </OverlayContainer>\n  );\n}\n\nfunction ModalButtonRow({ leftItems, children }: { leftItems?: React.ReactNode; children: React.ReactNode }) {\n  const styles = useStyles2(getModalStyles);\n\n  if (leftItems) {\n    return (\n      <div className={styles.modalButtonRow}>\n        <Stack justifyContent=\"space-between\">\n          <Stack justifyContent=\"flex-start\" gap={2}>\n            {leftItems}\n          </Stack>\n          <Stack justifyContent=\"flex-end\" gap={2}>\n            {children}\n          </Stack>\n        </Stack>\n      </div>\n    );\n  }\n\n  return (\n    <div className={styles.modalButtonRow}>\n      <Stack justifyContent=\"flex-end\" gap={2} wrap=\"wrap\">\n        {children}\n      </Stack>\n    </div>\n  );\n}\n\nModal.ButtonRow = ModalButtonRow;\n\ninterface DefaultModalHeaderProps {\n  id?: string;\n  title: string;\n  icon?: IconName;\n  iconTooltip?: string;\n}\n\nfunction DefaultModalHeader({ icon, iconTooltip, title, id }: DefaultModalHeaderProps): JSX.Element {\n  return <ModalHeader icon={icon} iconTooltip={iconTooltip} title={title} id={id} />;\n}\n","import { css } from '@emotion/css';\nimport { useEffect, useRef, useState } from 'react';\nimport * as React from 'react';\nimport { useForm } from 'react-hook-form';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Button, ButtonVariant } from '../Button/Button';\nimport { Field } from '../Forms/Field';\nimport { Input } from '../Input/Input';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { JustifyContent } from '../Layout/types';\nimport { ResponsiveProp } from '../Layout/utils/responsiveness';\n\nexport interface ConfirmContentProps {\n  /** Modal content */\n  body: React.ReactNode;\n  /** Modal description */\n  description?: React.ReactNode;\n  /** Text for confirm button */\n  confirmButtonLabel: string;\n  /** Confirm button variant */\n  confirmButtonVariant?: ButtonVariant;\n  /** Text user needs to fill in before confirming */\n  confirmPromptText?: string;\n  /** Text for dismiss button */\n  dismissButtonLabel?: string;\n  /** Variant for dismiss button */\n  dismissButtonVariant?: ButtonVariant;\n  /** Text for alternative button */\n  alternativeButtonLabel?: string;\n  /** Justify for buttons placement */\n  justifyButtons?: ResponsiveProp<JustifyContent>;\n  /** Confirm action callback\n   * Return a promise to disable the confirm button until the promise is resolved\n   */\n  onConfirm(): void | Promise<void>;\n  /** Dismiss action callback */\n  onDismiss(): void;\n  /** Alternative action callback */\n  onAlternative?(): void;\n  /** Disable the confirm button and the confirm text input if needed */\n  disabled?: boolean;\n}\n\nexport const ConfirmContent = ({\n  body,\n  confirmPromptText,\n  confirmButtonLabel,\n  confirmButtonVariant,\n  dismissButtonVariant,\n  dismissButtonLabel,\n  onConfirm,\n  onDismiss,\n  onAlternative,\n  alternativeButtonLabel,\n  description,\n  justifyButtons = 'flex-end',\n  disabled,\n}: ConfirmContentProps) => {\n  const [isDisabled, setIsDisabled] = useState(disabled);\n  const styles = useStyles2(getStyles);\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const onConfirmationTextChange = (event: React.FormEvent<HTMLInputElement>) => {\n    setIsDisabled(confirmPromptText?.toLowerCase().localeCompare(event.currentTarget.value.toLowerCase()) !== 0);\n  };\n\n  useEffect(() => {\n    buttonRef.current?.focus();\n  }, []);\n\n  useEffect(() => {\n    setIsDisabled(disabled ? true : Boolean(confirmPromptText));\n  }, [confirmPromptText, disabled]);\n\n  const onConfirmClick = async () => {\n    if (disabled === undefined) {\n      setIsDisabled(true);\n    }\n    try {\n      await onConfirm();\n    } finally {\n      if (disabled === undefined) {\n        setIsDisabled(false);\n      }\n    }\n  };\n\n  const { handleSubmit } = useForm();\n  const placeholder = t('grafana-ui.confirm-content.placeholder', 'Type \"{{confirmPromptText}}\" to confirm', {\n    confirmPromptText,\n  });\n  return (\n    <form onSubmit={handleSubmit(onConfirmClick)}>\n      <div className={styles.text}>\n        {body}\n        {description ? <div className={styles.description}>{description}</div> : null}\n        {confirmPromptText ? (\n          <div className={styles.confirmationInput}>\n            <Stack alignItems=\"flex-start\">\n              <Field disabled={disabled}>\n                <Input\n                  placeholder={placeholder}\n                  onChange={onConfirmationTextChange}\n                  data-testid={selectors.pages.ConfirmModal.input}\n                />\n              </Field>\n            </Stack>\n          </div>\n        ) : null}\n      </div>\n      <div className={styles.buttonsContainer}>\n        <Stack justifyContent={justifyButtons} gap={2} wrap=\"wrap\">\n          <Button variant={dismissButtonVariant} onClick={onDismiss} fill=\"outline\">\n            {dismissButtonLabel}\n          </Button>\n          <Button\n            type=\"submit\"\n            variant={confirmButtonVariant}\n            disabled={isDisabled}\n            ref={buttonRef}\n            data-testid={selectors.pages.ConfirmModal.delete}\n          >\n            {confirmButtonLabel}\n          </Button>\n          {onAlternative ? (\n            <Button variant=\"primary\" onClick={onAlternative}>\n              {alternativeButtonLabel}\n            </Button>\n          ) : null}\n        </Stack>\n      </div>\n    </form>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  text: css({\n    fontSize: theme.typography.h5.fontSize,\n    color: theme.colors.text.primary,\n  }),\n  description: css({\n    fontSize: theme.typography.body.fontSize,\n  }),\n  confirmationInput: css({\n    paddingTop: theme.spacing(1),\n  }),\n  buttonsContainer: css({\n    paddingTop: theme.spacing(3),\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { IconName } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { ButtonVariant } from '../Button/Button';\nimport { Modal } from '../Modal/Modal';\n\nimport { ConfirmContent } from './ConfirmContent';\n\nexport interface ConfirmModalProps {\n  /** Toggle modal's open/closed state */\n  isOpen: boolean;\n  /** Title for the modal header */\n  title: string;\n  /** Modal content */\n  body: React.ReactNode;\n  /** Modal description */\n  description?: React.ReactNode;\n  /** Text for confirm button */\n  confirmText: string;\n  /** Variant for confirm button */\n  confirmVariant?: ButtonVariant;\n  /** Text for dismiss button */\n  dismissText?: string;\n  /** Variant for dismiss button */\n  dismissVariant?: ButtonVariant;\n  /** Icon for the modal header */\n  icon?: IconName;\n  /** Additional styling for modal container */\n  modalClass?: string;\n  /** Text user needs to fill in before confirming */\n  confirmationText?: string;\n  /** Text for alternative button */\n  alternativeText?: string;\n  /** Confirm button variant */\n  confirmButtonVariant?: ButtonVariant;\n  /** Confirm action callback\n   * Return a promise to disable the confirm button until the promise is resolved\n   */\n  onConfirm(): void | Promise<void>;\n  /** Dismiss action callback */\n  onDismiss(): void;\n  /** Alternative action callback */\n  onAlternative?(): void;\n  /** Disable the confirm button and the confirm text input if needed */\n  disabled?: boolean;\n}\n\nexport const ConfirmModal = ({\n  isOpen,\n  title,\n  body,\n  description,\n  confirmText,\n  confirmVariant = 'destructive',\n  confirmationText,\n  dismissText = 'Cancel',\n  dismissVariant = 'secondary',\n  alternativeText,\n  modalClass,\n  icon = 'exclamation-triangle',\n  onConfirm,\n  onDismiss,\n  onAlternative,\n  confirmButtonVariant = 'destructive',\n  disabled,\n}: ConfirmModalProps): JSX.Element => {\n  const styles = useStyles2(getStyles);\n\n  return (\n    <Modal className={cx(styles.modal, modalClass)} title={title} icon={icon} isOpen={isOpen} onDismiss={onDismiss}>\n      <ConfirmContent\n        body={body}\n        description={description}\n        confirmButtonLabel={confirmText}\n        dismissButtonLabel={dismissText}\n        dismissButtonVariant={dismissVariant}\n        confirmPromptText={confirmationText}\n        alternativeButtonLabel={alternativeText}\n        confirmButtonVariant={confirmButtonVariant}\n        onConfirm={onConfirm}\n        onDismiss={onDismiss}\n        onAlternative={onAlternative}\n        disabled={disabled}\n      />\n    </Modal>\n  );\n};\n\nconst getStyles = () => ({\n  modal: css({\n    width: '500px',\n  }),\n});\n","import { Plugin } from 'slate-react';\n\n// Clears the rest of the line after the caret\nexport function ClearPlugin(): Plugin {\n  return {\n    onKeyDown(event, editor, next) {\n      const value = editor.value;\n\n      if (value.selection.isExpanded) {\n        return next();\n      }\n\n      if (event.key === 'k' && event.ctrlKey) {\n        event.preventDefault();\n        const text = value.anchorText.text;\n        const offset = value.selection.anchor.offset;\n        const length = text.length;\n        const forward = length - offset;\n        editor.deleteForward(forward);\n        return true;\n      }\n\n      return next();\n    },\n  };\n}\n","import { Plugin } from 'slate-react';\n\nconst getCopiedText = (textBlocks: string[], startOffset: number, endOffset: number) => {\n  if (!textBlocks.length) {\n    return undefined;\n  }\n\n  const excludingLastLineLength = textBlocks.slice(0, -1).join('').length + textBlocks.length - 1;\n  return textBlocks.join('\\n').slice(startOffset, excludingLastLineLength + endOffset);\n};\n\n// Remove unicode special symbol - byte order mark (BOM), U+FEFF.\nconst removeBom = (str: string | undefined): string | undefined => {\n  return str?.replace(/[\\uFEFF]/g, '');\n};\n\nexport function ClipboardPlugin(): Plugin {\n  const clipboardPlugin: Plugin = {\n    onCopy(event, editor, next) {\n      event.preventDefault();\n\n      const { document, selection } = editor.value;\n      const {\n        start: { offset: startOffset },\n        end: { offset: endOffset },\n      } = selection;\n      const selectedBlocks = document\n        .getLeafBlocksAtRange(selection)\n        .toArray()\n        .map((block) => block.text);\n\n      const copiedText = removeBom(getCopiedText(selectedBlocks, startOffset, endOffset));\n      if (copiedText && event.clipboardData) {\n        event.clipboardData.setData('Text', copiedText);\n      }\n\n      return true;\n    },\n\n    onPaste(event, editor, next) {\n      event.preventDefault();\n      if (event.clipboardData) {\n        const pastedValue = removeBom(event.clipboardData.getData('Text'));\n        const lines = pastedValue?.split('\\n');\n\n        if (lines && lines.length) {\n          editor.insertText(lines[0]);\n          for (const line of lines.slice(1)) {\n            editor.splitBlock().insertText(line);\n          }\n        }\n      }\n\n      return true;\n    },\n  };\n\n  return {\n    ...clipboardPlugin,\n    onCut(event, editor, next) {\n      clipboardPlugin.onCopy!(event, editor, next);\n      editor.deleteAtRange(editor.value.selection);\n\n      return true;\n    },\n  };\n}\n","import { isKeyHotkey } from 'is-hotkey';\nimport * as React from 'react';\nimport { RangeJSON, Range as SlateRange } from 'slate';\nimport Plain from 'slate-plain-serializer';\nimport { Editor, Plugin } from 'slate-react';\n\nconst isIndentLeftHotkey = isKeyHotkey('mod+[');\nconst isShiftTabHotkey = isKeyHotkey('shift+tab');\nconst isIndentRightHotkey = isKeyHotkey('mod+]');\n\nconst SLATE_TAB = '  ';\n\nconst handleTabKey = (event: React.KeyboardEvent<Element>, editor: Editor, next: Function): void => {\n  const {\n    startBlock,\n    endBlock,\n    selection: {\n      start: { offset: startOffset, key: startKey },\n      end: { offset: endOffset, key: endKey },\n    },\n  } = editor.value;\n  if (Plain.serialize(editor.value) === '') {\n    return;\n  }\n  event.preventDefault();\n  const first = startBlock.getFirstText();\n\n  const startBlockIsSelected =\n    first && startOffset === 0 && startKey === first.key && endOffset === first.text.length && endKey === first.key;\n\n  if (startBlockIsSelected || !startBlock.equals(endBlock)) {\n    handleIndent(editor, 'right');\n  } else {\n    editor.insertText(SLATE_TAB);\n  }\n};\n\nconst handleIndent = (editor: Editor, indentDirection: 'left' | 'right') => {\n  const curSelection = editor.value.selection;\n  const selectedBlocks = editor.value.document.getLeafBlocksAtRange(curSelection).toArray();\n\n  if (indentDirection === 'left') {\n    for (const block of selectedBlocks) {\n      const blockWhitespace = block.text.length - block.text.trimLeft().length;\n\n      const textKey = block.getFirstText()!.key;\n\n      const rangeProperties: RangeJSON = {\n        anchor: {\n          key: textKey,\n          offset: blockWhitespace,\n          path: [],\n        },\n        focus: {\n          key: textKey,\n          offset: blockWhitespace,\n          path: [],\n        },\n      };\n\n      editor.deleteBackwardAtRange(SlateRange.create(rangeProperties), Math.min(SLATE_TAB.length, blockWhitespace));\n    }\n  } else {\n    const { startText } = editor.value;\n    const textBeforeCaret = startText.text.slice(0, curSelection.start.offset);\n    const isWhiteSpace = /^\\s*$/.test(textBeforeCaret);\n\n    for (const block of selectedBlocks) {\n      editor.insertTextByKey(block.getFirstText()!.key, 0, SLATE_TAB);\n    }\n\n    if (isWhiteSpace) {\n      editor.moveStartBackward(SLATE_TAB.length);\n    }\n  }\n};\n\n// Clears the rest of the line after the caret\nexport function IndentationPlugin(): Plugin {\n  return {\n    onKeyDown(event, editor, next) {\n      if (isIndentLeftHotkey(event) || isShiftTabHotkey(event)) {\n        event.preventDefault();\n        handleIndent(editor, 'left');\n      } else if (isIndentRightHotkey(event)) {\n        event.preventDefault();\n        handleIndent(editor, 'right');\n      } else if (event.key === 'Tab') {\n        handleTabKey(event, editor, next);\n      } else {\n        return next();\n      }\n\n      return true;\n    },\n  };\n}\n","import { Plugin } from 'slate-react';\n\nfunction getIndent(text: string) {\n  let offset = text.length - text.trimLeft().length;\n  if (offset) {\n    let indent = text[0];\n    while (--offset) {\n      indent += text[0];\n    }\n    return indent;\n  }\n  return '';\n}\n\nexport function NewlinePlugin(): Plugin {\n  return {\n    onKeyDown(event, editor, next) {\n      const value = editor.value;\n\n      if (value.selection.isExpanded) {\n        return next();\n      }\n\n      if (event.key === 'Enter') {\n        event.preventDefault();\n\n        const { startBlock } = value;\n        const currentLineText = startBlock.text;\n        const indent = getIndent(currentLineText);\n\n        return editor.splitBlock().insertText(indent).focus();\n      }\n\n      return next();\n    },\n  };\n}\n","import * as React from 'react';\nimport { Plugin } from 'slate-react';\n\nexport function RunnerPlugin({ handler }: { handler?: (e: React.KeyboardEvent) => void }): Plugin {\n  return {\n    onKeyDown(event, editor, next) {\n      // Handle enter\n      if (handler && event.key === 'Enter' && (event.shiftKey || event.ctrlKey)) {\n        // Submit on Enter\n        event.preventDefault();\n        handler(event);\n        return editor;\n      }\n\n      return next();\n    },\n  };\n}\n","import { isKeyHotkey } from 'is-hotkey';\nimport { Plugin } from 'slate-react';\n\nconst isSelectLineHotkey = isKeyHotkey('mod+l');\n\n// Clears the rest of the line after the caret\nexport function SelectionShortcutsPlugin(): Plugin {\n  return {\n    onKeyDown(event, editor, next) {\n      if (isSelectLineHotkey(event)) {\n        event.preventDefault();\n        const { focusBlock, document } = editor.value;\n\n        editor.moveAnchorToStartOfBlock();\n\n        const nextBlock = document.getNextBlock(focusBlock.key);\n        if (nextBlock) {\n          editor.moveFocusToStartOfNextBlock();\n        } else {\n          editor.moveFocusToEndOfText();\n        }\n      } else {\n        return next();\n      }\n\n      return true;\n    },\n  };\n}\n","import { Value } from 'slate';\nimport { Editor } from 'slate-react';\n\nimport { SearchFunctionType } from '../utils/searchFunctions';\n\n/**\n * @internal\n */\nexport type SearchFunction = (items: CompletionItem[], prefix: string) => CompletionItem[];\n\nexport interface CompletionItemGroup {\n  /**\n   * Label that will be displayed for all entries of this group.\n   */\n  label: string;\n\n  /**\n   * List of suggestions of this group.\n   */\n  items: CompletionItem[];\n\n  /**\n   * If true, match only by prefix (and not mid-word).\n   * @deprecated use searchFunctionType instead\n   */\n  prefixMatch?: boolean;\n\n  /**\n   * Function type used to create auto-complete list\n   * @alpha\n   */\n  searchFunctionType?: SearchFunctionType;\n\n  /**\n   * If true, do not filter items in this group based on the search.\n   */\n  skipFilter?: boolean;\n\n  /**\n   * If true, do not sort items.\n   */\n  skipSort?: boolean;\n}\n\nexport enum CompletionItemKind {\n  GroupTitle = 'GroupTitle',\n}\n\n/**\n * @internal\n */\nexport type HighlightPart = {\n  start: number;\n  end: number;\n};\n\nexport interface CompletionItem {\n  /**\n   * The label of this completion item. By default\n   * this is also the text that is inserted when selecting\n   * this completion.\n   */\n  label: string;\n\n  /**\n   * The kind of this completion item. An icon is chosen\n   * by the editor based on the kind.\n   */\n  kind?: CompletionItemKind | string;\n\n  /**\n   * A human-readable string with additional information\n   * about this item, like type or symbol information.\n   */\n  detail?: string;\n\n  /**\n   * A human-readable string, can be Markdown, that represents a doc-comment.\n   */\n  documentation?: string;\n\n  /**\n   * A string that should be used when comparing this item\n   * with other items. When `falsy` the `label` is used.\n   * @deprecated use sortValue instead\n   */\n  sortText?: string;\n\n  /**\n   * A string or number that should be used when comparing this\n   * item with other items. When `undefined` then `label` is used.\n   * @alpha\n   */\n  sortValue?: string | number;\n\n  /**\n   * Parts of the label to be highlighted\n   * @internal\n   */\n  highlightParts?: HighlightPart[];\n\n  /**\n   * A string that should be used when filtering a set of\n   * completion items. When `falsy` the `label` is used.\n   */\n  filterText?: string;\n\n  /**\n   * A string or snippet that should be inserted in a document when selecting\n   * this completion. When `falsy` the `label` is used.\n   */\n  insertText?: string;\n\n  /**\n   * Delete number of characters before the caret position,\n   * by default the letters from the beginning of the word.\n   */\n  deleteBackwards?: number;\n\n  /**\n   * Number of steps to move after the insertion, can be negative.\n   */\n  move?: number;\n}\n\nexport interface TypeaheadOutput {\n  context?: string;\n  suggestions: CompletionItemGroup[];\n}\n\nexport interface TypeaheadInput {\n  text: string;\n  prefix: string;\n  wrapperClasses: string[];\n  labelKey?: string;\n  value?: Value;\n  editor?: Editor;\n}\n\nexport interface SuggestionsState {\n  groupedItems: CompletionItemGroup[];\n  typeaheadPrefix: string;\n  typeaheadContext: string;\n  typeaheadText: string;\n}\n","import { default as calculateSize } from 'calculate-size';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { CompletionItemGroup, CompletionItem, CompletionItemKind } from '../types/completion';\n\nexport const flattenGroupItems = (groupedItems: CompletionItemGroup[]): CompletionItem[] => {\n  return groupedItems.reduce((all: CompletionItem[], { items, label }) => {\n    all.push({\n      label,\n      kind: CompletionItemKind.GroupTitle,\n    });\n    return items.reduce((all, item) => {\n      all.push(item);\n      return all;\n    }, all);\n  }, []);\n};\n\nexport const calculateLongestLabel = (allItems: CompletionItem[]): string => {\n  return allItems.reduce((longest, current) => {\n    return longest.length < current.label.length ? current.label : longest;\n  }, '');\n};\n\nexport const calculateListSizes = (theme: GrafanaTheme2, allItems: CompletionItem[], longestLabel: string) => {\n  const size = calculateSize(longestLabel, {\n    font: theme.typography.fontFamilyMonospace,\n    fontSize: theme.typography.bodySmall.fontSize,\n    fontWeight: 'normal',\n  });\n\n  const listWidth = calculateListWidth(size.width, theme);\n  const itemHeight = calculateItemHeight(size.height, theme);\n  const listHeight = calculateListHeight(itemHeight, allItems);\n\n  return {\n    listWidth,\n    listHeight,\n    itemHeight,\n  };\n};\n\nexport const calculateItemHeight = (longestLabelHeight: number, theme: GrafanaTheme2) => {\n  const horizontalPadding = theme.spacing.gridSize * 2;\n  const itemHeight = longestLabelHeight + horizontalPadding;\n\n  return itemHeight;\n};\n\nexport const calculateListWidth = (longestLabelWidth: number, theme: GrafanaTheme2) => {\n  const verticalPadding = theme.spacing.gridSize * 3;\n  const maxWidth = 800;\n  const listWidth = Math.min(Math.max(longestLabelWidth + verticalPadding, 200), maxWidth);\n\n  return listWidth;\n};\n\nexport const calculateListHeight = (itemHeight: number, allItems: CompletionItem[]) => {\n  const numberOfItemsToShow = Math.min(allItems.length, 10);\n  const minHeight = 100;\n  const totalHeight = numberOfItemsToShow * itemHeight;\n  const listHeight = Math.max(totalHeight, minHeight);\n\n  return listHeight;\n};\n","import { css, cx } from '@emotion/css';\n\nimport { GrafanaTheme2, renderMarkdown } from '@grafana/data';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { CompletionItem } from '../../types/completion';\n\nconst getStyles = (theme: GrafanaTheme2, height: number, visible: boolean) => {\n  return {\n    typeaheadItem: css({\n      label: 'type-ahead-item',\n      zIndex: 11,\n      padding: theme.spacing(1, 1, 1, 2),\n      border: theme.colors.border.medium,\n      overflowY: 'scroll',\n      overflowX: 'hidden',\n      outline: 'none',\n      background: theme.colors.background.secondary,\n      color: theme.colors.text.secondary,\n      boxShadow: `0 0 20px ${theme.v1.colors.dropdownShadow}`,\n      visibility: visible === true ? 'visible' : 'hidden',\n      width: '250px',\n      minHeight: `${height + parseInt(theme.spacing(0.25), 10)}px`,\n      position: 'relative',\n      wordBreak: 'break-word',\n    }),\n  };\n};\n\ninterface Props {\n  item: CompletionItem;\n  height: number;\n}\n\nexport const TypeaheadInfo = ({ item, height }: Props) => {\n  const visible = item && !!item.documentation;\n  const label = item ? item.label : '';\n  const documentation = renderMarkdown(item?.documentation);\n  const theme = useTheme2();\n  const styles = getStyles(theme, height, visible);\n\n  return (\n    <div className={cx([styles.typeaheadItem])}>\n      <b>{label}</b>\n      <hr />\n      <div dangerouslySetInnerHTML={{ __html: documentation }} />\n    </div>\n  );\n};\n","import { createElement } from 'react';\n\nimport { HighlightPart } from '../../types/completion';\n\ninterface Props {\n  text: string;\n  highlightParts: HighlightPart[];\n  highlightClassName: string;\n}\n\n/**\n * Flattens parts into a list of indices pointing to the index where a part\n * (highlighted or not highlighted) starts. Adds extra indices if needed\n * at the beginning or the end to ensure the entire text is covered.\n */\nfunction getStartIndices(parts: HighlightPart[], length: number): number[] {\n  const indices: number[] = [];\n  parts.forEach((part) => {\n    indices.push(part.start, part.end + 1);\n  });\n  if (indices[0] !== 0) {\n    indices.unshift(0);\n  }\n  if (indices[indices.length - 1] !== length) {\n    indices.push(length);\n  }\n  return indices;\n}\n\nexport const PartialHighlighter = (props: Props) => {\n  let { highlightParts, text, highlightClassName } = props;\n\n  if (!highlightParts?.length) {\n    return null;\n  }\n\n  let children = [];\n  let indices = getStartIndices(highlightParts, text.length);\n  let highlighted = highlightParts[0].start === 0;\n\n  for (let i = 1; i < indices.length; i++) {\n    let start = indices[i - 1];\n    let end = indices[i];\n\n    children.push(\n      createElement(\n        highlighted ? 'mark' : 'span',\n        {\n          key: i - 1,\n          className: highlighted ? highlightClassName : undefined,\n        },\n        text.substring(start, end)\n      )\n    );\n    highlighted = !highlighted;\n  }\n\n  return <div>{children}</div>;\n};\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\nimport Highlighter from 'react-highlight-words';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { CompletionItem, CompletionItemKind } from '../../types/completion';\n\nimport { PartialHighlighter } from './PartialHighlighter';\n\ninterface Props {\n  isSelected: boolean;\n  item: CompletionItem;\n  style: React.CSSProperties;\n  prefix?: string;\n\n  onClickItem?: (event: React.MouseEvent) => void;\n  onMouseEnter?: () => void;\n  onMouseLeave?: () => void;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  typeaheadItem: css({\n    border: 'none',\n    background: 'none',\n    textAlign: 'left',\n    label: 'type-ahead-item',\n    height: 'auto',\n    fontFamily: theme.typography.fontFamilyMonospace,\n    padding: theme.spacing(1, 1, 1, 2),\n    fontSize: theme.typography.bodySmall.fontSize,\n    textOverflow: 'ellipsis',\n    overflow: 'hidden',\n    zIndex: 11,\n    display: 'block',\n    whiteSpace: 'nowrap',\n    cursor: 'pointer',\n    [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n      transition:\n        'color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1)',\n    },\n  }),\n\n  typeaheadItemSelected: css({\n    label: 'type-ahead-item-selected',\n    backgroundColor: theme.colors.background.secondary,\n  }),\n\n  typeaheadItemMatch: css({\n    label: 'type-ahead-item-match',\n    color: theme.v1.palette.yellow,\n    borderBottom: `1px solid ${theme.v1.palette.yellow}`,\n    padding: 'inherit',\n    background: 'inherit',\n  }),\n\n  typeaheadItemGroupTitle: css({\n    label: 'type-ahead-item-group-title',\n    color: theme.colors.text.secondary,\n    fontSize: theme.typography.bodySmall.fontSize,\n    lineHeight: theme.typography.body.lineHeight,\n    padding: theme.spacing(1),\n  }),\n});\n\nexport const TypeaheadItem = (props: Props) => {\n  const styles = useStyles2(getStyles);\n\n  const { isSelected, item, prefix, style, onMouseEnter, onMouseLeave, onClickItem } = props;\n  const className = isSelected ? cx([styles.typeaheadItem, styles.typeaheadItemSelected]) : cx([styles.typeaheadItem]);\n  const highlightClassName = cx([styles.typeaheadItemMatch]);\n  const itemGroupTitleClassName = cx([styles.typeaheadItemGroupTitle]);\n  const label = item.label || '';\n\n  if (item.kind === CompletionItemKind.GroupTitle) {\n    return (\n      <li className={itemGroupTitleClassName} style={style}>\n        <span>{label}</span>\n      </li>\n    );\n  }\n\n  return (\n    <li role=\"none\">\n      <button\n        role=\"menuitem\"\n        className={className}\n        style={style}\n        onMouseDown={onClickItem}\n        onMouseEnter={onMouseEnter}\n        onMouseLeave={onMouseLeave}\n        type=\"button\"\n      >\n        {item.highlightParts !== undefined ? (\n          <PartialHighlighter\n            text={label}\n            highlightClassName={highlightClassName}\n            highlightParts={item.highlightParts}\n          ></PartialHighlighter>\n        ) : (\n          <Highlighter\n            textToHighlight={label}\n            searchWords={[prefix ?? '']}\n            autoEscape={true}\n            highlightClassName={highlightClassName}\n          />\n        )}\n      </button>\n    </li>\n  );\n};\n","import { css } from '@emotion/css';\nimport { isEqual } from 'lodash';\nimport { createRef, PureComponent } from 'react';\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { FixedSizeList } from 'react-window';\n\nimport { GrafanaTheme2, ThemeContext } from '@grafana/data';\n\nimport { CompletionItem, CompletionItemGroup, CompletionItemKind } from '../../types/completion';\nimport { flattenGroupItems, calculateLongestLabel, calculateListSizes } from '../../utils/typeahead';\n\nimport { TypeaheadInfo } from './TypeaheadInfo';\nimport { TypeaheadItem } from './TypeaheadItem';\n\nconst modulo = (a: number, n: number) => a - n * Math.floor(a / n);\n\ninterface Props {\n  origin: string;\n  groupedItems: CompletionItemGroup[];\n  prefix?: string;\n  menuRef?: (el: Typeahead) => void;\n  onSelectSuggestion?: (suggestion: CompletionItem) => void;\n  isOpen?: boolean;\n}\n\nexport interface State {\n  allItems: CompletionItem[];\n  listWidth: number;\n  listHeight: number;\n  itemHeight: number;\n  hoveredItem: number | null;\n  typeaheadIndex: number | null;\n}\n\nexport class Typeahead extends PureComponent<Props, State> {\n  static contextType = ThemeContext;\n  context!: React.ContextType<typeof ThemeContext>;\n  listRef = createRef<FixedSizeList>();\n\n  state: State = {\n    hoveredItem: null,\n    typeaheadIndex: null,\n    allItems: [],\n    listWidth: -1,\n    listHeight: -1,\n    itemHeight: -1,\n  };\n\n  componentDidMount = () => {\n    if (this.props.menuRef) {\n      this.props.menuRef(this);\n    }\n\n    document.addEventListener('selectionchange', this.handleSelectionChange);\n\n    const allItems = flattenGroupItems(this.props.groupedItems);\n    const longestLabel = calculateLongestLabel(allItems);\n    const { listWidth, listHeight, itemHeight } = calculateListSizes(this.context, allItems, longestLabel);\n    this.setState({\n      listWidth,\n      listHeight,\n      itemHeight,\n      allItems,\n    });\n  };\n\n  componentWillUnmount = () => {\n    document.removeEventListener('selectionchange', this.handleSelectionChange);\n  };\n\n  handleSelectionChange = () => {\n    this.forceUpdate();\n  };\n\n  componentDidUpdate = (prevProps: Readonly<Props>, prevState: Readonly<State>) => {\n    if (\n      this.state.typeaheadIndex !== null &&\n      prevState.typeaheadIndex !== this.state.typeaheadIndex &&\n      this.listRef &&\n      this.listRef.current\n    ) {\n      if (this.state.typeaheadIndex === 1) {\n        this.listRef.current.scrollToItem(0); // special case for handling the first group label\n        return;\n      }\n      this.listRef.current.scrollToItem(this.state.typeaheadIndex);\n    }\n\n    if (isEqual(prevProps.groupedItems, this.props.groupedItems) === false) {\n      const allItems = flattenGroupItems(this.props.groupedItems);\n      const longestLabel = calculateLongestLabel(allItems);\n      const { listWidth, listHeight, itemHeight } = calculateListSizes(this.context, allItems, longestLabel);\n      this.setState({ listWidth, listHeight, itemHeight, allItems, typeaheadIndex: null });\n    }\n  };\n\n  onMouseEnter = (index: number) => {\n    this.setState({\n      hoveredItem: index,\n    });\n  };\n\n  onMouseLeave = () => {\n    this.setState({\n      hoveredItem: null,\n    });\n  };\n\n  moveMenuIndex = (moveAmount: number) => {\n    const itemCount = this.state.allItems.length;\n    if (itemCount) {\n      // Select next suggestion\n      const typeaheadIndex = this.state.typeaheadIndex || 0;\n      let newTypeaheadIndex = modulo(typeaheadIndex + moveAmount, itemCount);\n\n      if (this.state.allItems[newTypeaheadIndex].kind === CompletionItemKind.GroupTitle) {\n        newTypeaheadIndex = modulo(newTypeaheadIndex + moveAmount, itemCount);\n      }\n\n      this.setState({\n        typeaheadIndex: newTypeaheadIndex,\n      });\n\n      return;\n    }\n  };\n\n  insertSuggestion = () => {\n    if (this.props.onSelectSuggestion && this.state.typeaheadIndex !== null) {\n      this.props.onSelectSuggestion(this.state.allItems[this.state.typeaheadIndex]);\n    }\n  };\n\n  get menuPosition(): string {\n    // Exit for unit tests\n    if (!window.getSelection) {\n      return '';\n    }\n\n    const selection = window.getSelection();\n    const node = selection && selection.anchorNode;\n\n    // Align menu overlay to editor node\n    if (node && node.parentElement) {\n      // Read from DOM\n      const rect = node.parentElement.getBoundingClientRect();\n      const scrollX = window.scrollX;\n      const scrollY = window.scrollY;\n\n      return `position: absolute; display: flex; top: ${rect.top + scrollY + rect.height + 6}px; left: ${\n        rect.left + scrollX - 2\n      }px`;\n    }\n\n    return '';\n  }\n\n  render() {\n    const { prefix, isOpen = false, origin } = this.props;\n    const { allItems, listWidth, listHeight, itemHeight, hoveredItem, typeaheadIndex } = this.state;\n    const styles = getStyles(this.context);\n\n    const showDocumentation = hoveredItem || typeaheadIndex;\n    const documentationItem = allItems[hoveredItem ? hoveredItem : typeaheadIndex || 0];\n\n    return (\n      <Portal origin={origin} isOpen={isOpen} style={this.menuPosition}>\n        <ul role=\"menu\" className={styles.typeahead} data-testid=\"typeahead\">\n          <FixedSizeList\n            ref={this.listRef}\n            itemCount={allItems.length}\n            itemSize={itemHeight}\n            itemKey={(index) => {\n              const item = allItems && allItems[index];\n              const key = item ? `${index}-${item.label}` : `${index}`;\n              return key;\n            }}\n            width={listWidth}\n            height={listHeight}\n          >\n            {({ index, style }) => {\n              const item = allItems && allItems[index];\n              if (!item) {\n                return null;\n              }\n\n              return (\n                <TypeaheadItem\n                  onClickItem={() => (this.props.onSelectSuggestion ? this.props.onSelectSuggestion(item) : {})}\n                  isSelected={typeaheadIndex === null ? false : allItems[typeaheadIndex] === item}\n                  item={item}\n                  prefix={prefix}\n                  style={style}\n                  onMouseEnter={() => this.onMouseEnter(index)}\n                  onMouseLeave={this.onMouseLeave}\n                />\n              );\n            }}\n          </FixedSizeList>\n        </ul>\n\n        {showDocumentation && <TypeaheadInfo height={listHeight} item={documentationItem} />}\n      </Portal>\n    );\n  }\n}\n\ninterface PortalProps {\n  index?: number;\n  isOpen: boolean;\n  origin: string;\n  style: string;\n}\n\nclass Portal extends PureComponent<React.PropsWithChildren<PortalProps>, {}> {\n  node: HTMLElement;\n\n  constructor(props: React.PropsWithChildren<PortalProps>) {\n    super(props);\n    const { index = 0, origin = 'query', style } = props;\n    this.node = document.createElement('div');\n    this.node.setAttribute('style', style);\n    this.node.classList.add(`slate-typeahead-${origin}-${index}`);\n    document.body.appendChild(this.node);\n  }\n\n  componentWillUnmount() {\n    document.body.removeChild(this.node);\n  }\n\n  render() {\n    if (this.props.isOpen) {\n      this.node.setAttribute('style', this.props.style);\n      this.node.classList.add(`slate-typeahead--open`);\n      return ReactDOM.createPortal(this.props.children, this.node);\n    } else {\n      this.node.classList.remove(`slate-typeahead--open`);\n    }\n\n    return null;\n  }\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  typeahead: css({\n    position: 'relative',\n    zIndex: theme.zIndex.typeahead,\n    borderRadius: theme.shape.radius.default,\n    border: `1px solid ${theme.components.panel.borderColor}`,\n    maxHeight: '66vh',\n    overflowY: 'scroll',\n    overflowX: 'hidden',\n    outline: 'none',\n    listStyle: 'none',\n    background: theme.components.panel.background,\n    color: theme.colors.text.primary,\n    boxShadow: theme.shadows.z2,\n\n    strong: {\n      color: theme.v1.palette.yellow,\n    },\n  }),\n});\n","import { last } from 'lodash';\n\nimport { HighlightPart } from '../types/completion';\n\ntype FuzzyMatch = {\n  /**\n   * Total number of unmatched letters between matched letters\n   */\n  distance: number;\n  ranges: HighlightPart[];\n  found: boolean;\n};\n\n/**\n * Attempts to do a partial input search, e.g. allowing to search for a text (needle)\n * in another text (stack) by skipping some letters in-between. All letters from\n * the needle must exist in the stack in the same order to find a match.\n *\n * The search is case sensitive. Convert stack and needle to lower case\n * to make it case insensitive.\n *\n * @param stack - main text to be searched\n * @param needle - partial text to find in the stack\n *\n * @internal\n */\nexport function fuzzyMatch(stack: string, needle: string): FuzzyMatch {\n  let distance = 0,\n    searchIndex = stack.indexOf(needle);\n  // Remove whitespace from needle as a temporary solution to treat separate string\n  // queries as 'AND'\n  needle = needle.replace(/\\s/g, '');\n\n  const ranges: HighlightPart[] = [];\n\n  if (searchIndex !== -1) {\n    return {\n      distance: 0,\n      found: true,\n      ranges: [{ start: searchIndex, end: searchIndex + needle.length - 1 }],\n    };\n  }\n\n  for (const letter of needle) {\n    const letterIndex = stack.indexOf(letter, searchIndex);\n\n    if (letterIndex === -1) {\n      return { distance: Infinity, ranges: [], found: false };\n    }\n    // do not cumulate the distance if it's the first letter\n    if (searchIndex !== -1) {\n      distance += letterIndex - searchIndex;\n    }\n    searchIndex = letterIndex + 1;\n\n    if (ranges.length === 0) {\n      ranges.push({ start: letterIndex, end: letterIndex });\n    } else {\n      const lastRange = last(ranges)!;\n      if (letterIndex === lastRange.end + 1) {\n        lastRange.end++;\n      } else {\n        ranges.push({ start: letterIndex, end: letterIndex });\n      }\n    }\n  }\n\n  return {\n    distance: distance,\n    ranges,\n    found: true,\n  };\n}\n","import { CompletionItem, SearchFunction } from '../types/completion';\n\nimport { fuzzyMatch } from './fuzzy';\n\n/**\n * List of auto-complete search function used by SuggestionsPlugin.handleTypeahead()\n * @alpha\n */\nexport enum SearchFunctionType {\n  Word = 'Word',\n  Prefix = 'Prefix',\n  Fuzzy = 'Fuzzy',\n}\n\n/**\n * Exact-word matching for auto-complete suggestions.\n * - Returns items containing the searched text.\n * @internal\n */\nconst wordSearch: SearchFunction = (items: CompletionItem[], text: string): CompletionItem[] => {\n  return items.filter((c) => (c.filterText || c.label).includes(text));\n};\n\n/**\n * Prefix-based search for auto-complete suggestions.\n * - Returns items starting with the searched text.\n * @internal\n */\nconst prefixSearch: SearchFunction = (items: CompletionItem[], text: string): CompletionItem[] => {\n  return items.filter((c) => (c.filterText || c.label).startsWith(text));\n};\n\n/**\n * Fuzzy search for auto-complete suggestions.\n * - Returns items containing all letters from the search text occurring in the same order.\n * - Stores highlight parts with parts of the text phrase found by fuzzy search\n * @internal\n */\nconst fuzzySearch: SearchFunction = (items: CompletionItem[], text: string): CompletionItem[] => {\n  text = text.toLowerCase();\n  return items.filter((item) => {\n    const { distance, ranges, found } = fuzzyMatch(item.label.toLowerCase(), text);\n    if (!found) {\n      return false;\n    }\n    item.sortValue = distance;\n    item.highlightParts = ranges;\n    return true;\n  });\n};\n\n/**\n * @internal\n */\nexport const SearchFunctionMap = {\n  [SearchFunctionType.Word]: wordSearch,\n  [SearchFunctionType.Prefix]: prefixSearch,\n  [SearchFunctionType.Fuzzy]: fuzzySearch,\n};\n","import { Block, Document, Text, Value, SchemaProperties } from 'slate';\n\nexport const SCHEMA: SchemaProperties = {\n  document: {\n    nodes: [\n      {\n        match: [{ type: 'paragraph' }, { type: 'code_block' }, { type: 'code_line' }],\n      },\n    ],\n  },\n  inlines: {},\n};\n\nexport const makeFragment = (text: string, syntax?: string): Document => {\n  const lines = text.split('\\n').map((line) =>\n    Block.create({\n      type: 'code_line',\n      nodes: [Text.create(line)],\n    })\n  );\n\n  const block = Block.create({\n    data: {\n      syntax,\n    },\n    type: 'code_block',\n    nodes: lines,\n  });\n\n  return Document.create({\n    nodes: [block],\n  });\n};\n\nexport const makeValue = (text: string, syntax?: string): Value => {\n  const fragment = makeFragment(text, syntax);\n\n  return Value.create({\n    document: fragment,\n  });\n};\n","const TOKEN_MARK = 'prism-token';\n\nexport default TOKEN_MARK;\n","import { debounce, sortBy } from 'lodash';\nimport { Editor, Plugin as SlatePlugin } from 'slate-react';\n\nimport { Typeahead } from '../components/Typeahead/Typeahead';\nimport { CompletionItem, SuggestionsState, TypeaheadInput, TypeaheadOutput } from '../types/completion';\nimport { SearchFunctionType, SearchFunctionMap } from '../utils/searchFunctions';\nimport { makeFragment } from '../utils/slate';\n\nimport TOKEN_MARK from './slate-prism/TOKEN_MARK';\n\nexport const TYPEAHEAD_DEBOUNCE = 250;\n\n// Commands added to the editor by this plugin.\ninterface SuggestionsPluginCommands {\n  selectSuggestion: (suggestion: CompletionItem) => Editor;\n  applyTypeahead: (suggestion: CompletionItem) => Editor;\n}\n\nexport function SuggestionsPlugin({\n  onTypeahead,\n  cleanText,\n  onWillApplySuggestion,\n  portalOrigin,\n}: {\n  onTypeahead?: (typeahead: TypeaheadInput) => Promise<TypeaheadOutput>;\n  cleanText?: (text: string) => string;\n  onWillApplySuggestion?: (suggestion: string, state: SuggestionsState) => string;\n  portalOrigin: string;\n}): SlatePlugin {\n  let typeaheadRef: Typeahead;\n  let state: SuggestionsState = {\n    groupedItems: [],\n    typeaheadPrefix: '',\n    typeaheadContext: '',\n    typeaheadText: '',\n  };\n  const handleTypeaheadDebounced = debounce(handleTypeahead, TYPEAHEAD_DEBOUNCE);\n\n  const setState = (update: Partial<SuggestionsState>) => {\n    state = {\n      ...state,\n      ...update,\n    };\n  };\n\n  return {\n    onBlur: (event, editor, next) => {\n      state = {\n        ...state,\n        groupedItems: [],\n      };\n\n      return next();\n    },\n\n    onClick: (event, editor, next) => {\n      state = {\n        ...state,\n        groupedItems: [],\n      };\n\n      return next();\n    },\n\n    onKeyDown: (event, editor, next) => {\n      const currentSuggestions = state.groupedItems;\n\n      const hasSuggestions = currentSuggestions.length;\n\n      switch (event.key) {\n        case 'Escape': {\n          if (hasSuggestions) {\n            event.preventDefault();\n\n            state = {\n              ...state,\n              groupedItems: [],\n            };\n\n            // Bogus edit to re-render editor\n            return editor.insertText('');\n          }\n\n          break;\n        }\n\n        case 'ArrowDown':\n        case 'ArrowUp':\n          if (hasSuggestions) {\n            event.preventDefault();\n            typeaheadRef.moveMenuIndex(event.key === 'ArrowDown' ? 1 : -1);\n            return;\n          }\n\n          break;\n\n        case 'Enter': {\n          if (!(event.shiftKey || event.ctrlKey) && hasSuggestions) {\n            event.preventDefault();\n            return typeaheadRef.insertSuggestion();\n          }\n\n          break;\n        }\n\n        case 'Tab': {\n          if (hasSuggestions) {\n            event.preventDefault();\n            return typeaheadRef.insertSuggestion();\n          }\n\n          break;\n        }\n\n        default: {\n          // Don't react on meta keys\n          if (event.key.length === 1) {\n            handleTypeaheadDebounced(editor, setState, onTypeahead, cleanText);\n          }\n          break;\n        }\n      }\n\n      return next();\n    },\n\n    commands: {\n      selectSuggestion: (editor, suggestion: CompletionItem): Editor => {\n        const suggestions = state.groupedItems;\n        if (!suggestions || !suggestions.length) {\n          return editor;\n        }\n\n        // @ts-ignore\n        const ed = editor.applyTypeahead(suggestion);\n        handleTypeaheadDebounced(editor, setState, onTypeahead, cleanText);\n        return ed;\n      },\n\n      applyTypeahead: (editor, suggestion: CompletionItem) => {\n        let suggestionText = suggestion.insertText || suggestion.label;\n\n        const preserveSuffix = suggestion.kind === 'function';\n        const move = suggestion.move || 0;\n        const moveForward = move > 0 ? move : 0;\n        const moveBackward = move < 0 ? -move : 0;\n\n        const { typeaheadPrefix, typeaheadText, typeaheadContext } = state;\n\n        if (onWillApplySuggestion) {\n          suggestionText = onWillApplySuggestion(suggestionText, {\n            groupedItems: state.groupedItems,\n            typeaheadContext,\n            typeaheadPrefix,\n            typeaheadText,\n          });\n        }\n\n        const { forward, backward } = getNumCharsToDelete(\n          suggestionText,\n          typeaheadPrefix,\n          typeaheadText,\n          preserveSuffix,\n          suggestion.deleteBackwards,\n          cleanText\n        );\n\n        // If new-lines, apply suggestion as block\n        if (suggestionText.match(/\\n/)) {\n          const fragment = makeFragment(suggestionText);\n          editor.deleteBackward(backward).deleteForward(forward).insertFragment(fragment).focus();\n          return editor;\n        }\n\n        state = {\n          ...state,\n          groupedItems: [],\n        };\n\n        editor\n          .snapshotSelection()\n          .deleteBackward(backward)\n          .deleteForward(forward)\n          .insertText(suggestionText)\n          .moveForward(moveForward)\n          .moveBackward(moveBackward)\n          .focus();\n\n        return editor;\n      },\n    },\n\n    renderEditor(props, editor, next) {\n      if (editor.value.selection.isExpanded) {\n        return next();\n      }\n\n      const children = next();\n\n      return (\n        <>\n          {children}\n          <Typeahead\n            menuRef={(menu: Typeahead) => (typeaheadRef = menu)}\n            origin={portalOrigin}\n            prefix={state.typeaheadPrefix}\n            isOpen={!!state.groupedItems.length}\n            groupedItems={state.groupedItems}\n            onSelectSuggestion={(editor as Editor & SuggestionsPluginCommands).selectSuggestion}\n          />\n        </>\n      );\n    },\n  };\n}\n\nconst handleTypeahead = async (\n  editor: Editor,\n  onStateChange: (state: Partial<SuggestionsState>) => void,\n  onTypeahead?: (typeahead: TypeaheadInput) => Promise<TypeaheadOutput>,\n  cleanText?: (text: string) => string\n): Promise<void> => {\n  if (!onTypeahead) {\n    return;\n  }\n\n  const { value } = editor;\n  const { selection } = value;\n\n  // Get decorations associated with the current line\n  const parentBlock = value.document.getClosestBlock(value.focusBlock.key);\n  const selectionStartOffset = value.selection.start.offset - 1;\n  const decorations = parentBlock && parentBlock.getDecorations(editor as any);\n\n  const filteredDecorations = decorations\n    ? decorations\n        .filter(\n          (decoration) =>\n            decoration!.start.offset <= selectionStartOffset &&\n            decoration!.end.offset > selectionStartOffset &&\n            decoration!.type === TOKEN_MARK\n        )\n        .toArray()\n    : [];\n\n  // Find the first label key to the left of the cursor\n  const labelKeyDec =\n    decorations &&\n    decorations\n      .filter(\n        (decoration) =>\n          decoration!.end.offset <= selectionStartOffset &&\n          decoration!.type === TOKEN_MARK &&\n          decoration!.data.get('className').includes('label-key')\n      )\n      .last();\n\n  const labelKey = labelKeyDec && value.focusText.text.slice(labelKeyDec.start.offset, labelKeyDec.end.offset);\n\n  const wrapperClasses = filteredDecorations\n    .map((decoration) => decoration.data.get('className'))\n    .join(' ')\n    .split(' ')\n    .filter((className) => className.length);\n\n  let text = value.focusText.text;\n  let prefix = text.slice(0, selection.focus.offset);\n\n  if (filteredDecorations.length) {\n    text = value.focusText.text.slice(filteredDecorations[0].start.offset, filteredDecorations[0].end.offset);\n    prefix = value.focusText.text.slice(filteredDecorations[0].start.offset, selection.focus.offset);\n  }\n\n  // Label values could have valid characters erased if `cleanText()` is\n  // blindly applied, which would undesirably interfere with suggestions\n  const labelValueMatch = prefix.match(/(?:!?=~?\"?|\")(.*)/);\n  if (labelValueMatch) {\n    prefix = labelValueMatch[1];\n  } else if (cleanText) {\n    prefix = cleanText(prefix);\n  }\n\n  const { suggestions, context } = await onTypeahead({\n    prefix,\n    text,\n    value,\n    wrapperClasses,\n    labelKey: labelKey || undefined,\n    editor,\n  });\n\n  const filteredSuggestions = suggestions\n    .map((group) => {\n      if (!group.items) {\n        return group;\n      }\n      // Falling back to deprecated prefixMatch to support backwards compatibility with plugins using this property\n      const searchFunctionType =\n        group.searchFunctionType || (group.prefixMatch ? SearchFunctionType.Prefix : SearchFunctionType.Word);\n      const searchFunction = SearchFunctionMap[searchFunctionType];\n      let newGroup = { ...group };\n      if (prefix) {\n        // Filter groups based on prefix\n        if (!group.skipFilter) {\n          newGroup.items = newGroup.items.filter((c) => (c.filterText || c.label).length >= prefix.length);\n          newGroup.items = searchFunction(newGroup.items, prefix);\n        }\n\n        // Filter out the already typed value (prefix) unless it inserts custom text not matching the prefix\n        newGroup.items = newGroup.items.filter(\n          (c) => !(c.insertText === prefix || (c.filterText ?? c.label) === prefix)\n        );\n      }\n\n      if (!group.skipSort) {\n        newGroup.items = sortBy(newGroup.items, (item: CompletionItem) => {\n          if (item.sortText === undefined) {\n            return item.sortValue !== undefined ? item.sortValue : item.label;\n          } else {\n            // Falling back to deprecated sortText to support backwards compatibility with plugins using this property\n            return item.sortText || item.label;\n          }\n        });\n      }\n\n      return newGroup;\n    })\n    .filter((gr) => gr.items && gr.items.length); // Filter out empty groups\n\n  onStateChange({\n    groupedItems: filteredSuggestions,\n    typeaheadPrefix: prefix,\n    typeaheadContext: context,\n    typeaheadText: text,\n  });\n\n  // Bogus edit to force re-render\n  editor.blur().focus();\n};\n\nexport function getNumCharsToDelete(\n  suggestionText: string,\n  typeaheadPrefix: string,\n  typeaheadText: string,\n  preserveSuffix: boolean,\n  deleteBackwards?: number,\n  cleanText?: (text: string) => string\n) {\n  // remove the current, incomplete text and replace it with the selected suggestion\n  const backward = deleteBackwards || typeaheadPrefix.length;\n  const text = cleanText ? cleanText(typeaheadText) : typeaheadText;\n  const offset = typeaheadText.indexOf(typeaheadPrefix);\n\n  const suffixLength =\n    offset > -1 ? text.length - offset - typeaheadPrefix.length : text.length - typeaheadPrefix.length;\n  const midWord = Boolean((typeaheadPrefix && suffixLength > 0) || suggestionText === typeaheadText);\n  const forward = midWord && !preserveSuffix ? suffixLength + offset : 0;\n\n  return {\n    forward,\n    backward,\n  };\n}\n","import { css, cx } from '@emotion/css';\nimport classnames from 'classnames';\nimport { debounce } from 'lodash';\nimport { PureComponent } from 'react';\nimport * as React from 'react';\nimport { Value } from 'slate';\nimport Plain from 'slate-plain-serializer';\nimport { Editor, EventHook, Plugin } from 'slate-react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { ClearPlugin } from '../../slate-plugins/clear';\nimport { ClipboardPlugin } from '../../slate-plugins/clipboard';\nimport { IndentationPlugin } from '../../slate-plugins/indentation';\nimport { NewlinePlugin } from '../../slate-plugins/newline';\nimport { RunnerPlugin } from '../../slate-plugins/runner';\nimport { SelectionShortcutsPlugin } from '../../slate-plugins/selection_shortcuts';\nimport { SuggestionsPlugin } from '../../slate-plugins/suggestions';\nimport { withTheme2 } from '../../themes/ThemeContext';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { CompletionItemGroup, SuggestionsState, TypeaheadInput, TypeaheadOutput } from '../../types/completion';\nimport { Themeable2 } from '../../types/theme';\nimport { makeValue, SCHEMA } from '../../utils/slate';\n\nexport interface QueryFieldProps extends Themeable2 {\n  additionalPlugins?: Plugin[];\n  cleanText?: (text: string) => string;\n  disabled?: boolean;\n  // We have both value and local state. This is usually an antipattern but we need to keep local state\n  // for perf reasons and also have outside value in for example in Explore redux that is mutable from logs\n  // creating a two way binding.\n  query?: string | null;\n  onRunQuery?: () => void;\n  onBlur?: () => void;\n  onChange?: (value: string) => void;\n  onRichValueChange?: (value: Value) => void;\n  onClick?: EventHook<React.MouseEvent<Element, MouseEvent>>;\n  onTypeahead?: (typeahead: TypeaheadInput) => Promise<TypeaheadOutput>;\n  onWillApplySuggestion?: (suggestion: string, state: SuggestionsState) => string;\n  placeholder?: string;\n  portalOrigin: string;\n  syntax?: string;\n  syntaxLoaded?: boolean;\n  theme: GrafanaTheme2;\n}\n\nexport interface QueryFieldState {\n  suggestions: CompletionItemGroup[];\n  typeaheadContext: string | null;\n  typeaheadPrefix: string;\n  typeaheadText: string;\n  value: Value;\n}\n\n/**\n * Renders an editor field.\n * Pass initial value as initialQuery and listen to changes in props.onValueChanged.\n * This component can only process strings. Internally it uses Slate Value.\n * Implement props.onTypeahead to use suggestions, see PromQueryField.tsx as an example.\n */\nexport class UnThemedQueryField extends PureComponent<QueryFieldProps, QueryFieldState> {\n  plugins: Array<Plugin<Editor>>;\n  runOnChangeDebounced: Function;\n  lastExecutedValue: Value | null = null;\n  mounted = false;\n  editor: Editor | null = null;\n\n  // By default QueryField calls onChange if onBlur is not defined, this will trigger a rerender\n  // And slate will claim the focus, making it impossible to leave the field.\n  static defaultProps = {\n    onBlur: () => {},\n  };\n\n  constructor(props: QueryFieldProps) {\n    super(props);\n\n    this.runOnChangeDebounced = debounce(this.runOnChange, 500);\n\n    const { onTypeahead, cleanText, portalOrigin, onWillApplySuggestion } = props;\n\n    // Base plugins\n    this.plugins = [\n      // SuggestionsPlugin and RunnerPlugin need to be before NewlinePlugin\n      // because they override Enter behavior\n      SuggestionsPlugin({ onTypeahead, cleanText, portalOrigin, onWillApplySuggestion }),\n      RunnerPlugin({ handler: this.runOnChangeAndRunQuery }),\n      NewlinePlugin(),\n      ClearPlugin(),\n      SelectionShortcutsPlugin(),\n      IndentationPlugin(),\n      ClipboardPlugin(),\n      ...(props.additionalPlugins || []),\n    ].filter((p) => p);\n\n    this.state = {\n      suggestions: [],\n      typeaheadContext: null,\n      typeaheadPrefix: '',\n      typeaheadText: '',\n      value: makeValue(props.query || '', props.syntax),\n    };\n  }\n\n  componentDidMount() {\n    this.mounted = true;\n  }\n\n  componentWillUnmount() {\n    this.mounted = false;\n  }\n\n  componentDidUpdate(prevProps: QueryFieldProps, prevState: QueryFieldState) {\n    const { query, syntax, syntaxLoaded } = this.props;\n    if (!prevProps.syntaxLoaded && syntaxLoaded && this.editor) {\n      // Need a bogus edit to re-render the editor after syntax has fully loaded\n      const editor = this.editor.insertText(' ').deleteBackward(1);\n      this.onChange(editor.value, true);\n    }\n    const { value } = this.state;\n\n    // Handle two way binging between local state and outside prop.\n    // if query changed from the outside\n    if (query !== prevProps.query) {\n      // and we have a version that differs\n      if (query !== Plain.serialize(value)) {\n        this.setState({ value: makeValue(query || '', syntax) });\n      }\n    }\n  }\n\n  /**\n   * Update local state, propagate change upstream and optionally run the query afterwards.\n   */\n  onChange = (value: Value, runQuery?: boolean) => {\n    const documentChanged = value.document !== this.state.value.document;\n    const prevValue = this.state.value;\n    if (this.props.onRichValueChange) {\n      this.props.onRichValueChange(value);\n    }\n\n    // Update local state with new value and optionally change value upstream.\n    this.setState({ value }, () => {\n      // The diff is needed because the actual value of editor have much more metadata (for example text selection)\n      // that is not passed upstream so every change of editor value does not mean change of the query text.\n      if (documentChanged) {\n        const textChanged = Plain.serialize(prevValue) !== Plain.serialize(value);\n        if (textChanged && runQuery) {\n          this.runOnChangeAndRunQuery();\n        }\n        if (textChanged && !runQuery) {\n          // Debounce change propagation by default for perf reasons.\n          this.runOnChangeDebounced();\n        }\n      }\n    });\n  };\n\n  runOnChange = () => {\n    const { onChange } = this.props;\n    const value = Plain.serialize(this.state.value);\n    if (onChange) {\n      onChange(this.cleanText(value));\n    }\n  };\n\n  runOnRunQuery = () => {\n    const { onRunQuery } = this.props;\n\n    if (onRunQuery) {\n      onRunQuery();\n      this.lastExecutedValue = this.state.value;\n    }\n  };\n\n  runOnChangeAndRunQuery = () => {\n    // onRunQuery executes query from Redux in Explore so it needs to be updated sync in case we want to run\n    // the query.\n    this.runOnChange();\n    this.runOnRunQuery();\n  };\n\n  /**\n   * We need to handle blur events here mainly because of dashboard panels which expect to have query executed on blur.\n   */\n  handleBlur = (_: React.FocusEvent | undefined, editor: Editor, next: Function) => {\n    const { onBlur } = this.props;\n\n    if (onBlur) {\n      onBlur();\n    } else {\n      // Run query by default on blur\n      const previousValue = this.lastExecutedValue ? Plain.serialize(this.lastExecutedValue) : '';\n      const currentValue = Plain.serialize(editor.value);\n\n      if (previousValue !== currentValue) {\n        this.runOnChangeAndRunQuery();\n      }\n    }\n    return next();\n  };\n\n  cleanText(text: string) {\n    // RegExp with invisible characters we want to remove - currently only carriage return (newlines are visible)\n    const newText = text.replace(/[\\r]/g, '');\n    return newText;\n  }\n\n  render() {\n    const { disabled, theme } = this.props;\n    const wrapperClassName = classnames('slate-query-field__wrapper', {\n      'slate-query-field__wrapper--disabled': disabled,\n    });\n    const styles = getStyles(theme);\n\n    return (\n      <div className={cx(wrapperClassName, styles.wrapper)}>\n        <div className=\"slate-query-field\" data-testid={selectors.components.QueryField.container}>\n          <Editor\n            ref={(editor) => (this.editor = editor!)}\n            schema={SCHEMA}\n            autoCorrect={false}\n            readOnly={this.props.disabled}\n            onBlur={this.handleBlur}\n            onClick={this.props.onClick}\n            // onKeyDown={this.onKeyDown}\n            onChange={(change: { value: Value }) => {\n              this.onChange(change.value, false);\n            }}\n            placeholder={this.props.placeholder}\n            plugins={this.plugins}\n            spellCheck={false}\n            value={this.state.value}\n          />\n        </div>\n      </div>\n    );\n  }\n}\n\nexport const QueryField = withTheme2(UnThemedQueryField);\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const focusStyles = getFocusStyles(theme);\n  return {\n    wrapper: css({\n      '&:focus-within': focusStyles,\n    }),\n  };\n};\n","import { useAsync } from 'react-use';\n\n// Allows simple dynamic imports in the components\nexport const useAsyncDependency = (importStatement: Promise<any>) => {\n  const state = useAsync(async () => {\n    return await importStatement;\n  });\n\n  return {\n    ...state,\n    dependency: state.value,\n  };\n};\n","import { css } from '@emotion/css';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { ErrorBoundaryApi } from './ErrorBoundary';\n\nexport interface Props extends ErrorBoundaryApi {\n  title: string;\n}\n\nexport const ErrorWithStack = ({ error, errorInfo, title }: Props) => {\n  const style = useStyles2(getStyles);\n\n  return (\n    <div className={style}>\n      <h2>{title}</h2>\n      <details style={{ whiteSpace: 'pre-wrap' }}>\n        {error && error.toString()}\n        <br />\n        {errorInfo && errorInfo.componentStack}\n      </details>\n    </div>\n  );\n};\n\nErrorWithStack.displayName = 'ErrorWithStack';\n\nconst getStyles = () => {\n  return css({\n    width: '500px',\n    margin: '64px auto',\n  });\n};\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { useAsyncDependency } from '../../utils/useAsyncDependency';\nimport { ErrorWithStack } from '../ErrorBoundary/ErrorWithStack';\nimport { LoadingPlaceholder } from '../LoadingPlaceholder/LoadingPlaceholder';\n\n// we only use import type so it will not be included in the bundle\nimport type { ReactMonacoEditorProps } from './types';\n\n/**\n * @internal\n * Experimental export\n **/\nexport const ReactMonacoEditorLazy = (props: ReactMonacoEditorProps) => {\n  const styles = useStyles2(getStyles);\n  const { loading, error, dependency } = useAsyncDependency(\n    import(/* webpackChunkName: \"react-monaco-editor\" */ './ReactMonacoEditor')\n  );\n\n  if (loading) {\n    return (\n      <LoadingPlaceholder\n        text={t('grafana-ui.monaco.loading-placeholder', 'Loading editor')}\n        className={styles.container}\n      />\n    );\n  }\n\n  if (error) {\n    return (\n      <ErrorWithStack\n        title={t('grafana-ui.monaco.error-label', 'React Monaco Editor failed to load')}\n        error={error}\n        errorInfo={{ componentStack: error?.stack ?? '' }}\n      />\n    );\n  }\n\n  const ReactMonacoEditor = dependency.ReactMonacoEditor;\n  return (\n    <ReactMonacoEditor\n      {...props}\n      loading={props.loading ?? null}\n      wrapperProps={{\n        'data-testid': selectors.components.ReactMonacoEditor.editorLazy,\n      }}\n    />\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      marginBottom: 'unset',\n      marginLeft: theme.spacing(1),\n    }),\n  };\n};\n","// We use `import type` to guarantee it'll be erased from the JS and it doesnt accidently bundle monaco\nimport type { EditorProps } from '@monaco-editor/react';\nimport type * as monacoType from 'monaco-editor/esm/vs/editor/editor.api';\n\n// we do not allow customizing the theme.\n// (theme is complicated in Monaco, right now there is\n// a limitation where all monaco editors must have\n// the same theme, see\n// https://github.com/microsoft/monaco-editor/issues/338#issuecomment-274837186\n// )\nexport type ReactMonacoEditorProps = Omit<EditorProps, 'theme'>;\n\nexport type CodeEditorChangeHandler = (value: string) => void;\nexport type CodeEditorSuggestionProvider = () => CodeEditorSuggestionItem[];\n\nexport type { monacoType as monacoTypes };\nexport type Monaco = typeof monacoType;\nexport type MonacoEditor = monacoType.editor.IStandaloneCodeEditor;\nexport type MonacoOptions = MonacoOptionsWithGrafanaDefaults;\n\nexport interface CodeEditorProps {\n  value: string;\n  language: string;\n  width?: number | string;\n  height?: number | string;\n\n  readOnly?: boolean;\n  showMiniMap?: boolean;\n  showLineNumbers?: boolean;\n  wordWrap?: boolean;\n  monacoOptions?: MonacoOptions;\n\n  /**\n   * Callback before the editor has mounted that gives you raw access to monaco\n   */\n  onBeforeEditorMount?: (monaco: Monaco) => void;\n\n  /**\n   * Callback after the editor has mounted that gives you raw access to monaco\n   */\n  onEditorDidMount?: (editor: MonacoEditor, monaco: Monaco) => void;\n\n  /** Callback before the edior has unmounted */\n  onEditorWillUnmount?: () => void;\n\n  /** Handler to be performed when editor is blurred */\n  onBlur?: CodeEditorChangeHandler;\n\n  /** Handler to be performed when editor is focused */\n  onFocus?: CodeEditorChangeHandler;\n\n  /** Handler to be performed whenever the text inside the editor changes */\n  onChange?: CodeEditorChangeHandler;\n\n  /** Handler to be performed when Cmd/Ctrl+S is pressed */\n  onSave?: CodeEditorChangeHandler;\n\n  /**\n   * Language agnostic suggestion completions -- typically for template variables\n   */\n  getSuggestions?: CodeEditorSuggestionProvider;\n\n  containerStyles?: string;\n}\n\n/**\n * @alpha\n */\nexport enum CodeEditorSuggestionItemKind {\n  Method = 'method',\n  Field = 'field',\n  Property = 'property',\n  Constant = 'constant',\n  Text = 'text',\n}\n\n/**\n * @alpha\n */\nexport interface CodeEditorSuggestionItem {\n  /**\n   * The label of this completion item. By default\n   * this is also the text that is inserted when selecting\n   * this completion.\n   */\n  label: string;\n\n  /**\n   * The kind of this completion item. An icon is chosen\n   * by the editor based on the kind.\n   */\n  kind?: CodeEditorSuggestionItemKind;\n\n  /**\n   * A human-readable string with additional information\n   * about this item, like type or symbol information.\n   */\n  detail?: string;\n\n  /**\n   * A human-readable string that represents a doc-comment.\n   */\n  documentation?: string; // | IMarkdownString;\n\n  /**\n   * A string or snippet that should be inserted in a document when selecting\n   * this completion. When `falsy` the `label` is used.\n   */\n  insertText?: string;\n}\n\n/**\n * This interface will extend the original Monaco editor options interface\n * but changing the code comments to contain the proper default values to\n * prevent the consumer of the CodeEditor to get incorrect documentation in editor.\n */\nexport interface MonacoOptionsWithGrafanaDefaults extends monacoType.editor.IStandaloneEditorConstructionOptions {\n  /**\n   * Enable custom contextmenu.\n   * Defaults to false.\n   */\n  contextmenu?: boolean;\n  /**\n   * The number of spaces a tab is equal to.\n   * This setting is overridden based on the file contents when `detectIndentation` is on.\n   * Defaults to 4.\n   */\n  tabSize?: number;\n  /**\n   * Show code lens\n   * Defaults to false.\n   */\n  codeLens?: boolean;\n  /**\n   * Control the width of line numbers, by reserving horizontal space for rendering at least an amount of digits.\n   * Defaults to 4.\n   */\n  lineNumbersMinChars?: number;\n  /**\n   * The width reserved for line decorations (in px).\n   * Line decorations are placed between line numbers and the editor content.\n   * You can pass in a string in the format floating point followed by \"ch\". e.g. 1.3ch.\n   * Defaults to 1 * theme.spacing.gridSize.\n   */\n  lineDecorationsWidth?: number | string;\n  /**\n   * Controls if a border should be drawn around the overview ruler.\n   * Defaults to `false`.\n   */\n  overviewRulerBorder?: boolean;\n  /**\n   * Enable that the editor will install an interval to check if its container dom node size has changed.\n   * Enabling this might have a severe performance impact.\n   * Defaults to true.\n   */\n  automaticLayout?: boolean;\n\n  /**\n   * Always consume mouse wheel events (always call preventDefault() and stopPropagation() on the browser events).\n   * Always consuming mouse wheel events will prevent the page from scrolling if the cursor is over the editor.\n   * Defaults to `false`.\n   */\n  alwaysConsumeMouseWheel?: boolean;\n}\n","import type * as monacoType from 'monaco-editor/esm/vs/editor/editor.api';\n\nimport { CodeEditorSuggestionItem, CodeEditorSuggestionItemKind, CodeEditorSuggestionProvider, Monaco } from './types';\n\n/**\n * @internal -- only exported for tests\n */\nexport function findInsertIndex(line: string): { index: number; prefix: string } {\n  for (let i = line.length - 1; i > 0; i--) {\n    const ch = line.charAt(i);\n    if (ch === '$') {\n      return {\n        index: i,\n        prefix: line.substring(i),\n      };\n    }\n\n    // Keep these seperators\n    if (ch === ' ' || ch === '\\t' || ch === '\"' || ch === \"'\") {\n      return {\n        index: i + 1,\n        prefix: line.substring(i + 1),\n      };\n    }\n  }\n  return {\n    index: 0,\n    prefix: line,\n  };\n}\n\nfunction getCompletionItems(\n  monaco: Monaco,\n  prefix: string,\n  suggestions: CodeEditorSuggestionItem[],\n  range: monacoType.IRange\n): monacoType.languages.CompletionItem[] {\n  const items: monacoType.languages.CompletionItem[] = [];\n  for (const suggestion of suggestions) {\n    if (prefix && !suggestion.label.startsWith(prefix)) {\n      continue; // skip non-matching suggestions\n    }\n\n    items.push({\n      ...suggestion,\n      kind: mapKinds(monaco, suggestion.kind),\n      range,\n      insertText: suggestion.insertText ?? suggestion.label,\n    });\n  }\n  return items;\n}\n\nfunction mapKinds(monaco: Monaco, sug?: CodeEditorSuggestionItemKind): monacoType.languages.CompletionItemKind {\n  switch (sug) {\n    case CodeEditorSuggestionItemKind.Method:\n      return monaco.languages.CompletionItemKind.Method;\n    case CodeEditorSuggestionItemKind.Field:\n      return monaco.languages.CompletionItemKind.Field;\n    case CodeEditorSuggestionItemKind.Property:\n      return monaco.languages.CompletionItemKind.Property;\n    case CodeEditorSuggestionItemKind.Constant:\n      return monaco.languages.CompletionItemKind.Constant;\n    case CodeEditorSuggestionItemKind.Text:\n      return monaco.languages.CompletionItemKind.Text;\n  }\n  return monaco.languages.CompletionItemKind.Text;\n}\n\n/**\n * @alpha\n */\nexport function registerSuggestions(\n  monaco: Monaco,\n  language: string,\n  getSuggestions: CodeEditorSuggestionProvider,\n  modelId: string\n): monacoType.IDisposable | undefined {\n  if (!language || !getSuggestions) {\n    return undefined;\n  }\n  return monaco.languages.registerCompletionItemProvider(language, {\n    triggerCharacters: ['$'],\n\n    provideCompletionItems: (model, position, context) => {\n      // only return these suggestions for the specified modelId\n      // prevents duplicate suggestions when multiple editors are open\n      if (model.id !== modelId) {\n        return undefined;\n      }\n      const range = {\n        startLineNumber: position.lineNumber,\n        endLineNumber: position.lineNumber,\n        startColumn: position.column,\n        endColumn: position.column,\n      };\n\n      // Simple check if this was triggered by pressing `$`\n      if (context.triggerCharacter === '$') {\n        range.startColumn = position.column - 1;\n        return {\n          suggestions: getCompletionItems(monaco, '$', getSuggestions(), range),\n        };\n      }\n\n      // Find the replacement region\n      const currentLine = model.getValueInRange({\n        startLineNumber: position.lineNumber,\n        startColumn: 1,\n        endLineNumber: position.lineNumber,\n        endColumn: position.column,\n      });\n\n      const { index, prefix } = findInsertIndex(currentLine);\n      range.startColumn = index + 1;\n\n      const suggestions = getCompletionItems(monaco, prefix, getSuggestions(), range);\n      if (suggestions.length) {\n        // NOTE, this will replace any language provided suggestions\n        return { suggestions };\n      }\n\n      // Default language suggestions\n      return undefined;\n    },\n  });\n}\n","import { css } from '@emotion/css';\nimport type * as monacoType from 'monaco-editor/esm/vs/editor/editor.api';\nimport { PureComponent } from 'react';\n\nimport { GrafanaTheme2, monacoLanguageRegistry } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { withTheme2 } from '../../themes/ThemeContext';\nimport { Themeable2 } from '../../types/theme';\n\nimport { ReactMonacoEditorLazy } from './ReactMonacoEditorLazy';\nimport { registerSuggestions } from './suggestions';\nimport { CodeEditorProps, Monaco, MonacoEditor as MonacoEditorType, MonacoOptions } from './types';\n\ntype Props = CodeEditorProps & Themeable2;\n\nclass UnthemedCodeEditor extends PureComponent<Props> {\n  completionCancel?: monacoType.IDisposable;\n  monaco?: Monaco;\n  modelId?: string;\n\n  constructor(props: Props) {\n    super(props);\n  }\n\n  componentWillUnmount() {\n    if (this.completionCancel) {\n      this.completionCancel.dispose();\n    }\n\n    this.props.onEditorWillUnmount?.();\n  }\n\n  componentDidUpdate(oldProps: Props) {\n    const { getSuggestions, language } = this.props;\n\n    const newLanguage = oldProps.language !== language;\n    const newGetSuggestions = oldProps.getSuggestions !== getSuggestions;\n\n    if (newGetSuggestions || newLanguage) {\n      if (this.completionCancel) {\n        this.completionCancel.dispose();\n      }\n\n      if (!this.monaco) {\n        console.warn('Monaco instance not loaded yet');\n        return;\n      }\n\n      if (getSuggestions && this.modelId) {\n        this.completionCancel = registerSuggestions(this.monaco, language, getSuggestions, this.modelId);\n      }\n    }\n\n    if (newLanguage) {\n      this.loadCustomLanguage();\n    }\n  }\n\n  loadCustomLanguage = () => {\n    const { language } = this.props;\n\n    const customLanguage = monacoLanguageRegistry.getIfExists(language);\n\n    if (customLanguage) {\n      return customLanguage.init();\n    }\n\n    return Promise.resolve();\n  };\n\n  // This is replaced with a real function when the actual editor mounts\n  getEditorValue = () => '';\n\n  onBlur = () => {\n    const { onBlur } = this.props;\n    if (onBlur) {\n      onBlur(this.getEditorValue());\n    }\n  };\n\n  onFocus = () => {\n    const { onFocus } = this.props;\n    if (onFocus) {\n      onFocus(this.getEditorValue());\n    }\n  };\n\n  onSave = () => {\n    const { onSave } = this.props;\n    if (onSave) {\n      onSave(this.getEditorValue());\n    }\n  };\n\n  handleBeforeMount = (monaco: Monaco) => {\n    this.monaco = monaco;\n\n    const { onBeforeEditorMount } = this.props;\n\n    onBeforeEditorMount?.(monaco);\n  };\n\n  handleOnMount = (editor: MonacoEditorType, monaco: Monaco) => {\n    const { getSuggestions, language, onChange, onEditorDidMount } = this.props;\n\n    this.modelId = editor.getModel()?.id;\n    this.getEditorValue = () => editor.getValue();\n\n    if (getSuggestions && this.modelId) {\n      this.completionCancel = registerSuggestions(monaco, language, getSuggestions, this.modelId);\n    }\n\n    // Save when pressing Ctrl+S or Cmd+S\n    editor.onKeyDown((e: monacoType.IKeyboardEvent) => {\n      if (e.keyCode === monaco.KeyCode.KeyS && (e.ctrlKey || e.metaKey)) {\n        e.preventDefault();\n        this.onSave();\n      }\n    });\n\n    if (onChange) {\n      editor.getModel()?.onDidChangeContent(() => onChange(editor.getValue()));\n    }\n\n    if (onEditorDidMount) {\n      onEditorDidMount(editor, monaco);\n    }\n  };\n\n  render() {\n    const { theme, language, width, height, showMiniMap, showLineNumbers, readOnly, wordWrap, monacoOptions } =\n      this.props;\n    const { alwaysConsumeMouseWheel, ...restMonacoOptions } = monacoOptions ?? {};\n\n    const value = this.props.value ?? '';\n    const longText = value.length > 100;\n\n    const containerStyles = this.props.containerStyles ?? getStyles(theme).container;\n\n    const options: MonacoOptions = {\n      wordWrap: wordWrap ? 'on' : 'off',\n      tabSize: 2,\n      codeLens: false,\n      contextmenu: false,\n      minimap: {\n        enabled: longText && showMiniMap,\n        renderCharacters: false,\n      },\n\n      readOnly,\n      lineNumbersMinChars: 4,\n      lineDecorationsWidth: 1 * theme.spacing.gridSize,\n      overviewRulerBorder: false,\n      automaticLayout: true,\n      padding: {\n        top: 0.5 * theme.spacing.gridSize,\n        bottom: 0.5 * theme.spacing.gridSize,\n      },\n      fixedOverflowWidgets: true, // Ensures suggestions menu is drawn on top\n\n      scrollbar: {\n        alwaysConsumeMouseWheel: alwaysConsumeMouseWheel ?? false,\n      },\n    };\n\n    if (!showLineNumbers) {\n      options.glyphMargin = false;\n      options.folding = false;\n      options.lineNumbers = 'off';\n      options.lineNumbersMinChars = 0;\n    }\n\n    return (\n      <div\n        className={containerStyles}\n        onFocus={this.onFocus}\n        onBlur={this.onBlur}\n        data-testid={selectors.components.CodeEditor.container}\n      >\n        <ReactMonacoEditorLazy\n          width={width}\n          height={height}\n          language={language}\n          value={value}\n          options={{\n            ...options,\n            ...(restMonacoOptions ?? {}),\n          }}\n          beforeMount={this.handleBeforeMount}\n          onMount={this.handleOnMount}\n          keepCurrentModel={true}\n        />\n      </div>\n    );\n  }\n}\n\nexport const CodeEditor = withTheme2(UnthemedCodeEditor);\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      borderRadius: theme.shape.radius.default,\n      border: `1px solid ${theme.components.input.borderColor}`,\n    }),\n  };\n};\n","import { VariableSuggestion } from '@grafana/data';\n\nimport { CodeEditorSuggestionItem, CodeEditorSuggestionItemKind } from './types';\n\n/**\n * @alpha\n */\nexport function variableSuggestionToCodeEditorSuggestion(sug: VariableSuggestion): CodeEditorSuggestionItem {\n  const label = '${' + sug.value + '}';\n  const detail = sug.value === sug.label ? sug.origin : `${sug.label} / ${sug.origin}`;\n\n  return {\n    label,\n    kind: CodeEditorSuggestionItemKind.Property,\n    detail,\n    documentation: sug.documentation,\n  };\n}\n","import { NavModelItem } from '@grafana/data';\n\nimport { IconName } from '../../types/icon';\nimport { Tab } from '../Tabs/Tab';\nimport { TabsBar } from '../Tabs/TabsBar';\n\nimport { ModalHeader } from './ModalHeader';\n\ninterface ModalTab {\n  value: string;\n  label: string;\n  icon?: IconName;\n  tabSuffix?: NavModelItem['tabSuffix'];\n}\n\ninterface Props {\n  icon: IconName;\n  title: string;\n  tabs: ModalTab[];\n  activeTab: string;\n  onChangeTab(tab: ModalTab): void;\n}\n\nexport const ModalTabsHeader = ({ icon, title, tabs, activeTab, onChangeTab }: Props) => {\n  return (\n    <ModalHeader icon={icon} title={title}>\n      <TabsBar hideBorder={true}>\n        {tabs.map((t, index) => {\n          return (\n            <Tab\n              key={`${t.value}-${index}`}\n              label={t.label}\n              icon={t.icon}\n              suffix={t.tabSuffix}\n              active={t.value === activeTab}\n              onChangeTab={() => onChangeTab(t)}\n            />\n          );\n        })}\n      </TabsBar>\n    </ModalHeader>\n  );\n};\n","import { css } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { IconName } from '../../types/icon';\n\ninterface Props {\n  /** @deprecated */\n  icon?: IconName;\n  /** @deprecated */\n  iconClass?: string;\n}\n\n/** @internal */\nexport const ModalTabContent = ({ children }: React.PropsWithChildren<Props>) => {\n  const styles = useStyles2(getStyles);\n\n  return (\n    <div>\n      <div className={styles.header}>\n        <div className={styles.content}>{children}</div>\n      </div>\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  header: css({\n    display: 'flex',\n    margin: theme.spacing(0, 0, 3, 0),\n  }),\n  content: css({\n    flexGrow: 1,\n  }),\n});\n","import { Component } from 'react';\nimport * as React from 'react';\n\nexport interface ModalsContextState {\n  component: React.ComponentType<any> | null;\n  props: any;\n  showModal: <T>(component: React.ComponentType<T>, props: T) => void;\n  hideModal: () => void;\n}\n\nexport const ModalsContext = React.createContext<ModalsContextState>({\n  component: null,\n  props: {},\n  showModal: () => {},\n  hideModal: () => {},\n});\n\ninterface ModalsProviderProps {\n  children: React.ReactNode;\n  /** Set default component to render as modal. Useful when rendering modals from Angular */\n  component?: React.ComponentType<any> | null;\n  /** Set default component props. Useful when rendering modals from Angular */\n  props?: any;\n}\n\n/**\n * @deprecated.\n * Not the real implementation used by core.\n */\nexport class ModalsProvider extends Component<ModalsProviderProps, ModalsContextState> {\n  constructor(props: ModalsProviderProps) {\n    super(props);\n    this.state = {\n      component: props.component || null,\n      props: props.props || {},\n      showModal: this.showModal,\n      hideModal: this.hideModal,\n    };\n  }\n\n  showModal = <T,>(component: React.ComponentType<T>, props: T) => {\n    this.setState({\n      component,\n      props,\n    });\n  };\n\n  hideModal = () => {\n    this.setState({\n      component: null,\n      props: {},\n    });\n  };\n\n  render() {\n    return <ModalsContext.Provider value={this.state}>{this.props.children}</ModalsContext.Provider>;\n  }\n}\n\nexport const ModalRoot = () => (\n  <ModalsContext.Consumer>\n    {({ component: Component, props }) => {\n      return Component ? <Component {...props} /> : null;\n    }}\n  </ModalsContext.Consumer>\n);\n\nexport const ModalsController = ModalsContext.Consumer;\n","import { css, cx } from '@emotion/css';\nimport { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay } from '@react-aria/overlays';\nimport { Children, forwardRef, HTMLAttributes, useState, useRef, useLayoutEffect, createRef } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { getPortalContainer } from '../Portal/Portal';\n\nimport { ToolbarButton } from './ToolbarButton';\nexport interface Props extends HTMLAttributes<HTMLDivElement> {\n  className?: string;\n  /** Determine flex-alignment of child buttons. Needed for overflow behaviour. */\n  alignment?: 'left' | 'right';\n}\n\nexport const ToolbarButtonRow = forwardRef<HTMLDivElement, Props>(\n  ({ alignment = 'left', className, children, ...rest }, ref) => {\n    // null/undefined are valid react children so we need to filter them out to prevent unnecessary padding\n    const childrenWithoutNull = Children.toArray(children).filter((child) => child != null);\n    const [childVisibility, setChildVisibility] = useState<boolean[]>(Array(childrenWithoutNull.length).fill(false));\n    const containerRef = useRef<HTMLDivElement>(null);\n    const [showOverflowItems, setShowOverflowItems] = useState(false);\n    const overflowRef = useRef<HTMLDivElement>(null);\n    const overflowItemsRef = createRef<HTMLDivElement>();\n    const { overlayProps } = useOverlay(\n      {\n        onClose: () => setShowOverflowItems(false),\n        isDismissable: true,\n        isOpen: showOverflowItems,\n        shouldCloseOnInteractOutside: (element: Element) => {\n          const portalContainer = getPortalContainer();\n          return !overflowRef.current?.contains(element) && !portalContainer.contains(element);\n        },\n      },\n      overflowItemsRef\n    );\n    const { dialogProps } = useDialog({}, overflowItemsRef);\n    const theme = useTheme2();\n    const overflowButtonOrder = alignment === 'left' ? childVisibility.indexOf(false) - 1 : childVisibility.length;\n    const styles = getStyles(theme, overflowButtonOrder, alignment);\n\n    useLayoutEffect(() => {\n      const intersectionObserver = new IntersectionObserver(\n        (entries) => {\n          entries.forEach((entry) => {\n            if (entry.target instanceof HTMLElement && entry.target.parentNode) {\n              const index = Array.prototype.indexOf.call(entry.target.parentNode.children, entry.target);\n              setChildVisibility((prev) => {\n                const newVisibility = [...prev];\n                newVisibility[index] = entry.isIntersecting;\n                return newVisibility;\n              });\n            }\n          });\n        },\n        {\n          threshold: 1,\n          root: containerRef.current,\n        }\n      );\n      if (containerRef.current) {\n        Array.from(containerRef.current.children).forEach((item) => {\n          // don't observe the overflow button\n          if (item instanceof HTMLElement && item !== overflowRef.current) {\n            intersectionObserver.observe(item);\n          }\n        });\n      }\n      return () => intersectionObserver.disconnect();\n    }, [children]);\n\n    return (\n      <div ref={containerRef} className={cx(styles.container, className)} {...rest}>\n        {childrenWithoutNull.map((child, index) => (\n          <div\n            key={index}\n            style={{ order: index, visibility: childVisibility[index] ? 'visible' : 'hidden' }}\n            className={styles.childWrapper}\n          >\n            {child}\n          </div>\n        ))}\n        {childVisibility.includes(false) && (\n          <div ref={overflowRef} className={styles.overflowButton}>\n            <ToolbarButton\n              variant={showOverflowItems ? 'active' : 'default'}\n              tooltip={t('grafana-ui.toolbar-button-row.show-more', 'Show more items')}\n              onClick={() => setShowOverflowItems(!showOverflowItems)}\n              icon=\"ellipsis-v\"\n              iconOnly\n              narrow\n            />\n            {showOverflowItems && (\n              <FocusScope contain autoFocus>\n                <div className={styles.overflowItems} ref={overflowItemsRef} {...overlayProps} {...dialogProps}>\n                  {childrenWithoutNull.map((child, index) => !childVisibility[index] && child)}\n                </div>\n              </FocusScope>\n            )}\n          </div>\n        )}\n      </div>\n    );\n  }\n);\n\nToolbarButtonRow.displayName = 'ToolbarButtonRow';\n\nconst getStyles = (theme: GrafanaTheme2, overflowButtonOrder: number, alignment: Props['alignment']) => ({\n  overflowButton: css({\n    order: overflowButtonOrder,\n  }),\n  overflowItems: css({\n    alignItems: 'center',\n    backgroundColor: theme.colors.background.primary,\n    borderRadius: theme.shape.radius.default,\n    boxShadow: theme.shadows.z2,\n    display: 'flex',\n    flexWrap: 'wrap',\n    gap: theme.spacing(1),\n    marginTop: theme.spacing(1),\n    maxWidth: '80vw',\n    padding: theme.spacing(0.5, 1),\n    position: 'absolute',\n    right: 0,\n    top: '100%',\n    width: 'max-content',\n    zIndex: theme.zIndex.dropdown,\n  }),\n  container: css({\n    alignItems: 'center',\n    display: 'flex',\n    gap: theme.spacing(1),\n    justifyContent: alignment === 'left' ? 'flex-start' : 'flex-end',\n    minWidth: 0,\n    position: 'relative',\n  }),\n  childWrapper: css({\n    alignItems: 'center',\n    display: 'flex',\n    gap: theme.spacing(1),\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport { memo, Children, ReactNode } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { IconName } from '../../types/icon';\nimport { Icon } from '../Icon/Icon';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Link } from '../Link/Link';\nimport { ToolbarButtonRow } from '../ToolbarButton/ToolbarButtonRow';\n\nexport interface Props {\n  pageIcon?: IconName;\n  title?: string;\n  section?: string;\n  parent?: string;\n  onGoBack?: () => void;\n  titleHref?: string;\n  parentHref?: string;\n  leftItems?: ReactNode[];\n  children?: ReactNode;\n  className?: string;\n  isFullscreen?: boolean;\n  'aria-label'?: string;\n  buttonOverflowAlignment?: 'left' | 'right';\n  /**\n   * Forces left items to be visible on small screens.\n   * By default left items are hidden on small screens.\n   */\n  forceShowLeftItems?: boolean;\n}\n\n/** @deprecated Use Page instead */\nexport const PageToolbar = memo(\n  ({\n    title,\n    section,\n    parent,\n    pageIcon,\n    onGoBack,\n    children,\n    titleHref,\n    parentHref,\n    leftItems,\n    isFullscreen,\n    className,\n    /** main nav-container aria-label **/\n    'aria-label': ariaLabel,\n    buttonOverflowAlignment = 'right',\n    forceShowLeftItems = false,\n  }: Props) => {\n    const styles = useStyles2(getStyles);\n\n    /**\n     * .page-toolbar css class is used for some legacy css view modes (TV/Kiosk) and\n     * media queries for mobile view when toolbar needs left padding to make room\n     * for mobile menu icon. This logic hopefully can be changed when we move to a full react\n     * app and change how the app side menu & mobile menu is rendered.\n     */\n    const mainStyle = cx(\n      'page-toolbar',\n      styles.toolbar,\n      {\n        ['page-toolbar--fullscreen']: isFullscreen,\n        [styles.noPageIcon]: !pageIcon,\n      },\n      className\n    );\n\n    const titleEl = (\n      <>\n        <span className={styles.truncateText}>{title}</span>\n        {section && (\n          <span className={styles.pre}>\n            {' / '}\n            {section}\n          </span>\n        )}\n      </>\n    );\n\n    const goBackLabel = t('grafana-ui.page-toolbar.go-back', 'Go back (Esc)');\n    const searchParentFolderLabel = t(\n      'grafana-ui.page-toolbar.search-parent-folder',\n      'Search dashboard in the {{parent}} folder',\n      { parent }\n    );\n    const searchDashboardNameLabel = t('grafana-ui.page-toolbar.search-dashboard-name', 'Search dashboard by name');\n    const searchLinksLabel = t('grafana-ui.page-toolbar.search-links', 'Search links');\n\n    return (\n      <nav className={mainStyle} aria-label={ariaLabel}>\n        <div className={styles.leftWrapper}>\n          {pageIcon && !onGoBack && (\n            <div className={styles.pageIcon}>\n              <Icon name={pageIcon} size=\"lg\" aria-hidden />\n            </div>\n          )}\n          {onGoBack && (\n            <div className={styles.pageIcon}>\n              <IconButton\n                name=\"arrow-left\"\n                tooltip={goBackLabel}\n                tooltipPlacement=\"bottom\"\n                size=\"xxl\"\n                data-testid={selectors.components.BackButton.backArrow}\n                onClick={onGoBack}\n              />\n            </div>\n          )}\n          <nav aria-label={searchLinksLabel} className={styles.navElement}>\n            {parent && parentHref && (\n              <>\n                <Link\n                  aria-label={searchParentFolderLabel}\n                  className={cx(styles.titleText, styles.parentLink, styles.titleLink, styles.truncateText)}\n                  href={parentHref}\n                >\n                  {parent} <span className={styles.parentIcon}></span>\n                </Link>\n                {titleHref && (\n                  <span className={cx(styles.titleText, styles.titleDivider)} aria-hidden>\n                    {'/'}\n                  </span>\n                )}\n              </>\n            )}\n\n            {(title || Boolean(leftItems?.length)) && (\n              <div className={styles.titleWrapper}>\n                {title && (\n                  <h1 className={styles.h1Styles}>\n                    {titleHref ? (\n                      <Link\n                        aria-label={searchDashboardNameLabel}\n                        className={cx(styles.titleText, styles.titleLink)}\n                        href={titleHref}\n                      >\n                        {titleEl}\n                      </Link>\n                    ) : (\n                      <div className={styles.titleText}>{titleEl}</div>\n                    )}\n                  </h1>\n                )}\n\n                {leftItems?.map((child, index) => (\n                  <div\n                    className={cx(styles.leftActionItem, { [styles.forceShowLeftActionItems]: forceShowLeftItems })}\n                    key={index}\n                  >\n                    {child}\n                  </div>\n                ))}\n              </div>\n            )}\n          </nav>\n        </div>\n        <ToolbarButtonRow alignment={buttonOverflowAlignment}>\n          {Children.toArray(children).filter(Boolean)}\n        </ToolbarButtonRow>\n      </nav>\n    );\n  }\n);\n\nPageToolbar.displayName = 'PageToolbar';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const { spacing, typography } = theme;\n\n  const focusStyle = getFocusStyles(theme);\n\n  return {\n    pre: css({\n      whiteSpace: 'pre',\n    }),\n    toolbar: css({\n      alignItems: 'center',\n      background: theme.colors.background.canvas,\n      display: 'flex',\n      gap: theme.spacing(2),\n      justifyContent: 'space-between',\n      padding: theme.spacing(1.5, 2),\n\n      [theme.breakpoints.down('md')]: {\n        paddingLeft: '53px',\n      },\n    }),\n    noPageIcon: css({\n      [theme.breakpoints.down('md')]: {\n        paddingLeft: theme.spacing(2),\n      },\n    }),\n    leftWrapper: css({\n      display: 'flex',\n      flexWrap: 'nowrap',\n      maxWidth: '70%',\n    }),\n    pageIcon: css({\n      display: 'none',\n      [theme.breakpoints.up('sm')]: {\n        display: 'flex',\n        paddingRight: theme.spacing(1),\n        alignItems: 'center',\n      },\n    }),\n    truncateText: css({\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      whiteSpace: 'nowrap',\n    }),\n    titleWrapper: css({\n      display: 'flex',\n      margin: 0,\n      minWidth: 0,\n    }),\n    navElement: css({\n      display: 'flex',\n      alignItems: 'center',\n      minWidth: 0,\n    }),\n    h1Styles: css({\n      margin: spacing(0, 1, 0, 0),\n      lineHeight: 'inherit',\n      flexGrow: 1,\n      minWidth: 0,\n    }),\n    parentIcon: css({\n      marginLeft: theme.spacing(0.5),\n    }),\n    titleText: css({\n      display: 'flex',\n      fontSize: typography.size.lg,\n      margin: 0,\n      borderRadius: theme.shape.radius.default,\n    }),\n    titleLink: css({\n      '&:focus-visible': focusStyle,\n    }),\n    titleDivider: css({\n      padding: spacing(0, 0.5, 0, 0.5),\n      display: 'none',\n      [theme.breakpoints.up('md')]: {\n        display: 'unset',\n      },\n    }),\n    parentLink: css({\n      display: 'none',\n      [theme.breakpoints.up('md')]: {\n        display: 'unset',\n        flex: 1,\n      },\n    }),\n    leftActionItem: css({\n      display: 'none',\n      alignItems: 'center',\n      paddingRight: spacing(0.5),\n      [theme.breakpoints.up('md')]: {\n        display: 'flex',\n      },\n    }),\n    forceShowLeftActionItems: css({\n      display: 'flex',\n    }),\n  };\n};\n","import { isEqual } from 'lodash';\nimport { PureComponent } from 'react';\nimport { interval, Subscription, Subject, of, NEVER } from 'rxjs';\nimport { tap, switchMap } from 'rxjs/operators';\n\nimport { stringToMs, SelectableValue } from '@grafana/data';\n\nimport { RefreshPicker } from '../RefreshPicker/RefreshPicker';\n\nexport function getIntervalFromString(strInterval: string): SelectableValue<number> {\n  return {\n    label: strInterval,\n    value: stringToMs(strInterval),\n  };\n}\n\ninterface Props {\n  func: () => unknown;\n  loading: boolean;\n  interval: string;\n}\n\nexport class SetInterval extends PureComponent<Props> {\n  private propsSubject: Subject<Props>;\n  private subscription: Subscription | null;\n\n  constructor(props: Props) {\n    super(props);\n    this.propsSubject = new Subject<Props>();\n    this.subscription = null;\n  }\n\n  componentDidMount() {\n    // Creating a subscription to propsSubject. This subject pushes values every time\n    // SetInterval's props change\n    this.subscription = this.propsSubject\n      .pipe(\n        // switchMap creates a new observables based on the input stream,\n        // which becomes part of the propsSubject stream\n        switchMap((props) => {\n          // If the query is live, empty value is emitted. `of` creates single value,\n          // which is merged to propsSubject stream\n          if (RefreshPicker.isLive(props.interval)) {\n            return of({});\n          }\n\n          // When query is loading, a new stream is merged. But it's a stream that emits no values(NEVER),\n          // hence next call of this function will happen when query changes, and new props are passed into this component\n          // When query is NOT loading, a new value is emitted, this time it's an interval value,\n          // which makes tap function below execute on that interval basis.\n          return props.loading ? NEVER : interval(stringToMs(props.interval));\n        }),\n        // tap will execute function passed via func prop\n        // * on value from `of` stream merged if query is live\n        // * on specified interval (triggered by values emitted by interval)\n        tap(() => this.props.func())\n      )\n      .subscribe();\n\n    // When component has mounted, propsSubject emits its first value\n    this.propsSubject.next(this.props);\n  }\n\n  componentDidUpdate(prevProps: Props) {\n    if (\n      (RefreshPicker.isLive(prevProps.interval) && RefreshPicker.isLive(this.props.interval)) ||\n      isEqual(prevProps, this.props)\n    ) {\n      return;\n    }\n    // if props changed, a new value is emitted from propsSubject\n    this.propsSubject.next(this.props);\n  }\n\n  componentWillUnmount() {\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n    }\n\n    this.propsSubject.unsubscribe();\n  }\n\n  render(): null {\n    return null;\n  }\n}\n","import { css, cx } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport type DragHandlePosition = 'middle' | 'start' | 'end';\n\nexport const getDragStyles = (theme: GrafanaTheme2, handlePosition?: DragHandlePosition) => {\n  const position = handlePosition || 'middle';\n  const baseColor = theme.colors.emphasize(theme.colors.background.secondary, 0.15);\n  const hoverColor = theme.colors.primary.border;\n  const clickTargetSize = theme.spacing(2);\n  const handlebarThickness = 4;\n  const handlebarWidth = 200;\n  let verticalOffset = '50%';\n  let horizontalOffset = '50%';\n\n  switch (position) {\n    case 'start': {\n      verticalOffset = '0%';\n      horizontalOffset = '0%';\n      break;\n    }\n    case 'end': {\n      verticalOffset = '100%';\n      horizontalOffset = '100%';\n      break;\n    }\n  }\n\n  const dragHandleBase = css({\n    position: 'relative',\n\n    '&:before': {\n      content: '\"\"',\n      position: 'absolute',\n      transition: theme.transitions.create('border-color'),\n      zIndex: 1,\n    },\n\n    '&:after': {\n      background: baseColor,\n      content: '\"\"',\n      position: 'absolute',\n      transition: theme.transitions.create('background'),\n      transform: 'translate(-50%, -50%)',\n      borderRadius: theme.shape.radius.pill,\n      zIndex: 1,\n    },\n\n    '&:hover': {\n      '&:before': {\n        borderColor: hoverColor,\n      },\n\n      '&:after': {\n        background: hoverColor,\n      },\n    },\n  });\n\n  const beforeVertical = {\n    borderRight: '1px solid transparent',\n    height: '100%',\n    left: verticalOffset,\n    transform: 'translateX(-50%)',\n  };\n\n  const beforeHorizontal = {\n    borderTop: '1px solid transparent',\n    top: horizontalOffset,\n    transform: 'translateY(-50%)',\n  };\n\n  return {\n    dragHandleVertical: cx(\n      dragHandleBase,\n      css({\n        cursor: 'col-resize',\n        width: clickTargetSize,\n\n        '&:before': beforeVertical,\n\n        '&:after': {\n          left: verticalOffset,\n          top: '50%',\n          height: handlebarWidth,\n          width: handlebarThickness,\n        },\n      })\n    ),\n    dragHandleHorizontal: cx(\n      dragHandleBase,\n      css({\n        height: clickTargetSize,\n        cursor: 'row-resize',\n\n        '&:before': beforeHorizontal,\n\n        '&:after': {\n          left: '50%',\n          top: horizontalOffset,\n          height: handlebarThickness,\n          width: handlebarWidth,\n        },\n      })\n    ),\n    dragHandleBaseVertical: cx(\n      dragHandleBase,\n      css({\n        cursor: 'col-resize',\n        width: clickTargetSize,\n\n        '&:before': beforeVertical,\n      })\n    ),\n    dragHandleBaseHorizontal: cx(\n      dragHandleBase,\n      css({\n        cursor: 'row-resize',\n        height: clickTargetSize,\n\n        '&:before': beforeHorizontal,\n      })\n    ),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay } from '@react-aria/overlays';\nimport RcDrawer from 'rc-drawer';\nimport { ReactNode, useCallback, useEffect, useState } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getDragStyles } from '../DragHandle/DragHandle';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { ScrollContainer } from '../ScrollContainer/ScrollContainer';\nimport { Text } from '../Text/Text';\n\nimport 'rc-drawer/assets/index.css';\n\nexport interface Props {\n  children: ReactNode;\n  /** Title shown at the top of the drawer */\n  title?: ReactNode;\n  /** Subtitle shown below the title */\n  subtitle?: ReactNode;\n  /** Should the Drawer be closable by clicking on the mask, defaults to true */\n  closeOnMaskClick?: boolean;\n  /** @deprecated */\n  inline?: boolean;\n  /**\n   * @deprecated use the size property instead\n   **/\n  width?: number | string;\n  /**\n   * @deprecated use a large size instead if high width is needed\n   **/\n  expandable?: boolean;\n  /**\n   * Specifies the width and min-width.\n   * sm = width 25vw & min-width 384px\n   * md = width 50vw & min-width 568px\n   * lg = width 75vw & min-width 744px\n   **/\n  size?: 'sm' | 'md' | 'lg';\n  /** Tabs */\n  tabs?: React.ReactNode;\n  /**\n   * Whether the content should be wrapped in a ScrollContainer\n   * Only change this if you intend to manage scroll behaviour yourself\n   * (e.g. having a split pane with independent scrolling)\n   **/\n  scrollableContent?: boolean;\n  /** Callback for closing the drawer */\n  onClose: () => void;\n}\n\nconst drawerSizes = {\n  sm: { width: '25vw', minWidth: 384 },\n  md: { width: '50vw', minWidth: 568 },\n  lg: { width: '75vw', minWidth: 744 },\n};\n\nexport function Drawer({\n  children,\n  onClose,\n  closeOnMaskClick = true,\n  scrollableContent = true,\n  title,\n  subtitle,\n  width,\n  size = 'md',\n  tabs,\n}: Props) {\n  const [drawerWidth, onMouseDown, onTouchStart] = useResizebleDrawer();\n\n  const styles = useStyles2(getStyles);\n  const wrapperStyles = useStyles2(getWrapperStyles, size);\n  const dragStyles = useStyles2(getDragStyles);\n\n  const overlayRef = React.useRef(null);\n  const { dialogProps, titleProps } = useDialog({}, overlayRef);\n  const { overlayProps } = useOverlay(\n    {\n      isDismissable: false,\n      isOpen: true,\n      onClose,\n    },\n    overlayRef\n  );\n\n  // Adds body class while open so the toolbar nav can hide some actions while drawer is open\n  useBodyClassWhileOpen();\n\n  const content = <div className={styles.content}>{children}</div>;\n  const overrideWidth = drawerWidth ?? width ?? drawerSizes[size].width;\n  const minWidth = drawerSizes[size].minWidth;\n\n  return (\n    <RcDrawer\n      open={true}\n      onClose={onClose}\n      placement=\"right\"\n      getContainer={'.main-view'}\n      className={styles.drawerContent}\n      rootClassName={styles.drawer}\n      classNames={{\n        wrapper: wrapperStyles,\n      }}\n      styles={{\n        wrapper: {\n          width: overrideWidth,\n          minWidth,\n        },\n      }}\n      width={''}\n      motion={{\n        motionAppear: true,\n        motionName: styles.drawerMotion,\n      }}\n      maskClassName={styles.mask}\n      maskClosable={closeOnMaskClick}\n      maskMotion={{\n        motionAppear: true,\n        motionName: styles.maskMotion,\n      }}\n    >\n      <FocusScope restoreFocus contain autoFocus>\n        <div\n          aria-label={\n            typeof title === 'string'\n              ? selectors.components.Drawer.General.title(title)\n              : selectors.components.Drawer.General.title('no title')\n          }\n          className={styles.container}\n          {...overlayProps}\n          {...dialogProps}\n          ref={overlayRef}\n        >\n          {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n          <div\n            className={cx(dragStyles.dragHandleVertical, styles.resizer)}\n            onMouseDown={onMouseDown}\n            onTouchStart={onTouchStart}\n          />\n          <div className={cx(styles.header, Boolean(tabs) && styles.headerWithTabs)}>\n            <div className={styles.actions}>\n              <IconButton\n                name=\"times\"\n                variant=\"secondary\"\n                onClick={onClose}\n                data-testid={selectors.components.Drawer.General.close}\n                tooltip={t(`grafana-ui.drawer.close`, 'Close')}\n              />\n            </div>\n            {typeof title === 'string' ? (\n              <Stack direction=\"column\">\n                <Text element=\"h3\" truncate {...titleProps}>\n                  {title}\n                </Text>\n                {subtitle && (\n                  <div className={styles.subtitle} data-testid={selectors.components.Drawer.General.subtitle}>\n                    {subtitle}\n                  </div>\n                )}\n              </Stack>\n            ) : (\n              title\n            )}\n            {tabs && <div className={styles.tabsWrapper}>{tabs}</div>}\n          </div>\n          {!scrollableContent ? content : <ScrollContainer showScrollIndicators>{content}</ScrollContainer>}\n        </div>\n      </FocusScope>\n    </RcDrawer>\n  );\n}\n\nfunction useResizebleDrawer(): [\n  string | undefined,\n  React.EventHandler<React.MouseEvent>,\n  React.EventHandler<React.TouchEvent>,\n] {\n  const [drawerWidth, setDrawerWidth] = useState<string | undefined>(undefined);\n\n  const onMouseMove = useCallback((e: MouseEvent) => {\n    setDrawerWidth(getCustomDrawerWidth(e.clientX));\n  }, []);\n\n  const onTouchMove = useCallback((e: TouchEvent) => {\n    const touch = e.touches[0];\n    setDrawerWidth(getCustomDrawerWidth(touch.clientX));\n  }, []);\n\n  const onMouseUp = useCallback(\n    (e: MouseEvent) => {\n      document.removeEventListener('mousemove', onMouseMove);\n      document.removeEventListener('mouseup', onMouseUp);\n    },\n    [onMouseMove]\n  );\n\n  const onTouchEnd = useCallback(\n    (e: TouchEvent) => {\n      document.removeEventListener('touchmove', onTouchMove);\n      document.removeEventListener('touchend', onTouchEnd);\n    },\n    [onTouchMove]\n  );\n\n  function onMouseDown(e: React.MouseEvent<HTMLDivElement>) {\n    e.stopPropagation();\n    e.preventDefault();\n    // we will only add listeners when needed, and remove them afterward\n    document.addEventListener('mousemove', onMouseMove);\n    document.addEventListener('mouseup', onMouseUp);\n  }\n\n  function onTouchStart(e: React.TouchEvent<HTMLDivElement>) {\n    e.stopPropagation();\n    e.preventDefault();\n    // we will only add listeners when needed, and remove them afterward\n    document.addEventListener('touchmove', onTouchMove);\n    document.addEventListener('touchend', onTouchEnd);\n  }\n\n  return [drawerWidth, onMouseDown, onTouchStart];\n}\n\nfunction getCustomDrawerWidth(clientX: number) {\n  let offsetRight = document.body.offsetWidth - (clientX - document.body.offsetLeft);\n  let widthPercent = Math.min((offsetRight / document.body.clientWidth) * 100, 98).toFixed(2);\n  return `${widthPercent}vw`;\n}\n\nfunction useBodyClassWhileOpen() {\n  useEffect(() => {\n    if (!document.body) {\n      return;\n    }\n\n    document.body.classList.add('body-drawer-open');\n\n    return () => {\n      document.body.classList.remove('body-drawer-open');\n    };\n  }, []);\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      display: 'flex',\n      flexDirection: 'column',\n      height: '100%',\n      flex: '1 1 0',\n      minHeight: '100%',\n      position: 'relative',\n    }),\n    drawer: css({\n      top: 0,\n\n      '.rc-drawer-content-wrapper': {\n        boxShadow: theme.shadows.z3,\n      },\n    }),\n    drawerContent: css({\n      backgroundColor: `${theme.colors.background.primary} !important`,\n      display: 'flex',\n      overflow: 'unset !important',\n      flexDirection: 'column',\n    }),\n    drawerMotion: css({\n      '&-appear': {\n        transform: 'translateX(100%)',\n        transition: 'none !important',\n\n        '&-active': {\n          transition: `${theme.transitions.create('transform')} !important`,\n          transform: 'translateX(0)',\n        },\n      },\n    }),\n    // we want the mask itself to span the whole page including the top bar\n    // this ensures trying to click something in the top bar will close the drawer correctly\n    // but we don't want the backdrop styling to apply over the top bar as it looks weird\n    // instead have a child pseudo element to apply the backdrop styling below the top bar\n    mask: css({\n      // The !important here is to override the default .rc-drawer-mask styles\n      backgroundColor: 'transparent !important',\n      // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n      position: 'fixed !important' as 'fixed',\n\n      '&:before': {\n        backgroundColor: `${theme.components.overlay.background} !important`,\n        bottom: 0,\n        content: '\"\"',\n        left: 0,\n        position: 'fixed',\n        right: 0,\n        top: 0,\n      },\n    }),\n    maskMotion: css({\n      '&-appear': {\n        opacity: 0,\n\n        '&-active': {\n          opacity: 1,\n          transition: theme.transitions.create('opacity'),\n        },\n      },\n    }),\n    header: css({\n      label: 'drawer-header',\n      flexGrow: 0,\n      padding: theme.spacing(2, 2, 3),\n      borderBottom: `1px solid ${theme.colors.border.weak}`,\n    }),\n    headerWithTabs: css({\n      borderBottom: 'none',\n    }),\n    actions: css({\n      position: 'absolute',\n      right: theme.spacing(1),\n      top: theme.spacing(1),\n    }),\n    subtitle: css({\n      label: 'drawer-subtitle',\n      color: theme.colors.text.secondary,\n    }),\n    content: css({\n      padding: theme.spacing(theme.components.drawer?.padding ?? 2),\n      height: '100%',\n      flexGrow: 1,\n      minHeight: 0,\n    }),\n    tabsWrapper: css({\n      label: 'drawer-tabs',\n      paddingLeft: theme.spacing(2),\n      margin: theme.spacing(1, -1, -3, -3),\n    }),\n    resizer: css({\n      top: 0,\n      left: theme.spacing(-1),\n      bottom: 0,\n      position: 'absolute',\n      zIndex: theme.zIndex.modal,\n    }),\n  };\n};\n\nfunction getWrapperStyles(theme: GrafanaTheme2, size: 'sm' | 'md' | 'lg') {\n  return css({\n    label: `drawer-content-wrapper-${size}`,\n    overflow: 'unset !important',\n\n    [theme.breakpoints.down('md')]: {\n      width: `calc(100% - ${theme.spacing(2)}) !important`,\n      minWidth: '0 !important',\n    },\n  });\n}\n","import { isString } from 'lodash';\nimport { useState } from 'react';\n\nimport { t, Trans } from '@grafana/i18n';\n\nimport { ClipboardButton } from '../ClipboardButton/ClipboardButton';\nimport { Drawer } from '../Drawer/Drawer';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { CodeEditor } from '../Monaco/CodeEditor';\nimport { Tab } from '../Tabs/Tab';\nimport { TabsBar } from '../Tabs/TabsBar';\n\nexport enum TableCellInspectorMode {\n  code = 'code',\n  text = 'text',\n}\n\ninterface TableCellInspectorProps {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  value: any;\n  onDismiss: () => void;\n  mode: TableCellInspectorMode;\n}\n\nexport function TableCellInspector({ value, onDismiss, mode }: TableCellInspectorProps) {\n  let displayValue = value;\n  const [currentMode, setMode] = useState(mode);\n\n  if (isString(value)) {\n    const trimmedValue = value.trim();\n    // Exclude numeric strings like '123' from being displayed in code/JSON mode\n    if (trimmedValue[0] === '{' || trimmedValue[0] === '[' || mode === 'code') {\n      try {\n        value = JSON.parse(value);\n        displayValue = JSON.stringify(value, null, '  ');\n      } catch (error: any) {\n        // Display helpful error to help folks diagnose json errors\n        console.log(\n          'Failed to parse JSON in Table cell inspector (this will cause JSON to not print nicely): ',\n          error.message\n        );\n      }\n    }\n  } else {\n    displayValue = JSON.stringify(value);\n  }\n  let text = displayValue;\n\n  const tabs = [\n    {\n      label: 'Plain text',\n      value: 'text',\n    },\n    {\n      label: 'Code editor',\n      value: 'code',\n    },\n  ];\n\n  const changeTabs = () => {\n    setMode(currentMode === TableCellInspectorMode.text ? TableCellInspectorMode.code : TableCellInspectorMode.text);\n  };\n\n  const tabBar = (\n    <TabsBar>\n      {tabs.map((t, index) => (\n        <Tab key={`${t.value}-${index}`} label={t.label} active={t.value === currentMode} onChangeTab={changeTabs} />\n      ))}\n    </TabsBar>\n  );\n\n  return (\n    <Drawer onClose={onDismiss} title={t('grafana-ui.table.inspect-drawer-title', 'Inspect value')} tabs={tabBar}>\n      <Stack direction=\"column\" gap={2}>\n        <ClipboardButton icon=\"copy\" getText={() => text} style={{ marginLeft: 'auto', width: '200px' }}>\n          <Trans i18nKey=\"grafana-ui.table.copy\">Copy to Clipboard</Trans>\n        </ClipboardButton>\n        {currentMode === 'code' ? (\n          <CodeEditor\n            width=\"100%\"\n            height={500}\n            language=\"json\"\n            showLineNumbers={true}\n            showMiniMap={(text && text.length) > 100}\n            value={text}\n            readOnly={true}\n            wordWrap={true}\n          />\n        ) : (\n          <pre>{text}</pre>\n        )}\n      </Stack>\n    </Drawer>\n  );\n}\n","import { useEffect } from 'react';\nimport * as React from 'react';\nimport { VariableSizeList } from 'react-window';\n\nimport { DataFrame } from '@grafana/data';\n\nimport { GrafanaTableState } from './types';\n\n/**\n  To have the custom vertical scrollbar always visible (https://github.com/grafana/grafana/issues/52136),\n  we need to bring the element from the VariableSizeList scope to the outer Table container scope,\n  because the VariableSizeList scope has overflow. By moving scrollbar to container scope we will have\n  it always visible since the entire width is in view.\n  Select the scrollbar element from the VariableSizeList scope\n */\nexport function useFixScrollbarContainer(\n  variableSizeListScrollbarRef: React.RefObject<HTMLDivElement>,\n  tableDivRef: React.RefObject<HTMLDivElement>\n) {\n  useEffect(() => {\n    if (variableSizeListScrollbarRef.current && tableDivRef.current) {\n      const listVerticalScrollbarHTML = variableSizeListScrollbarRef.current.querySelector('.track-vertical');\n\n      // Select Table custom scrollbars\n      const tableScrollbarView = tableDivRef.current.firstChild;\n\n      //If they exist, move the scrollbar element to the Table container scope\n      if (tableScrollbarView && listVerticalScrollbarHTML) {\n        listVerticalScrollbarHTML.remove();\n        if (tableScrollbarView instanceof HTMLElement) {\n          tableScrollbarView.querySelector(':scope > .track-vertical')?.remove();\n          tableScrollbarView.append(listVerticalScrollbarHTML);\n        }\n      }\n    }\n  });\n}\n\n/**\n  react-table caches the height of cells, so we need to reset them when expanding/collapsing rows.\n  We use `lastExpandedOrCollapsedIndex` since collapsed rows disappear from `expandedIndexes` but still keep their expanded\n  height.\n */\nexport function useResetVariableListSizeCache(\n  extendedState: GrafanaTableState,\n  listRef: React.RefObject<VariableSizeList>,\n  data: DataFrame,\n  hasUniqueId: boolean\n) {\n  // Make sure we trigger the reset when keys change in any way\n  const expandedRowsRepr = JSON.stringify(Object.keys(extendedState.expanded));\n\n  useEffect(() => {\n    // By default, reset all rows\n    let resetIndex = 0;\n\n    // If we have unique field, extendedState.expanded keys are not row indexes but IDs so instead of trying to search\n    // for correct index we just reset the whole table.\n    if (!hasUniqueId) {\n      // If we don't have we reset from the last changed index.\n      if (Number.isFinite(extendedState.lastExpandedOrCollapsedIndex)) {\n        resetIndex = extendedState.lastExpandedOrCollapsedIndex!;\n      }\n\n      // Account for paging.\n      resetIndex =\n        extendedState.pageIndex === 0\n          ? resetIndex - 1\n          : resetIndex - extendedState.pageIndex - extendedState.pageIndex * extendedState.pageSize;\n    }\n\n    listRef.current?.resetAfterIndex(Math.max(resetIndex, 0));\n    return;\n  }, [\n    extendedState.lastExpandedOrCollapsedIndex,\n    extendedState.pageSize,\n    extendedState.pageIndex,\n    listRef,\n    data,\n    expandedRowsRepr,\n    hasUniqueId,\n  ]);\n}\n","import { useCallback } from 'react';\n\nimport { getFieldDisplayName } from '@grafana/data';\n\nimport {\n  TableSortByFieldState,\n  GrafanaTableColumn,\n  GrafanaTableState,\n  TableStateReducerProps,\n  TableRTProps,\n} from './types';\n\nexport interface ActionType {\n  type: string;\n  id: string | undefined;\n}\n\nexport function useTableStateReducer({ onColumnResize, onSortByChange, data }: TableStateReducerProps) {\n  return useCallback(\n    (newState: GrafanaTableState, action: ActionType) => {\n      switch (action.type) {\n        case 'columnDoneResizing':\n          if (onColumnResize) {\n            const info = (newState.columnResizing?.headerIdWidths as any)?.[0];\n            const columnIdString = info?.[0];\n            const fieldIndex = parseInt(columnIdString, 10);\n            const width = Math.round(newState.columnResizing.columnWidths?.[columnIdString]);\n\n            const field = data.fields?.[fieldIndex];\n            if (!field) {\n              return newState;\n            }\n\n            const fieldDisplayName = getFieldDisplayName(field, data);\n            onColumnResize(fieldDisplayName, width);\n          }\n        case 'toggleSortBy':\n          if (onSortByChange) {\n            const sortByFields: TableSortByFieldState[] = [];\n\n            for (const sortItem of newState.sortBy) {\n              const field = data.fields[parseInt(sortItem.id, 10)];\n              if (!field) {\n                continue;\n              }\n\n              sortByFields.push({\n                displayName: getFieldDisplayName(field, data),\n                desc: sortItem.desc,\n              });\n            }\n\n            onSortByChange(sortByFields);\n          }\n        case 'toggleRowExpanded': {\n          if (action.id) {\n            return {\n              ...newState,\n              lastExpandedOrCollapsedIndex: parseInt(action.id, 10),\n            };\n          }\n        }\n      }\n\n      return newState;\n    },\n    [data, onColumnResize, onSortByChange]\n  );\n}\n\nexport function getInitialState(\n  initialSortBy: TableRTProps['initialSortBy'],\n  columns: GrafanaTableColumn[]\n): Partial<GrafanaTableState> {\n  const state: Partial<GrafanaTableState> = {};\n\n  if (initialSortBy) {\n    state.sortBy = [];\n\n    for (const sortBy of initialSortBy) {\n      for (const col of columns) {\n        if (col.Header === sortBy.displayName) {\n          state.sortBy.push({ id: col.id!, desc: sortBy.desc });\n        }\n      }\n    }\n  }\n\n  return state;\n}\n","import { map, sortBy, flattenDeep, chunk, zip } from 'lodash';\nimport tinycolor from 'tinycolor2';\n\nconst PALETTE_ROWS = 4;\n\n/**\n * @alpha\n */\nexport const DEFAULT_ANNOTATION_COLOR = 'rgba(0, 211, 255, 1)';\n\n/**\n * @alpha\n */\nexport const OK_COLOR = 'rgba(11, 237, 50, 1)';\n\n/**\n * @alpha\n */\nexport const ALERTING_COLOR = 'rgba(237, 46, 24, 1)';\n\n/**\n * @alpha\n */\nexport const NO_DATA_COLOR = 'rgba(150, 150, 150, 1)';\n\n/**\n * @alpha\n */\nexport const PENDING_COLOR = 'rgba(247, 149, 32, 1)';\n\n/**\n * @alpha\n */\nexport const REGION_FILL_ALPHA = 0.09;\nexport const colors = [\n  '#7EB26D', // 0: pale green\n  '#EAB839', // 1: mustard\n  '#6ED0E0', // 2: light blue\n  '#EF843C', // 3: orange\n  '#E24D42', // 4: red\n  '#1F78C1', // 5: ocean\n  '#BA43A9', // 6: purple\n  '#705DA0', // 7: violet\n  '#508642', // 8: dark green\n  '#CCA300', // 9: dark sand\n  '#447EBC',\n  '#C15C17',\n  '#890F02',\n  '#0A437C',\n  '#6D1F62',\n  '#584477',\n  '#B7DBAB',\n  '#F4D598',\n  '#70DBED',\n  '#F9BA8F',\n  '#F29191',\n  '#82B5D8',\n  '#E5A8E2',\n  '#AEA2E0',\n  '#629E51',\n  '#E5AC0E',\n  '#64B0C8',\n  '#E0752D',\n  '#BF1B00',\n  '#0A50A1',\n  '#962D82',\n  '#614D93',\n  '#9AC48A',\n  '#F2C96D',\n  '#65C5DB',\n  '#F9934E',\n  '#EA6460',\n  '#5195CE',\n  '#D683CE',\n  '#806EB7',\n  '#3F6833',\n  '#967302',\n  '#2F575E',\n  '#99440A',\n  '#58140C',\n  '#052B51',\n  '#511749',\n  '#3F2B5B',\n  '#E0F9D7',\n  '#FCEACA',\n  '#CFFAFF',\n  '#F9E2D2',\n  '#FCE2DE',\n  '#BADFF4',\n  '#F9D9F9',\n  '#DEDAF7',\n];\n\nfunction sortColorsByHue(hexColors: string[]) {\n  const hslColors = map(hexColors, hexToHsl);\n\n  const sortedHSLColors = sortBy(hslColors, ['h']);\n  const chunkedHSLColors = chunk(sortedHSLColors, PALETTE_ROWS);\n  const sortedChunkedHSLColors = map(chunkedHSLColors, (chunk) => {\n    return sortBy(chunk, 'l');\n  });\n  const flattenedZippedSortedChunkedHSLColors = flattenDeep(zip(...sortedChunkedHSLColors));\n\n  return map(flattenedZippedSortedChunkedHSLColors, hslToHex);\n}\n\nfunction hexToHsl(color: string) {\n  return tinycolor(color).toHsl();\n}\n\nfunction hslToHex(color: tinycolor.ColorFormats.HSLA) {\n  return tinycolor(color).toHexString();\n}\n\nexport function getTextColorForBackground(color: string) {\n  const b = tinycolor(color).getBrightness();\n\n  return b > 180 ? 'rgb(32, 34, 38)' : 'rgb(247, 248, 250)';\n}\n\nexport function getTextColorForAlphaBackground(color: string, themeIsDark: boolean) {\n  const tcolor = tinycolor(color);\n  const b = tcolor.getBrightness();\n  const a = tcolor.getAlpha();\n\n  if (a < 0.3) {\n    return themeIsDark ? 'rgb(247, 248, 250)' : 'rgb(32, 34, 38)';\n  }\n\n  return b > 180 ? 'rgb(32, 34, 38)' : 'rgb(247, 248, 250)';\n}\n\nexport let sortedColors = sortColorsByHue(colors);\n","import { css, cx } from '@emotion/css';\nimport { ReactNode } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport interface LabelProps extends React.HTMLAttributes<HTMLLegendElement> {\n  children: string | ReactNode;\n  description?: string;\n}\n\nexport const getLegendStyles = (theme: GrafanaTheme2) => {\n  return {\n    legend: css({\n      fontSize: theme.typography.h3.fontSize,\n      fontWeight: theme.typography.fontWeightRegular,\n      margin: theme.spacing(0, 0, 2, 0),\n    }),\n  };\n};\n\nexport const Legend = ({ children, className, ...legendProps }: LabelProps) => {\n  const styles = useStyles2(getLegendStyles);\n\n  return (\n    <legend className={cx(styles.legend, className)} {...legendProps}>\n      {children}\n    </legend>\n  );\n};\n","import { css, cx } from '@emotion/css';\nimport { HTMLProps } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { Legend } from './Legend';\n\nexport interface Props extends Omit<HTMLProps<HTMLFieldSetElement>, 'label'> {\n  children: React.ReactNode[] | React.ReactNode;\n  /** Label for the fieldset's legend */\n  label?: React.ReactNode;\n}\n\nexport const FieldSet = ({ label, children, className, ...rest }: Props) => {\n  const styles = useStyles2(getStyles);\n\n  return (\n    <fieldset className={cx(styles.wrapper, className)} {...rest}>\n      {label && <Legend>{label}</Legend>}\n      {children}\n    </fieldset>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  wrapper: css({\n    marginBottom: theme.spacing(4),\n\n    '&:last-child': {\n      marginBottom: 0,\n    },\n  }),\n});\n","import { css } from '@emotion/css';\n\nimport { ActionModel, ActionVariableInput } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Button } from '../Button/Button';\nimport { Field } from '../Forms/Field';\nimport { FieldSet } from '../Forms/FieldSet';\nimport { Input } from '../Input/Input';\nimport { Modal } from '../Modal/Modal';\n\ninterface Props {\n  action: ActionModel;\n  onDismiss: () => void;\n  onShowConfirm: () => void;\n  variables: ActionVariableInput;\n  setVariables: (vars: ActionVariableInput) => void;\n}\n\n/**\n * @internal\n */\nexport function VariablesInputModal({ action, onDismiss, onShowConfirm, variables, setVariables }: Props) {\n  const styles = useStyles2(getStyles);\n\n  const onModalContinue = () => {\n    onDismiss();\n    onShowConfirm();\n  };\n\n  return (\n    <Modal\n      isOpen={true}\n      title={t('grafana-ui.action-editor.button.action-variables-title', 'Action variables')}\n      onDismiss={onDismiss}\n      className={styles.variablesModal}\n    >\n      <FieldSet>\n        {action.variables!.map((variable) => (\n          <Field key={variable.name} label={variable.name}>\n            <Input\n              type=\"text\"\n              value={variables[variable.key] ?? ''}\n              onChange={(e) => {\n                setVariables({ ...variables, [variable.key]: e.currentTarget.value });\n              }}\n              placeholder={t('grafana-ui.action-editor.button.variable-value-placeholder', 'Value')}\n              width={20}\n            />\n          </Field>\n        ))}\n      </FieldSet>\n      <Modal.ButtonRow>\n        <Button variant=\"secondary\" onClick={onDismiss}>\n          {t('grafana-ui.action-editor.close', 'Close')}\n        </Button>\n        <Button variant=\"primary\" onClick={onModalContinue}>\n          {t('grafana-ui.action-editor.continue', 'Continue')}\n        </Button>\n      </Modal.ButtonRow>\n    </Modal>\n  );\n}\n\nconst getStyles = () => {\n  return {\n    variablesModal: css({\n      zIndex: 10000,\n    }),\n  };\n};\n","import { useState } from 'react';\n\nimport { ActionModel, Field, ActionVariableInput } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { Button, ButtonProps } from '../Button/Button';\nimport { ConfirmModal } from '../ConfirmModal/ConfirmModal';\n\nimport { VariablesInputModal } from './VariablesInputModal';\n\ntype ActionButtonProps = Omit<ButtonProps, 'children'> & {\n  action: ActionModel<Field>;\n};\n\n/**\n * @internal\n */\nexport function ActionButton({ action, ...buttonProps }: ActionButtonProps) {\n  const theme = useTheme2();\n  const backgroundColor = action.style.backgroundColor || theme.colors.secondary.main;\n  const textColor = theme.colors.getContrastText(backgroundColor);\n\n  const [showConfirm, setShowConfirm] = useState(false);\n\n  // Action variables\n  const [showVarsModal, setShowVarsModal] = useState(false);\n  const [actionVars, setActionVars] = useState<ActionVariableInput>({});\n\n  const actionHasVariables = action.variables && action.variables.length > 0;\n\n  const onClick = () => {\n    if (actionHasVariables) {\n      setShowVarsModal(true);\n    } else {\n      setShowConfirm(true);\n    }\n  };\n\n  return (\n    <>\n      <Button\n        variant=\"primary\"\n        size=\"sm\"\n        onClick={onClick}\n        {...buttonProps}\n        style={{ width: 'fit-content', backgroundColor, color: textColor }}\n      >\n        {action.title}\n      </Button>\n\n      {actionHasVariables && showVarsModal && (\n        <VariablesInputModal\n          onDismiss={() => setShowVarsModal(false)}\n          action={action}\n          onShowConfirm={() => setShowConfirm(true)}\n          variables={actionVars}\n          setVariables={setActionVars}\n        />\n      )}\n\n      {showConfirm && (\n        <ConfirmModal\n          isOpen={true}\n          title={t('grafana-ui.action-editor.button.confirm-action', 'Confirm action')}\n          body={action.confirmation(actionVars)}\n          confirmText={t('grafana-ui.action-editor.button.confirm', 'Confirm')}\n          confirmButtonVariant=\"primary\"\n          onConfirm={() => {\n            setShowConfirm(false);\n            action.onClick(new MouseEvent('click'), null, actionVars);\n          }}\n          onDismiss={() => {\n            setShowConfirm(false);\n          }}\n        />\n      )}\n    </>\n  );\n}\n","import { css, cx } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { ActionButton } from '../Actions/ActionButton';\n\nimport { TableCellProps } from './types';\n\nexport const ActionsCell = (props: TableCellProps) => {\n  const { cellProps, tableStyles, actions } = props;\n\n  const styles = useStyles2(getStyles);\n\n  return (\n    <div {...cellProps} className={cx(tableStyles.cellContainerText, styles.buttonsGap)}>\n      {actions && actions.map((action, i) => <ActionButton key={i} action={action} variant=\"secondary\" />)}\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  buttonsGap: css({\n    gap: 6,\n  }),\n});\n","import { CSSProperties, HTMLProps } from 'react';\n\nimport { FormattedValue } from '@grafana/data';\n\nexport interface Props extends Omit<HTMLProps<HTMLDivElement>, 'className' | 'value' | 'style'> {\n  value: FormattedValue;\n  className?: string;\n  style?: CSSProperties;\n}\n\nfunction fontSizeReductionFactor(fontSize: number) {\n  if (fontSize < 20) {\n    return 0.9;\n  }\n  if (fontSize < 26) {\n    return 0.8;\n  }\n  return 0.6;\n}\n\nexport const FormattedValueDisplay = ({ value, className, style, ...htmlProps }: Props) => {\n  const hasPrefix = (value.prefix ?? '').length > 0;\n  const hasSuffix = (value.suffix ?? '').length > 0;\n  let suffixStyle;\n\n  if (style && typeof style.fontSize === 'number' && !Number.isNaN(style.fontSize)) {\n    const fontSize = style.fontSize;\n    const reductionFactor = fontSizeReductionFactor(fontSize);\n    suffixStyle = { fontSize: fontSize * reductionFactor };\n  }\n\n  return (\n    <div className={className} style={style} {...htmlProps}>\n      <div>\n        {hasPrefix && <span>{value.prefix}</span>}\n        <span>{value.text}</span>\n        {hasSuffix && <span style={suffixStyle}>{value.suffix}</span>}\n      </div>\n    </div>\n  );\n};\n\nFormattedValueDisplay.displayName = 'FormattedDisplayValue';\n","// Library\nimport { cx } from '@emotion/css';\nimport { CSSProperties, PureComponent, ReactNode } from 'react';\nimport * as React from 'react';\nimport tinycolor from 'tinycolor2';\n\nimport {\n  DisplayProcessor,\n  DisplayValue,\n  DisplayValueAlignmentFactors,\n  FALLBACK_COLOR,\n  FieldColorModeId,\n  FieldConfig,\n  FormattedValue,\n  formattedValueToString,\n  GAUGE_DEFAULT_MAXIMUM,\n  GAUGE_DEFAULT_MINIMUM,\n  getFieldColorMode,\n  ThresholdsMode,\n  TimeSeriesValue,\n  VizOrientation,\n} from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { BarGaugeDisplayMode, BarGaugeNamePlacement, BarGaugeValueMode, VizTextDisplayOptions } from '@grafana/schema';\n\nimport { Themeable2 } from '../../types/theme';\nimport { calculateFontSize, measureText } from '../../utils/measureText';\nimport { clearButtonStyles } from '../Button/Button';\nimport { FormattedValueDisplay } from '../FormattedValueDisplay/FormattedValueDisplay';\n\nconst MIN_VALUE_HEIGHT = 18;\nconst MAX_VALUE_HEIGHT = 50;\nconst MAX_VALUE_WIDTH = 150;\nconst TITLE_LINE_HEIGHT = 1.5;\nconst VALUE_LINE_HEIGHT = 1;\nconst VALUE_LEFT_PADDING = 10;\nconst VALUE_RIGHT_OVERFLOW_PADDING = 15;\n\nexport interface Props extends Themeable2 {\n  height: number;\n  width: number;\n  field: FieldConfig;\n  display?: DisplayProcessor;\n  value: DisplayValue;\n  orientation: VizOrientation;\n  text?: VizTextDisplayOptions;\n  itemSpacing?: number;\n  lcdCellWidth?: number;\n  displayMode: BarGaugeDisplayMode;\n  onClick?: React.MouseEventHandler<HTMLElement>;\n  className?: string;\n  showUnfilled?: boolean;\n  alignmentFactors?: DisplayValueAlignmentFactors;\n  valueDisplayMode?: BarGaugeValueMode;\n  namePlacement?: BarGaugeNamePlacement;\n  isOverflow: boolean;\n}\n\nexport class BarGauge extends PureComponent<Props> {\n  static defaultProps: Partial<Props> = {\n    lcdCellWidth: 12,\n    value: {\n      text: '100',\n      numeric: 100,\n    },\n    displayMode: BarGaugeDisplayMode.Gradient,\n    orientation: VizOrientation.Horizontal,\n    field: {\n      min: 0,\n      max: 100,\n      thresholds: {\n        mode: ThresholdsMode.Absolute,\n        steps: [],\n      },\n    },\n    itemSpacing: 8,\n    showUnfilled: true,\n    isOverflow: false,\n  };\n\n  render() {\n    const { onClick, className, theme } = this.props;\n    const { title } = this.props.value;\n    const styles = getTitleStyles(this.props);\n\n    if (onClick) {\n      return (\n        <button\n          type=\"button\"\n          style={styles.wrapper}\n          onClick={onClick}\n          className={cx(clearButtonStyles(theme), className)}\n        >\n          <div style={styles.title}>{title}</div>\n          {this.renderBarAndValue()}\n        </button>\n      );\n    }\n\n    return (\n      <div style={styles.wrapper} className={className}>\n        {title && <div style={styles.title}>{title}</div>}\n        {this.renderBarAndValue()}\n      </div>\n    );\n  }\n\n  renderBarAndValue() {\n    switch (this.props.displayMode) {\n      case 'lcd':\n        return this.renderRetroBars();\n      case 'basic':\n      case 'gradient':\n      default:\n        return this.renderBasicAndGradientBars();\n    }\n  }\n\n  renderBasicAndGradientBars(): ReactNode {\n    const { value, showUnfilled, valueDisplayMode } = this.props;\n\n    const styles = getBasicAndGradientStyles(this.props);\n\n    return (\n      <div style={styles.wrapper}>\n        {valueDisplayMode !== BarGaugeValueMode.Hidden && (\n          <FormattedValueDisplay\n            data-testid={selectors.components.Panels.Visualization.BarGauge.valueV2}\n            value={value}\n            style={styles.value}\n          />\n        )}\n        {showUnfilled && <div style={styles.emptyBar} />}\n        <div style={styles.bar} />\n      </div>\n    );\n  }\n\n  renderRetroBars(): ReactNode {\n    const {\n      display,\n      field,\n      value,\n      itemSpacing,\n      alignmentFactors,\n      orientation,\n      lcdCellWidth,\n      text,\n      valueDisplayMode,\n      theme,\n      isOverflow,\n    } = this.props;\n    const { valueHeight, valueWidth, maxBarHeight, maxBarWidth, wrapperWidth, wrapperHeight } =\n      calculateBarAndValueDimensions(this.props);\n    const minValue = field.min ?? GAUGE_DEFAULT_MINIMUM;\n    const maxValue = field.max ?? GAUGE_DEFAULT_MAXIMUM;\n\n    const isVert = isVertical(orientation);\n    const valueRange = maxValue - minValue;\n    const maxSize = isVert ? maxBarHeight : maxBarWidth;\n    const cellSpacing = itemSpacing!;\n    const cellCount = Math.floor(maxSize / lcdCellWidth!);\n    const cellSize = Math.floor((maxSize - cellSpacing * cellCount) / cellCount);\n    const valueColor = getTextValueColor(this.props);\n\n    const valueToBaseSizeOn = alignmentFactors ? alignmentFactors : value;\n    const valueStyles = getValueStyles(\n      valueToBaseSizeOn,\n      valueColor,\n      valueWidth,\n      valueHeight,\n      orientation,\n      isOverflow,\n      text\n    );\n\n    const containerStyles: CSSProperties = {\n      width: `${wrapperWidth}px`,\n      height: `${wrapperHeight}px`,\n      display: 'flex',\n    };\n\n    if (isVert) {\n      containerStyles.flexDirection = 'column-reverse';\n      containerStyles.alignItems = 'center';\n    } else {\n      containerStyles.flexDirection = 'row';\n      containerStyles.alignItems = 'center';\n      valueStyles.justifyContent = 'flex-end';\n    }\n\n    const cells: JSX.Element[] = [];\n\n    for (let i = 0; i < cellCount; i++) {\n      const currentValue = minValue + (valueRange / cellCount) * i;\n      const cellColor = getCellColor(currentValue, value, display);\n      const cellStyles: CSSProperties = {\n        borderRadius: theme.shape.radius.default,\n      };\n\n      if (cellColor.isLit) {\n        cellStyles.backgroundImage = `radial-gradient(${cellColor.background} 10%, ${cellColor.backgroundShade})`;\n      } else {\n        cellStyles.backgroundColor = cellColor.background;\n      }\n\n      if (isVert) {\n        cellStyles.height = `${cellSize}px`;\n        cellStyles.width = `${maxBarWidth}px`;\n        cellStyles.marginTop = `${cellSpacing}px`;\n      } else {\n        cellStyles.width = `${cellSize}px`;\n        cellStyles.height = `${maxBarHeight}px`;\n        cellStyles.marginRight = `${cellSpacing}px`;\n      }\n\n      cells.push(<div key={i.toString()} style={cellStyles} />);\n    }\n\n    return (\n      <div style={containerStyles}>\n        {cells}\n        {valueDisplayMode !== BarGaugeValueMode.Hidden && (\n          <FormattedValueDisplay\n            data-testid={selectors.components.Panels.Visualization.BarGauge.valueV2}\n            value={value}\n            style={valueStyles}\n          />\n        )}\n      </div>\n    );\n  }\n}\n\ninterface CellColors {\n  background: string;\n  backgroundShade?: string;\n  border: string;\n  isLit?: boolean;\n}\n\ninterface TitleDimensions {\n  fontSize: number;\n  placement: 'above' | 'left' | 'below' | 'hidden';\n  width: number;\n  height: number;\n}\n\nfunction isVertical(orientation: VizOrientation) {\n  return orientation === VizOrientation.Vertical;\n}\n\nfunction calculateTitleDimensions(props: Props): TitleDimensions {\n  const { height, width, alignmentFactors, orientation, text, namePlacement } = props;\n  const title = alignmentFactors ? alignmentFactors.title : props.value.title;\n\n  if (!title) {\n    return { fontSize: 0, width: 0, height: 0, placement: 'above' };\n  }\n\n  if (namePlacement === BarGaugeNamePlacement.Hidden) {\n    return {\n      fontSize: 0,\n      width: 0,\n      height: 0,\n      placement: BarGaugeNamePlacement.Hidden,\n    };\n  }\n\n  if (isVertical(orientation)) {\n    const fontSize = text?.titleSize ?? 14;\n    return {\n      fontSize: fontSize,\n      width: width,\n      height: fontSize * TITLE_LINE_HEIGHT,\n      placement: 'below',\n    };\n  }\n\n  const shouldDisplayValueAbove =\n    (height > 40 && namePlacement === BarGaugeNamePlacement.Auto) || namePlacement === BarGaugeNamePlacement.Top;\n\n  if (shouldDisplayValueAbove) {\n    if (text?.titleSize) {\n      return {\n        fontSize: text?.titleSize,\n        width: 0,\n        height: text.titleSize * TITLE_LINE_HEIGHT,\n        placement: 'above',\n      };\n    }\n\n    const maxTitleHeightRatio = 0.45;\n    const titleHeight = Math.max(Math.min(height * maxTitleHeightRatio, MAX_VALUE_HEIGHT), 17);\n\n    return {\n      fontSize: titleHeight / TITLE_LINE_HEIGHT,\n      width: 0,\n      height: titleHeight,\n      placement: 'above',\n    };\n  }\n\n  // title to left of bar scenario\n  const maxTitleHeightRatio = 0.6;\n  const titleHeight = Math.max(height * maxTitleHeightRatio, MIN_VALUE_HEIGHT);\n  const titleFontSize = titleHeight / TITLE_LINE_HEIGHT;\n  const textSize = measureText(title, titleFontSize);\n\n  // Do not allow title to take up more than 40% width\n  const textWidth = Math.min(textSize.width + 15, width * 0.4);\n\n  return {\n    fontSize: text?.titleSize ?? titleFontSize,\n    height: 0,\n    width: textWidth,\n    placement: 'left',\n  };\n}\n\nexport function getTitleStyles(props: Props): { wrapper: CSSProperties; title: CSSProperties } {\n  const wrapperStyles: CSSProperties = {\n    display: 'flex',\n    overflow: 'hidden',\n    width: '100%',\n  };\n\n  const titleDim = calculateTitleDimensions(props);\n\n  const titleStyles: CSSProperties = {\n    fontSize: `${titleDim.fontSize}px`,\n    whiteSpace: 'nowrap',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    width: '100%',\n    alignItems: 'center',\n    alignSelf: 'center',\n  };\n\n  if (titleDim.placement === 'hidden') {\n    titleStyles.display = 'none';\n  } else {\n    if (isVertical(props.orientation)) {\n      wrapperStyles.flexDirection = 'column-reverse';\n      titleStyles.textAlign = 'center';\n    } else {\n      if (titleDim.placement === 'above') {\n        wrapperStyles.flexDirection = 'column';\n      } else {\n        wrapperStyles.flexDirection = 'row';\n\n        titleStyles.width = `${titleDim.width}px`;\n        titleStyles.textAlign = 'right';\n        titleStyles.paddingRight = '10px';\n      }\n    }\n  }\n\n  return {\n    wrapper: wrapperStyles,\n    title: titleStyles,\n  };\n}\n\ninterface BasicAndGradientStyles {\n  wrapper: CSSProperties;\n  bar: CSSProperties;\n  emptyBar: CSSProperties;\n  value: CSSProperties;\n}\n\ninterface BarAndValueDimensions {\n  valueWidth: number;\n  valueHeight: number;\n  maxBarWidth: number;\n  maxBarHeight: number;\n  wrapperHeight: number;\n  wrapperWidth: number;\n}\n\n/**\n * @internal\n * Only exported for unit tests\n **/\nexport function calculateBarAndValueDimensions(props: Props): BarAndValueDimensions {\n  const { height, width, orientation, text, alignmentFactors, valueDisplayMode } = props;\n  const titleDim = calculateTitleDimensions(props);\n  const value = alignmentFactors ?? props.value;\n  const valueString = formattedValueToString(value);\n\n  let maxBarHeight = 0;\n  let maxBarWidth = 0;\n  let valueHeight = 0;\n  let valueWidth = 0;\n  let wrapperWidth = 0;\n  let wrapperHeight = 0;\n\n  // measure text with title font size or min 14px\n  const fontSizeToMeasureWith = text?.valueSize ?? Math.max(titleDim.fontSize, 12);\n  const realTextSize = measureText(valueString, fontSizeToMeasureWith);\n  const realValueWidth = realTextSize.width + VALUE_LEFT_PADDING * 2;\n\n  if (isVertical(orientation)) {\n    if (text?.valueSize) {\n      valueHeight = text.valueSize * VALUE_LINE_HEIGHT;\n    } else {\n      valueHeight = Math.min(Math.max(height * 0.1, MIN_VALUE_HEIGHT), MAX_VALUE_HEIGHT);\n    }\n\n    valueWidth = width;\n\n    if (valueDisplayMode === BarGaugeValueMode.Hidden) {\n      valueHeight = 0;\n      valueWidth = 0;\n    }\n\n    maxBarHeight = height - (titleDim.height + valueHeight);\n    maxBarWidth = width;\n    wrapperWidth = width;\n    wrapperHeight = height - titleDim.height;\n  } else {\n    // Calculate the width and the height of the given values\n    if (valueDisplayMode === BarGaugeValueMode.Hidden) {\n      valueHeight = 0;\n      valueWidth = 0;\n    } else {\n      valueHeight = height - titleDim.height;\n      valueWidth = Math.max(Math.min(width * 0.2, MAX_VALUE_WIDTH), realValueWidth);\n    }\n\n    maxBarHeight = height - titleDim.height;\n    maxBarWidth = width - valueWidth - titleDim.width;\n\n    if (titleDim.placement === 'above') {\n      wrapperWidth = width;\n      wrapperHeight = height - titleDim.height;\n    } else {\n      wrapperWidth = width - titleDim.width;\n      wrapperHeight = height;\n    }\n  }\n\n  return {\n    valueWidth,\n    valueHeight,\n    maxBarWidth,\n    maxBarHeight,\n    wrapperHeight,\n    wrapperWidth,\n  };\n}\n\nexport function getCellColor(\n  positionValue: TimeSeriesValue,\n  value: Props['value'],\n  display: Props['display']\n): CellColors {\n  if (positionValue === null) {\n    return {\n      background: FALLBACK_COLOR,\n      border: FALLBACK_COLOR,\n    };\n  }\n\n  const color = display ? display(positionValue).color : null;\n\n  if (color) {\n    // if we are past real value the cell is not \"on\"\n    if (value === null || isNaN(value.numeric) || (positionValue !== null && positionValue > value.numeric)) {\n      return {\n        background: tinycolor(color).setAlpha(0.18).toRgbString(),\n        border: 'transparent',\n        isLit: false,\n      };\n    } else {\n      return {\n        background: tinycolor(color).setAlpha(0.95).toRgbString(),\n        backgroundShade: tinycolor(color).setAlpha(0.55).toRgbString(),\n        border: tinycolor(color).setAlpha(0.9).toRgbString(),\n        isLit: true,\n      };\n    }\n  }\n\n  return {\n    background: FALLBACK_COLOR,\n    border: FALLBACK_COLOR,\n  };\n}\n\nexport function getValuePercent(value: number, minValue: number, maxValue: number): number {\n  // Need special logic for when minValue === maxValue === value to prevent returning NaN\n  const valueRatio = Math.min((value - minValue) / (maxValue - minValue), 1);\n  return isNaN(valueRatio) ? 0 : valueRatio;\n}\n\n/**\n * Only exported to for unit test\n */\nexport function getBasicAndGradientStyles(props: Props): BasicAndGradientStyles {\n  const { displayMode, field, value, alignmentFactors, orientation, theme, text, isOverflow } = props;\n  const { valueWidth, valueHeight, maxBarHeight, maxBarWidth } = calculateBarAndValueDimensions(props);\n\n  const minValue = field.min ?? GAUGE_DEFAULT_MINIMUM;\n  const maxValue = field.max ?? GAUGE_DEFAULT_MAXIMUM;\n  const valuePercent = getValuePercent(value.numeric, minValue, maxValue);\n  const textColor = getTextValueColor(props);\n  const barColor = value.color ?? FALLBACK_COLOR;\n\n  const valueToBaseSizeOn = alignmentFactors ? alignmentFactors : value;\n  const valueStyles = getValueStyles(\n    valueToBaseSizeOn,\n    textColor,\n    valueWidth,\n    valueHeight,\n    orientation,\n    isOverflow,\n    text\n  );\n\n  const isBasic = displayMode === 'basic';\n  const wrapperStyles: CSSProperties = {\n    display: 'flex',\n    flexGrow: 1,\n  };\n\n  const barStyles: CSSProperties = {\n    borderRadius: theme.shape.radius.default,\n    position: 'relative',\n  };\n\n  const emptyBar: CSSProperties = {\n    background: theme.colors.background.secondary,\n    flexGrow: 1,\n    display: 'flex',\n    borderRadius: theme.shape.radius.default,\n    position: 'relative',\n  };\n\n  if (isVertical(orientation)) {\n    const barHeight = Math.max(valuePercent * maxBarHeight, 1);\n\n    // vertical styles\n    wrapperStyles.flexDirection = 'column';\n    wrapperStyles.justifyContent = 'flex-end';\n\n    barStyles.transition = 'height 1s';\n    barStyles.height = `${barHeight}px`;\n    barStyles.width = `${maxBarWidth}px`;\n\n    // adjust so that filled in bar is at the bottom\n    emptyBar.bottom = '-3px';\n\n    //adjust empty region to always have same width as colored bar\n    emptyBar.width = `${valueWidth}px`;\n\n    if (isBasic) {\n      // Basic styles\n      barStyles.background = `${tinycolor(barColor).setAlpha(0.35).toRgbString()}`;\n      barStyles.borderTop = `2px solid ${barColor}`;\n    } else {\n      // Gradient styles\n      barStyles.background = getBarGradient(props, maxBarHeight);\n    }\n  } else {\n    const barWidth = Math.max(valuePercent * maxBarWidth, 1);\n\n    // Custom styles for horizontal orientation\n    wrapperStyles.flexDirection = 'row-reverse';\n    wrapperStyles.justifyContent = 'flex-end';\n    wrapperStyles.alignItems = 'stretch';\n\n    barStyles.transition = 'width 1s';\n    barStyles.height = `${maxBarHeight}px`;\n    barStyles.width = `${barWidth}px`;\n\n    // shift empty region back to fill gaps due to border radius\n    emptyBar.left = '-3px';\n\n    //adjust empty region to always have same height as colored bar\n    emptyBar.height = `${valueHeight}px`;\n\n    if (isBasic) {\n      // Basic styles\n      barStyles.background = `${tinycolor(barColor).setAlpha(0.35).toRgbString()}`;\n      barStyles.borderRight = `2px solid ${barColor}`;\n    } else {\n      // Gradient styles\n      barStyles.background = getBarGradient(props, maxBarWidth);\n    }\n  }\n\n  return {\n    wrapper: wrapperStyles,\n    bar: barStyles,\n    value: valueStyles,\n    emptyBar,\n  };\n}\n\n/**\n * Only exported to for unit test\n */\nexport function getBarGradient(props: Props, maxSize: number): string {\n  const { field, value, orientation, theme } = props;\n  const cssDirection = isVertical(orientation) ? '0deg' : '90deg';\n  const minValue = field.min!;\n  const maxValue = field.max!;\n\n  let gradient = '';\n  let lastpos = 0;\n  let mode = getFieldColorMode(field.color?.mode);\n\n  if (mode.id === FieldColorModeId.Thresholds) {\n    const thresholds = field.thresholds!;\n\n    for (let i = 0; i < thresholds.steps.length; i++) {\n      const threshold = thresholds.steps[i];\n      const color = props.theme.visualization.getColorByName(threshold.color);\n      const valuePercent =\n        thresholds.mode === ThresholdsMode.Percentage\n          ? threshold.value / 100\n          : getValuePercent(threshold.value, minValue, maxValue);\n      const pos = valuePercent * maxSize;\n      const offset = Math.round(pos - (pos - lastpos) / 2);\n      const thresholdValue =\n        thresholds.mode === ThresholdsMode.Percentage\n          ? minValue + (maxValue - minValue) * valuePercent\n          : threshold.value;\n      if (gradient === '') {\n        gradient = `linear-gradient(${cssDirection}, ${color}, ${color}`;\n      } else if (value.numeric < thresholdValue) {\n        break;\n      } else {\n        lastpos = pos;\n        gradient += ` ${offset}px, ${color}`;\n      }\n    }\n\n    return gradient + ')';\n  }\n\n  if (mode.isContinuous && mode.getColors) {\n    const scheme = mode.getColors(theme);\n\n    for (let i = 0; i < scheme.length; i++) {\n      const color = scheme[i];\n\n      if (gradient === '') {\n        gradient = `linear-gradient(${cssDirection}, ${color} 0px`;\n      } else {\n        const valuePercent = i / (scheme.length - 1);\n        const pos = valuePercent * maxSize;\n        gradient += `, ${color} ${pos}px`;\n      }\n    }\n    return gradient + ')';\n  }\n\n  return value.color ?? FALLBACK_COLOR;\n}\n\n/**\n * Only exported to for unit test\n */\nexport function getTextValueColor(props: Props): string {\n  if (props.valueDisplayMode === 'text') {\n    return props.theme.colors.text.primary;\n  }\n\n  const { value } = props;\n  if (value.color) {\n    return value.color;\n  }\n\n  return FALLBACK_COLOR;\n}\n\nfunction getValueStyles(\n  value: FormattedValue,\n  color: string,\n  width: number,\n  height: number,\n  orientation: VizOrientation,\n  isOverflow: boolean,\n  text?: VizTextDisplayOptions\n): CSSProperties {\n  const styles: CSSProperties = {\n    color,\n    height: `${height}px`,\n    maxWidth: `${width}px`,\n    display: 'flex',\n    alignItems: 'center',\n    textWrap: 'nowrap',\n    lineHeight: VALUE_LINE_HEIGHT,\n  };\n\n  // how many pixels in wide can the text be?\n  let textWidth = width;\n  const formattedValueString = formattedValueToString(value);\n\n  if (isVertical(orientation)) {\n    styles.fontSize = text?.valueSize ?? calculateFontSize(formattedValueString, textWidth, height, VALUE_LINE_HEIGHT);\n    styles.justifyContent = `center`;\n  } else {\n    styles.fontSize =\n      text?.valueSize ??\n      calculateFontSize(formattedValueString, textWidth - VALUE_LEFT_PADDING * 2, height, VALUE_LINE_HEIGHT);\n    styles.justifyContent = `flex-end`;\n    styles.paddingLeft = `${VALUE_LEFT_PADDING}px`;\n    styles.paddingRight = `${VALUE_LEFT_PADDING + (isOverflow ? VALUE_RIGHT_OVERFLOW_PADDING : 0)}px`;\n    // Need to remove the left padding from the text width constraints\n    textWidth -= VALUE_LEFT_PADDING;\n  }\n\n  return styles;\n}\n","import { Field, LinkModel } from '@grafana/data';\n\nimport { ButtonProps, Button } from '../Button/Button';\n\ntype DataLinkButtonProps = {\n  link: LinkModel<Field>;\n  buttonProps?: Omit<ButtonProps, 'children'>;\n};\n\n/**\n * @internal\n */\nexport function DataLinkButton({ link, buttonProps }: DataLinkButtonProps) {\n  return (\n    <a\n      href={link.href}\n      target={link.target}\n      rel=\"noreferrer\"\n      onClick={\n        link.onClick\n          ? (event) => {\n              if (!(event.ctrlKey || event.metaKey || event.shiftKey) && link.onClick) {\n                event.preventDefault();\n                link.onClick(event);\n              }\n            }\n          : undefined\n      }\n    >\n      <Button\n        icon={link.target === '_blank' ? 'external-link-alt' : 'link'}\n        variant=\"primary\"\n        size=\"sm\"\n        {...buttonProps}\n      >\n        {link.title}\n      </Button>\n    </a>\n  );\n}\n","import { css } from '@emotion/css';\nimport { useMemo } from 'react';\n\nimport { ActionModel, Field, GrafanaTheme2, LinkModel, ThemeSpacingTokens } from '@grafana/data';\nimport { Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { ActionButton } from '../Actions/ActionButton';\nimport { Button } from '../Button/Button';\nimport { DataLinkButton } from '../DataLinks/DataLinkButton';\nimport { Icon } from '../Icon/Icon';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { ResponsiveProp } from '../Layout/utils/responsiveness';\nimport { AdHocFilterItem } from '../Table/TableNG/types';\n\nexport interface AdHocFilterModel extends AdHocFilterItem {\n  onClick: () => void;\n}\n\ninterface VizTooltipFooterProps {\n  dataLinks: Array<LinkModel<Field>>;\n  actions?: Array<ActionModel<Field>>;\n  adHocFilters?: AdHocFilterModel[];\n  annotate?: () => void;\n}\n\nexport const ADD_ANNOTATION_ID = 'add-annotation-button';\n\ntype RenderOneClickTrans = (title: string) => React.ReactNode;\ntype RenderItem<T extends LinkModel | ActionModel> = (\n  item: T,\n  idx: number,\n  styles: ReturnType<typeof getStyles>\n) => React.ReactNode;\n\nfunction makeRenderLinksOrActions<T extends LinkModel | ActionModel>(\n  renderOneClickTrans: RenderOneClickTrans,\n  renderItem: RenderItem<T>,\n  itemGap?: ResponsiveProp<ThemeSpacingTokens>\n) {\n  const renderLinksOrActions = (items: T[], styles: ReturnType<typeof getStyles>) => {\n    if (items.length === 0) {\n      return;\n    }\n\n    const oneClickItem = items.find((item) => item.oneClick === true);\n\n    if (oneClickItem != null) {\n      return (\n        <div className={styles.footerSection}>\n          <Stack direction=\"column\" justifyContent=\"flex-start\" gap={0.5}>\n            <span className={styles.oneClickWrapper}>\n              <Icon name=\"info-circle\" size=\"lg\" className={styles.infoIcon} />\n              {renderOneClickTrans(oneClickItem.title)}\n            </span>\n          </Stack>\n        </div>\n      );\n    }\n\n    return (\n      <div className={styles.footerSection}>\n        <Stack direction=\"column\" justifyContent=\"flex-start\" gap={itemGap}>\n          {items.map((item, i) => renderItem(item, i, styles))}\n        </Stack>\n      </div>\n    );\n  };\n\n  return renderLinksOrActions;\n}\n\nconst renderDataLinks = makeRenderLinksOrActions<LinkModel>(\n  (title) => (\n    <Trans i18nKey=\"grafana-ui.viz-tooltip.footer-click-to-navigate\">Click to open {{ linkTitle: title }}</Trans>\n  ),\n  (item, i, styles) => (\n    <DataLinkButton link={item} key={i} buttonProps={{ className: styles.dataLinkButton, fill: 'text' }} />\n  ),\n  0.5\n);\n\nconst renderActions = makeRenderLinksOrActions<ActionModel>(\n  (title) => <Trans i18nKey=\"grafana-ui.viz-tooltip.footer-click-to-action\">Click to {{ actionTitle: title }}</Trans>,\n  (item, i) => <ActionButton key={i} action={item} variant=\"secondary\" />\n);\n\nexport const VizTooltipFooter = ({ dataLinks, actions = [], annotate, adHocFilters = [] }: VizTooltipFooterProps) => {\n  const styles = useStyles2(getStyles);\n  const hasOneClickLink = useMemo(() => dataLinks.some((link) => link.oneClick === true), [dataLinks]);\n  const hasOneClickAction = useMemo(() => actions.some((action) => action.oneClick === true), [actions]);\n\n  return (\n    <div className={styles.wrapper}>\n      {!hasOneClickAction && renderDataLinks(dataLinks, styles)}\n      {!hasOneClickLink && renderActions(actions, styles)}\n      {!hasOneClickLink && !hasOneClickAction && adHocFilters.length > 0 && (\n        <div className={styles.footerSection}>\n          {adHocFilters.map((item, index) => (\n            <Button key={index} icon=\"filter\" variant=\"secondary\" size=\"sm\" onClick={item.onClick}>\n              <Trans i18nKey=\"grafana-ui.viz-tooltip.footer-filter-for-value\">\n                Filter for '{{ value: item.value }}'\n              </Trans>\n            </Button>\n          ))}\n        </div>\n      )}\n      {!hasOneClickLink && !hasOneClickAction && annotate != null && (\n        <div className={styles.footerSection}>\n          <Button icon=\"comment-alt\" variant=\"secondary\" size=\"sm\" id={ADD_ANNOTATION_ID} onClick={annotate}>\n            <Trans i18nKey=\"grafana-ui.viz-tooltip.footer-add-annotation\">Add annotation</Trans>\n          </Button>\n        </div>\n      )}\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  wrapper: css({\n    display: 'flex',\n    flexDirection: 'column',\n    flex: 1,\n    padding: theme.spacing(0),\n  }),\n  footerSection: css({\n    borderTop: `1px solid ${theme.colors.border.medium}`,\n    padding: theme.spacing(1),\n  }),\n  dataLinkButton: css({\n    cursor: 'pointer',\n    '&:hover': {\n      textDecoration: 'underline',\n      background: 'none',\n    },\n    padding: 0,\n    height: 'auto',\n    '& span': {\n      whiteSpace: 'normal',\n      textAlign: 'left',\n    },\n  }),\n  oneClickWrapper: css({\n    display: 'flex',\n    alignItems: 'center',\n  }),\n  infoIcon: css({\n    color: theme.colors.primary.main,\n    paddingRight: theme.spacing(0.5),\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport React, { HTMLAttributes } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport interface Props extends HTMLAttributes<HTMLDivElement> {\n  children?: React.ReactNode;\n}\n\nexport const VizTooltipWrapper = ({ children, className }: Props) => {\n  const styles = useStyles2(getStyles);\n\n  return <div className={cx(styles.wrapper, className)}>{children}</div>;\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  wrapper: css({\n    display: 'flex',\n    flexDirection: 'column',\n    fontSize: theme.typography.bodySmall.fontSize,\n  }),\n});\n","import { css } from '@emotion/css';\nimport { flip, shift, useDismiss, useFloating, useInteractions } from '@floating-ui/react';\nimport { useMemo, ReactNode } from 'react';\n\nimport { ActionModel, GrafanaTheme2, LinkModel } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\nimport { Portal } from '../Portal/Portal';\nimport { VizTooltipFooter } from '../VizTooltip/VizTooltipFooter';\nimport { VizTooltipWrapper } from '../VizTooltip/VizTooltipWrapper';\n\nimport { DataLinksActionsTooltipCoords } from './utils';\n\ninterface Props {\n  links: LinkModel[];\n  actions?: ActionModel[];\n  value?: ReactNode;\n  coords: DataLinksActionsTooltipCoords;\n  onTooltipClose?: () => void;\n}\n\n/**\n *\n * @internal\n */\nexport const DataLinksActionsTooltip = ({ links, actions, value, coords, onTooltipClose }: Props) => {\n  const theme = useTheme2();\n  const styles = useStyles2(getStyles);\n\n  // the order of middleware is important!\n  const middleware = [\n    flip({\n      fallbackAxisSideDirection: 'end',\n      // see https://floating-ui.com/docs/flip#combining-with-shift\n      crossAxis: false,\n      boundary: document.body,\n    }),\n    shift(),\n  ];\n\n  const virtual = useMemo(() => {\n    const { clientX, clientY } = coords;\n\n    // https://floating-ui.com/docs/virtual-elements\n    return {\n      getBoundingClientRect() {\n        return {\n          width: 0,\n          height: 0,\n          x: clientX,\n          y: clientY,\n          top: clientY,\n          left: clientX,\n          right: clientX,\n          bottom: clientY,\n        };\n      },\n    };\n  }, [coords]);\n\n  const refCallback = (el: HTMLDivElement) => {\n    refs.setFloating(el);\n    refs.setReference(virtual);\n  };\n\n  const { context, refs, floatingStyles } = useFloating({\n    open: true,\n    placement: 'right-start',\n    onOpenChange: onTooltipClose,\n    middleware,\n    // whileElementsMounted: autoUpdate,\n  });\n\n  const dismiss = useDismiss(context);\n\n  const { getFloatingProps, getReferenceProps } = useInteractions([dismiss]);\n\n  if (links.length === 0 && !Boolean(actions?.length)) {\n    return null;\n  }\n\n  return (\n    <>\n      {/* TODO: we can remove `value` from this component when TableRT is fully deprecated */}\n      {value}\n      <Portal zIndex={theme.zIndex.tooltip}>\n        <div\n          ref={refCallback}\n          {...getReferenceProps()}\n          {...getFloatingProps()}\n          style={floatingStyles}\n          className={styles.tooltipWrapper}\n          data-testid={selectors.components.DataLinksActionsTooltip.tooltipWrapper}\n        >\n          <VizTooltipWrapper>\n            <VizTooltipFooter dataLinks={links} actions={actions} />\n          </VizTooltipWrapper>\n        </div>\n      </Portal>\n    </>\n  );\n};\n\nexport const renderSingleLink = (link: LinkModel, children: ReactNode, className?: string): ReactNode => {\n  return (\n    <a\n      href={link.href}\n      onClick={link.onClick}\n      target={link.target}\n      title={link.title}\n      data-testid={selectors.components.DataLinksContextMenu.singleLink}\n      className={className}\n    >\n      {children}\n    </a>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    tooltipWrapper: css({\n      whiteSpace: 'pre',\n      borderRadius: theme.shape.radius.default,\n      background: theme.colors.background.primary,\n      border: `1px solid ${theme.colors.border.weak}`,\n      boxShadow: theme.shadows.z3,\n      userSelect: 'text',\n      fontSize: theme.typography.bodySmall.fontSize,\n    }),\n  };\n};\n","import { isFunction } from 'lodash';\nimport { useState } from 'react';\n\nimport { ThresholdsConfig, ThresholdsMode, VizOrientation, getFieldConfigWithMinMax } from '@grafana/data';\nimport { BarGaugeDisplayMode, BarGaugeValueMode, TableCellDisplayMode } from '@grafana/schema';\n\nimport { BarGauge } from '../../BarGauge/BarGauge';\nimport { DataLinksActionsTooltip, renderSingleLink } from '../DataLinksActionsTooltip';\nimport { TableCellProps } from '../types';\nimport {\n  DataLinksActionsTooltipCoords,\n  getAlignmentFactor,\n  getCellOptions,\n  getDataLinksActionsTooltipUtils,\n} from '../utils';\n\nconst defaultScale: ThresholdsConfig = {\n  mode: ThresholdsMode.Absolute,\n  steps: [\n    {\n      color: 'blue',\n      value: -Infinity,\n    },\n    {\n      color: 'green',\n      value: 20,\n    },\n  ],\n};\n\nexport const BarGaugeCell = (props: TableCellProps) => {\n  const { field, innerWidth, tableStyles, cell, cellProps, row } = props;\n  const displayValue = field.display!(cell.value);\n  const cellOptions = getCellOptions(field);\n\n  let config = getFieldConfigWithMinMax(field, false);\n  if (!config.thresholds) {\n    config = {\n      ...config,\n      thresholds: defaultScale,\n    };\n  }\n\n  // Set default display mode and update if defined\n  // and update the valueMode if defined\n  let barGaugeMode: BarGaugeDisplayMode = BarGaugeDisplayMode.Gradient;\n  let valueDisplayMode: BarGaugeValueMode | undefined = undefined;\n\n  if (cellOptions.type === TableCellDisplayMode.Gauge) {\n    barGaugeMode = cellOptions.mode ?? BarGaugeDisplayMode.Gradient;\n    valueDisplayMode =\n      cellOptions.valueDisplayMode !== undefined ? cellOptions.valueDisplayMode : BarGaugeValueMode.Text;\n  }\n\n  const getLinks = () => {\n    if (!isFunction(field.getLinks)) {\n      return [];\n    }\n\n    return field.getLinks({ valueRowIndex: row.index });\n  };\n\n  const alignmentFactors = getAlignmentFactor(field, displayValue, cell.row.index);\n\n  const renderComponent = () => {\n    return (\n      <BarGauge\n        width={innerWidth}\n        height={tableStyles.cellHeightInner}\n        field={config}\n        display={field.display}\n        text={{ valueSize: 14 }}\n        value={displayValue}\n        orientation={VizOrientation.Horizontal}\n        theme={tableStyles.theme}\n        alignmentFactors={alignmentFactors}\n        itemSpacing={1}\n        lcdCellWidth={8}\n        displayMode={barGaugeMode}\n        valueDisplayMode={valueDisplayMode}\n      />\n    );\n  };\n\n  const [tooltipCoords, setTooltipCoords] = useState<DataLinksActionsTooltipCoords>();\n  const { shouldShowLink, hasMultipleLinksOrActions } = getDataLinksActionsTooltipUtils(getLinks());\n  const shouldShowTooltip = hasMultipleLinksOrActions && tooltipCoords !== undefined;\n\n  const links = getLinks();\n\n  return (\n    // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n    <div\n      {...cellProps}\n      className={tableStyles.cellContainer}\n      style={{ ...cellProps.style, cursor: hasMultipleLinksOrActions ? 'context-menu' : 'auto' }}\n      onClick={({ clientX, clientY }) => {\n        setTooltipCoords({ clientX, clientY });\n      }}\n    >\n      {shouldShowLink ? (\n        renderSingleLink(links[0], renderComponent())\n      ) : shouldShowTooltip ? (\n        <DataLinksActionsTooltip\n          links={links}\n          value={renderComponent()}\n          coords={tooltipCoords}\n          onTooltipClose={() => setTooltipCoords(undefined)}\n        />\n      ) : (\n        renderComponent()\n      )}\n    </div>\n  );\n};\n","import { Row } from 'react-table';\n\nimport { Field, LinkModel } from '@grafana/data';\n\n/**\n * @internal\n */\nexport const getCellLinks = (field: Field, row: Row) => {\n  let links: Array<LinkModel<Field>> | undefined;\n  if (field.getLinks) {\n    links = field.getLinks({\n      valueRowIndex: row.index,\n    });\n  }\n\n  if (!links) {\n    return;\n  }\n\n  for (let i = 0; i < links?.length; i++) {\n    if (links[i].onClick) {\n      const origOnClick = links[i].onClick;\n\n      links[i].onClick = (event) => {\n        // Allow opening in new tab\n        if (!(event.ctrlKey || event.metaKey || event.shiftKey)) {\n          event.preventDefault();\n          origOnClick!(event, {\n            field,\n            rowIndex: row.index,\n          });\n        }\n      };\n    }\n  }\n\n  return links.filter((link) => link.href || link.onClick != null);\n};\n","import { getCellLinks } from '../../../utils/table';\nimport { TableCellProps } from '../types';\n\nexport const DataLinksCell = (props: TableCellProps) => {\n  const { field, row, cellProps, tableStyles } = props;\n\n  const links = getCellLinks(field, row);\n\n  return (\n    <div {...cellProps} className={tableStyles.cellContainerText}>\n      {links?.map((link, idx) => {\n        return !link.href && link.onClick == null ? (\n          <span key={idx} className={tableStyles.cellLinkEmpty}>\n            {link.title}\n          </span>\n        ) : (\n          // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n          <span key={idx} className={tableStyles.cellLink} onClick={link.onClick}>\n            <a href={link.href} target={link.target}>\n              {link.title}\n            </a>\n          </span>\n        );\n      })}\n    </div>\n  );\n};\n","import { Property } from 'csstype';\nimport { FC } from 'react';\nimport { CellProps, Column, Row, TableState, UseExpandedRowProps } from 'react-table';\n\nimport {\n  DataFrame,\n  Field,\n  KeyValue,\n  SelectableValue,\n  TimeRange,\n  FieldConfigSource,\n  ActionModel,\n  InterpolateFunction,\n} from '@grafana/data';\nimport * as schema from '@grafana/schema';\n\nimport { TableCellInspectorMode } from './TableCellInspector';\nimport { TableStyles } from './TableRT/styles';\n\nexport {\n  type FieldTextAlignment,\n  TableCellBackgroundDisplayMode,\n  TableCellDisplayMode,\n  type TableAutoCellOptions,\n  type TableSparklineCellOptions,\n  type TableBarGaugeCellOptions,\n  type TableColoredBackgroundCellOptions,\n  type TableColorTextCellOptions,\n  type TableImageCellOptions,\n  type TableJsonViewCellOptions,\n} from '@grafana/schema';\n\nexport interface TableRow {\n  [x: string]: any;\n}\n\nexport type InspectCell = { value: any; mode: TableCellInspectorMode };\n\nexport const FILTER_FOR_OPERATOR = '=';\nexport const FILTER_OUT_OPERATOR = '!=';\nexport type AdHocFilterOperator = typeof FILTER_FOR_OPERATOR | typeof FILTER_OUT_OPERATOR;\nexport type AdHocFilterItem = { key: string; value: string; operator: AdHocFilterOperator };\nexport type TableFilterActionCallback = (item: AdHocFilterItem) => void;\nexport type TableColumnResizeActionCallback = (fieldDisplayName: string, width: number) => void;\nexport type TableSortByActionCallback = (state: TableSortByFieldState[]) => void;\nexport type TableInspectCellCallback = (state: InspectCell) => void;\n\nexport interface TableSortByFieldState {\n  displayName: string;\n  desc?: boolean;\n}\n\nexport interface TableCellProps extends CellProps<any> {\n  tableStyles: TableStyles;\n  cellProps: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>;\n  field: Field;\n  onCellFilterAdded?: TableFilterActionCallback;\n  innerWidth: number;\n  frame: DataFrame;\n  actions?: ActionModel[]; // unused in NG\n  setInspectCell?: TableInspectCellCallback;\n}\n\nexport type CellComponent = FC<TableCellProps>;\n\nexport type FooterItem = Array<KeyValue<string>> | string | undefined;\n\nexport type GrafanaTableColumn = Column & {\n  field: Field;\n  sortType: 'number' | 'basic' | 'alphanumeric-insensitive';\n  filter: (rows: Row[], id: string, filterValues?: SelectableValue[]) => SelectableValue[];\n  justifyContent: Property.JustifyContent;\n  minWidth: number;\n};\n\nexport interface TableFooterCalc {\n  show: boolean;\n  reducer: string[]; // actually 1 value\n  fields?: string[];\n  enablePagination?: boolean;\n  countRows?: boolean;\n}\n\nexport interface GrafanaTableState extends TableState {\n  // We manually track this to know where to reset the row heights. This is needed because react-table removed the\n  // collapsed IDs/indexes from the state.expanded map so when collapsing we would have to do a diff of current and\n  // previous state.expanded to know what changed.\n  lastExpandedOrCollapsedIndex?: number;\n}\n\nexport interface GrafanaTableRow extends Row, UseExpandedRowProps<{}> {}\n\nexport interface TableStateReducerProps {\n  onColumnResize?: TableColumnResizeActionCallback;\n  onSortByChange?: TableSortByActionCallback;\n  data: DataFrame;\n}\n\n// export interface Props {\nexport interface TableRTProps {\n  ariaLabel?: string;\n  data: DataFrame;\n  width: number;\n  height: number;\n  maxHeight?: number;\n  /** Minimal column width specified in pixels */\n  columnMinWidth?: number;\n  noHeader?: boolean;\n  showTypeIcons?: boolean;\n  resizable?: boolean;\n  initialSortBy?: TableSortByFieldState[];\n  onColumnResize?: TableColumnResizeActionCallback;\n  onSortByChange?: TableSortByActionCallback;\n  onCellFilterAdded?: TableFilterActionCallback;\n  footerOptions?: TableFooterCalc;\n  footerValues?: FooterItem[];\n  enablePagination?: boolean;\n  cellHeight?: schema.TableCellHeight;\n  /** @alpha Used by SparklineCell when provided */\n  timeRange?: TimeRange;\n  enableSharedCrosshair?: boolean;\n  // The index of the field value that the table will initialize scrolled to\n  initialRowIndex?: number;\n  fieldConfig?: FieldConfigSource;\n  getActions?: GetActionsFunction;\n  replaceVariables?: InterpolateFunction;\n}\n\n/**\n * @alpha\n * Props that will be passed to the TableCustomCellOptions.cellComponent when rendered.\n */\nexport interface CustomCellRendererProps {\n  field: Field;\n  rowIndex: number;\n  frame: DataFrame;\n  // Would be great to have generic type for this but that would need having a generic DataFrame type where the field\n  // types could be propagated here.\n  value: unknown;\n}\n\n/**\n * @alpha\n * Can be used to define completely custom cell contents by providing a custom cellComponent.\n */\nexport interface TableCustomCellOptions {\n  cellComponent: FC<CustomCellRendererProps>;\n  type: schema.TableCellDisplayMode.Custom;\n}\n\n/**\n * @alpha\n * Props that will be passed to the TableCustomCellOptions.cellComponent when rendered.\n */\nexport interface CustomHeaderRendererProps {\n  field: Field;\n  defaultContent: React.ReactNode;\n}\n\n// As cue/schema cannot define function types (as main point of schema is to be serializable) we have to extend the\n// types here with the dynamic API. This means right now this is not usable as a table panel option for example.\nexport type TableCellOptions = schema.TableCellOptions | TableCustomCellOptions;\nexport type TableFieldOptions = Omit<schema.TableFieldOptions, 'cellOptions'> & {\n  cellOptions: TableCellOptions;\n  headerComponent?: React.ComponentType<CustomHeaderRendererProps>;\n};\n\n// Cell background and text colors\n// Can also be used for table rows\nexport interface CellColors {\n  textColor?: string;\n  bgColor?: string;\n  bgHoverColor?: string;\n}\n\nexport type GetActionsFunction = (\n  frame: DataFrame,\n  field: Field,\n  rowIndex: number,\n  replaceVariables?: InterpolateFunction\n) => ActionModel[];\n","import { useCallback } from 'react';\nimport * as React from 'react';\n\nimport { t } from '@grafana/i18n';\n\nimport { IconSize } from '../../types/icon';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { TooltipPlacement } from '../Tooltip/types';\n\nimport { TableCellInspectorMode } from './TableCellInspector';\nimport { FILTER_FOR_OPERATOR, FILTER_OUT_OPERATOR, TableCellProps } from './types';\nimport { getTextAlign } from './utils';\n\ninterface CellActionProps extends TableCellProps {\n  previewMode: TableCellInspectorMode;\n}\n\ninterface CommonButtonProps {\n  size: IconSize;\n  showFilters?: boolean;\n  tooltipPlacement: TooltipPlacement;\n}\n\nexport function CellActions({\n  field,\n  cell,\n  previewMode,\n  showFilters,\n  onCellFilterAdded,\n  setInspectCell,\n}: CellActionProps) {\n  const isRightAligned = getTextAlign(field) === 'flex-end';\n  const inspectEnabled = Boolean(field.config.custom?.inspect);\n  const commonButtonProps: CommonButtonProps = {\n    size: 'sm',\n    tooltipPlacement: 'top',\n  };\n\n  const onFilterFor = useCallback(\n    (event: React.MouseEvent<HTMLButtonElement>) => {\n      if (onCellFilterAdded) {\n        onCellFilterAdded({ key: field.name, operator: FILTER_FOR_OPERATOR, value: cell.value });\n      }\n    },\n    [cell, field, onCellFilterAdded]\n  );\n  const onFilterOut = useCallback(\n    (event: React.MouseEvent<HTMLButtonElement>) => {\n      if (onCellFilterAdded) {\n        onCellFilterAdded({ key: field.name, operator: FILTER_OUT_OPERATOR, value: cell.value });\n      }\n    },\n    [cell, field, onCellFilterAdded]\n  );\n\n  return (\n    <div className={`cellActions${isRightAligned ? ' cellActionsLeft' : ''}`}>\n      <Stack gap={0.5}>\n        {inspectEnabled && (\n          <IconButton\n            name=\"eye\"\n            tooltip={t('grafana-ui.table.cell-inspect', 'Inspect value')}\n            onClick={() => {\n              if (setInspectCell) {\n                setInspectCell({ value: cell.value, mode: previewMode });\n              }\n            }}\n            {...commonButtonProps}\n          />\n        )}\n        {showFilters && (\n          <IconButton\n            name={'search-plus'}\n            onClick={onFilterFor}\n            tooltip={t('grafana-ui.table.cell-filter-on', 'Filter for value')}\n            {...commonButtonProps}\n          />\n        )}\n        {showFilters && (\n          <IconButton\n            name={'search-minus'}\n            onClick={onFilterOut}\n            tooltip={t('grafana-ui.table.cell-filter-out', 'Filter out value')}\n            {...commonButtonProps}\n          />\n        )}\n      </Stack>\n    </div>\n  );\n}\n","import { ReactElement, useState } from 'react';\nimport * as React from 'react';\n\nimport { DisplayValue, formattedValueToString } from '@grafana/data';\nimport { TableCellDisplayMode } from '@grafana/schema';\n\nimport { getCellLinks } from '../../../utils/table';\nimport { CellActions } from '../CellActions';\nimport { DataLinksActionsTooltip, renderSingleLink } from '../DataLinksActionsTooltip';\nimport { TableCellInspectorMode } from '../TableCellInspector';\nimport { TableStyles } from '../TableRT/styles';\nimport { TableCellProps, CustomCellRendererProps, TableCellOptions } from '../types';\nimport {\n  DataLinksActionsTooltipCoords,\n  getCellColors,\n  getCellOptions,\n  getDataLinksActionsTooltipUtils,\n  tooltipOnClickHandler,\n} from '../utils';\n\nexport const DefaultCell = (props: TableCellProps) => {\n  const { field, cell, tableStyles, row, cellProps, frame, rowStyled, rowExpanded, textWrapped, height } = props;\n  const inspectEnabled = Boolean(field.config.custom?.inspect);\n  const displayValue = field.display!(cell.value);\n\n  const showFilters = props.onCellFilterAdded && field.config.filterable;\n  const showActions = (showFilters && cell.value !== undefined) || inspectEnabled;\n  const cellOptions = getCellOptions(field);\n  let value: string | ReactElement;\n\n  const OG_TWEET_LENGTH = 140; // 🙏\n\n  if (cellOptions.type === TableCellDisplayMode.Custom) {\n    const CustomCellComponent: React.ComponentType<CustomCellRendererProps> = cellOptions.cellComponent;\n    value = <CustomCellComponent field={field} value={cell.value} rowIndex={row.index} frame={frame} />;\n  } else {\n    if (React.isValidElement(cell.value)) {\n      value = cell.value;\n    } else {\n      value = formattedValueToString(displayValue);\n    }\n  }\n\n  const isStringValue = typeof value === 'string';\n\n  // Text should wrap when the content length is less than or equal to the length of an OG tweet and it contains whitespace\n  const textShouldWrap = displayValue.text.length <= OG_TWEET_LENGTH && /\\s/.test(displayValue.text);\n  const cellStyle = getCellStyle(\n    tableStyles,\n    cellOptions,\n    displayValue,\n    inspectEnabled,\n    isStringValue,\n    textShouldWrap,\n    textWrapped,\n    rowStyled,\n    rowExpanded\n  );\n\n  if (isStringValue) {\n    let justifyContent = cellProps.style?.justifyContent;\n\n    if (justifyContent === 'flex-end') {\n      cellProps.style = { ...cellProps.style, textAlign: 'right' };\n    } else if (justifyContent === 'center') {\n      cellProps.style = { ...cellProps.style, textAlign: 'center' };\n    }\n  }\n\n  if (height) {\n    cellProps.style = { ...cellProps.style, height };\n  }\n\n  if (textWrapped) {\n    cellProps.style = { ...cellProps.style, textWrap: 'wrap' };\n  }\n\n  const { key, ...rest } = cellProps;\n  const links = getCellLinks(field, row) || [];\n\n  const [tooltipCoords, setTooltipCoords] = useState<DataLinksActionsTooltipCoords>();\n  const { shouldShowLink, hasMultipleLinksOrActions } = getDataLinksActionsTooltipUtils(links);\n  const shouldShowTooltip = hasMultipleLinksOrActions && tooltipCoords !== undefined;\n\n  return (\n    // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n    <div\n      key={key}\n      {...rest}\n      className={cellStyle}\n      style={{ ...cellProps.style, cursor: hasMultipleLinksOrActions ? 'context-menu' : 'auto' }}\n      onClick={tooltipOnClickHandler(setTooltipCoords)}\n    >\n      {shouldShowLink ? (\n        renderSingleLink(links[0], value, getLinkStyle(tableStyles, cellOptions))\n      ) : shouldShowTooltip ? (\n        <DataLinksActionsTooltip\n          links={links}\n          value={value}\n          coords={tooltipCoords}\n          onTooltipClose={() => setTooltipCoords(undefined)}\n        />\n      ) : isStringValue ? (\n        `${value}`\n      ) : (\n        <div className={tableStyles.cellText}>{value}</div>\n      )}\n\n      {showActions && <CellActions {...props} previewMode={TableCellInspectorMode.text} showFilters={showFilters} />}\n    </div>\n  );\n};\n\nconst getLinkStyle = (tableStyles: TableStyles, cellOptions: TableCellOptions) => {\n  if (cellOptions.type === TableCellDisplayMode.Auto) {\n    return tableStyles.cellLink;\n  }\n\n  return tableStyles.cellLinkForColoredCell;\n};\n\nfunction getCellStyle(\n  tableStyles: TableStyles,\n  cellOptions: TableCellOptions,\n  displayValue: DisplayValue,\n  disableOverflowOnHover = false,\n  isStringValue = false,\n  shouldWrapText = false,\n  textWrapped = false,\n  rowStyled = false,\n  rowExpanded = false\n) {\n  // Setup color variables\n  let textColor: string | undefined = undefined;\n  let bgColor: string | undefined = undefined;\n  let bgHoverColor: string | undefined = undefined;\n\n  // Get colors\n  const colors = getCellColors(tableStyles.theme, cellOptions, displayValue);\n  textColor = colors.textColor;\n  bgColor = colors.bgColor;\n  bgHoverColor = colors.bgHoverColor;\n\n  // If we have defined colors return those styles\n  // Otherwise we return default styles\n  return tableStyles.buildCellContainerStyle(\n    textColor,\n    bgColor,\n    bgHoverColor,\n    !disableOverflowOnHover,\n    isStringValue,\n    shouldWrapText,\n    textWrapped,\n    rowStyled,\n    rowExpanded\n  );\n}\n","import WKT from 'ol/format/WKT';\nimport { Geometry } from 'ol/geom';\n\nimport { TableCellProps } from '../types';\n\nexport function GeoCell(props: TableCellProps): JSX.Element {\n  const { cell, tableStyles, cellProps } = props;\n\n  let disp = '';\n\n  if (cell.value instanceof Geometry) {\n    disp = new WKT().writeGeometry(cell.value, {\n      featureProjection: 'EPSG:3857',\n      dataProjection: 'EPSG:4326',\n    });\n  } else if (cell.value != null) {\n    disp = `${cell.value}`;\n  }\n\n  return (\n    <div {...cellProps} className={tableStyles.cellContainer}>\n      <div className={tableStyles.cellText} style={{ fontFamily: 'monospace' }}>\n        {disp}\n      </div>\n    </div>\n  );\n}\n","import { useState } from 'react';\n\nimport { getCellLinks } from '../../../utils/table';\nimport { DataLinksActionsTooltip, renderSingleLink } from '../DataLinksActionsTooltip';\nimport { TableCellDisplayMode, TableCellProps } from '../types';\nimport {\n  tooltipOnClickHandler,\n  DataLinksActionsTooltipCoords,\n  getCellOptions,\n  getDataLinksActionsTooltipUtils,\n} from '../utils';\n\nconst DATALINKS_HEIGHT_OFFSET = 10;\n\nexport const ImageCell = (props: TableCellProps) => {\n  const { field, cell, tableStyles, row, cellProps } = props;\n  const cellOptions = getCellOptions(field);\n  const { title, alt } =\n    cellOptions.type === TableCellDisplayMode.Image ? cellOptions : { title: undefined, alt: undefined };\n  const displayValue = field.display!(cell.value);\n\n  const links = getCellLinks(field, row) || [];\n\n  const [tooltipCoords, setTooltipCoords] = useState<DataLinksActionsTooltipCoords>();\n  const { shouldShowLink, hasMultipleLinksOrActions } = getDataLinksActionsTooltipUtils(links);\n  const shouldShowTooltip = hasMultipleLinksOrActions && tooltipCoords !== undefined;\n\n  // The image element\n  const img = (\n    <img\n      style={{ height: tableStyles.cellHeight - DATALINKS_HEIGHT_OFFSET, width: 'auto' }}\n      src={displayValue.text}\n      className={tableStyles.imageCell}\n      alt={alt}\n      title={title}\n    />\n  );\n\n  return (\n    // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n    <div\n      {...cellProps}\n      className={tableStyles.cellContainer}\n      style={{ ...cellProps.style, cursor: hasMultipleLinksOrActions ? 'context-menu' : 'auto' }}\n      onClick={tooltipOnClickHandler(setTooltipCoords)}\n    >\n      {/* If there are data links/actions, we render them with image */}\n      {/* Otherwise we simply render the image */}\n      {shouldShowLink ? (\n        renderSingleLink(links[0], img)\n      ) : shouldShowTooltip ? (\n        <DataLinksActionsTooltip\n          links={links}\n          value={img}\n          coords={tooltipCoords}\n          onTooltipClose={() => setTooltipCoords(undefined)}\n        />\n      ) : (\n        img\n      )}\n    </div>\n  );\n};\n","import { css, cx } from '@emotion/css';\nimport { isString } from 'lodash';\nimport { useState } from 'react';\n\nimport { getCellLinks } from '../../../utils/table';\nimport { CellActions } from '../CellActions';\nimport { DataLinksActionsTooltip, renderSingleLink } from '../DataLinksActionsTooltip';\nimport { TableCellInspectorMode } from '../TableCellInspector';\nimport { TableCellProps } from '../types';\nimport { tooltipOnClickHandler, DataLinksActionsTooltipCoords, getDataLinksActionsTooltipUtils } from '../utils';\n\nexport function JSONViewCell(props: TableCellProps): JSX.Element {\n  const { cell, tableStyles, cellProps, field, row } = props;\n  const inspectEnabled = Boolean(field.config.custom?.inspect);\n  const txt = css({\n    cursor: 'pointer',\n    fontFamily: 'monospace',\n  });\n\n  let value = cell.value;\n  let displayValue = value;\n\n  if (isString(value)) {\n    try {\n      value = JSON.parse(value);\n    } catch {} // ignore errors\n  } else {\n    try {\n      // JSON may refer to itself, which errors on stringify\n      displayValue = JSON.stringify(value, null, ' ');\n    } catch {\n      displayValue = undefined; // if it won't stringify, mark undefined\n    }\n  }\n\n  const links = getCellLinks(field, row) || [];\n\n  const [tooltipCoords, setTooltipCoords] = useState<DataLinksActionsTooltipCoords>();\n  const { shouldShowLink, hasMultipleLinksOrActions } = getDataLinksActionsTooltipUtils(links);\n  const shouldShowTooltip = hasMultipleLinksOrActions && tooltipCoords !== undefined;\n\n  return (\n    <div {...cellProps} className={inspectEnabled ? tableStyles.cellContainerNoOverflow : tableStyles.cellContainer}>\n      {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}\n      <div className={cx(tableStyles.cellText, txt)} onClick={tooltipOnClickHandler(setTooltipCoords)}>\n        {shouldShowLink ? (\n          renderSingleLink(links[0], displayValue)\n        ) : shouldShowTooltip ? (\n          <DataLinksActionsTooltip\n            links={links}\n            value={displayValue}\n            coords={tooltipCoords}\n            onTooltipClose={() => setTooltipCoords(undefined)}\n          />\n        ) : (\n          <div className={tableStyles.cellText}>{displayValue}</div>\n        )}\n      </div>\n      {inspectEnabled && <CellActions {...props} previewMode={TableCellInspectorMode.code} />}\n    </div>\n  );\n}\n","import { Logger } from './logger';\n\n/**\n * Allows debug helpers attachement to the window object\n * @internal\n */\nexport function attachDebugger(key: string, thebugger?: any, logger?: Logger) {\n  if (process.env.NODE_ENV === 'production') {\n    return;\n  }\n  let completeDebugger = thebugger || {};\n\n  if (logger !== undefined) {\n    completeDebugger = { ...completeDebugger, enable: () => logger.enable(), disable: () => logger.disable() };\n  }\n\n  // @ts-ignore\n  let debugGlobal = (typeof window !== 'undefined' && window['_debug']) ?? {};\n  debugGlobal[key] = completeDebugger;\n  if (typeof window !== 'undefined') {\n    // @ts-ignore\n    window['_debug'] = debugGlobal;\n  }\n}\n","import { throttle } from 'lodash';\n\ntype Args = Parameters<typeof console.log>;\n\n/**\n * @internal\n * */\nconst throttledLog = throttle((...t: Args) => {\n  console.log(...t);\n}, 500);\n\n/**\n * @internal\n */\nexport interface Logger {\n  logger: (...t: Args) => void;\n  enable: () => void;\n  disable: () => void;\n  isEnabled: () => boolean;\n}\n\n/** @internal */\nexport const createLogger = (name: string): Logger => {\n  let loggingEnabled = false;\n\n  if (typeof window !== 'undefined') {\n    loggingEnabled = window.localStorage.getItem('grafana.debug') === 'true';\n  }\n\n  return {\n    logger: (id: string, throttle = false, ...t: Args) => {\n      if (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'test' || !loggingEnabled) {\n        return;\n      }\n      const fn = throttle ? throttledLog : console.log;\n      fn(`[${name}: ${id}]:`, ...t);\n    },\n    enable: () => (loggingEnabled = true),\n    disable: () => (loggingEnabled = false),\n    isEnabled: () => loggingEnabled,\n  };\n};\n","import * as React from 'react';\nimport uPlot, { Options, AlignedData } from 'uplot';\n\nimport { UPlotConfigBuilder } from './config/UPlotConfigBuilder';\n\n/**\n * @internal -- not a public API\n */\nexport const FIXED_UNIT = '__fixed';\n\nexport type PlotConfig = Pick<\n  Options,\n  'mode' | 'series' | 'scales' | 'axes' | 'cursor' | 'bands' | 'hooks' | 'select' | 'tzDate' | 'padding'\n>;\n\nexport type FacetValues = any[];\nexport type FacetSeries = FacetValues[];\nexport type FacetedData = [_: null, ...series: FacetSeries];\n\nexport interface PlotProps {\n  data: AlignedData | FacetedData;\n  width: number;\n  height: number;\n  config: UPlotConfigBuilder;\n  children?: React.ReactNode;\n  // Reference to uPlot instance\n  plotRef?: (u: uPlot) => void;\n}\n\nexport abstract class PlotConfigBuilder<P, T> {\n  constructor(public props: P) {}\n  abstract getConfig(): T;\n}\n\n/**\n * @alpha\n */\nexport type PlotTooltipInterpolator = (\n  updateActiveSeriesIdx: (sIdx: number | null) => void,\n  updateActiveDatapointIdx: (dIdx: number | null) => void,\n  updateTooltipPosition: (clear?: boolean) => void,\n  u: uPlot\n) => void;\n\nexport interface PlotSelection {\n  min: number;\n  max: number;\n\n  // selection bounding box, relative to canvas\n  bbox: {\n    top: number;\n    left: number;\n    width: number;\n    height: number;\n  };\n}\n","import { FieldConfig, FieldType } from '@grafana/data';\nimport { AxisPlacement, GraphFieldConfig, ScaleDistribution, ScaleDistributionConfig } from '@grafana/schema';\n\nimport { FIXED_UNIT } from './types';\n\n/**\n * @internal -- not a public API\n */\nexport function buildScaleKey(config: FieldConfig<GraphFieldConfig>, fieldType: FieldType) {\n  const defaultPart = 'na';\n\n  const scaleRange = `${config.min !== undefined ? config.min : defaultPart}-${\n    config.max !== undefined ? config.max : defaultPart\n  }`;\n\n  const scaleSoftRange = `${config.custom?.axisSoftMin !== undefined ? config.custom.axisSoftMin : defaultPart}-${\n    config.custom?.axisSoftMax !== undefined ? config.custom.axisSoftMax : defaultPart\n  }`;\n\n  const scalePlacement = `${\n    config.custom?.axisPlacement !== undefined ? config.custom?.axisPlacement : AxisPlacement.Auto\n  }`;\n\n  const scaleUnit = config.unit ?? FIXED_UNIT;\n\n  const scaleDistribution = config.custom?.scaleDistribution\n    ? getScaleDistributionPart(config.custom.scaleDistribution)\n    : ScaleDistribution.Linear;\n\n  const scaleLabel = Boolean(config.custom?.axisLabel) ? config.custom!.axisLabel : defaultPart;\n\n  return `${scaleUnit}/${scaleRange}/${scaleSoftRange}/${scalePlacement}/${scaleDistribution}/${scaleLabel}/${fieldType}`;\n}\n\nfunction getScaleDistributionPart(config: ScaleDistributionConfig) {\n  if (config.type === ScaleDistribution.Log) {\n    return `${config.type}${config.log}`;\n  }\n  return config.type;\n}\n","import uPlot, { AlignedData, Options, PaddingSide } from 'uplot';\n\nimport {\n  DataFrame,\n  DisplayProcessor,\n  DisplayValue,\n  Field,\n  fieldReducers,\n  getDisplayProcessor,\n  GrafanaTheme2,\n  reduceField,\n  ReducerID,\n} from '@grafana/data';\nimport { BarAlignment, GraphDrawStyle, GraphTransform, LineInterpolation, StackingMode } from '@grafana/schema';\n\nimport { attachDebugger } from '../../utils/debug';\nimport { createLogger } from '../../utils/logger';\n\nimport { buildScaleKey } from './internal';\n\nconst paddingSide: PaddingSide = (u, side, sidesWithAxes) => {\n  let hasCrossAxis = side % 2 ? sidesWithAxes[0] || sidesWithAxes[2] : sidesWithAxes[1] || sidesWithAxes[3];\n\n  return sidesWithAxes[side] || !hasCrossAxis ? 0 : 8;\n};\n\nexport const DEFAULT_PLOT_CONFIG: Partial<Options> = {\n  ms: 1,\n  focus: {\n    alpha: 1,\n  },\n  cursor: {\n    focus: {\n      prox: 30,\n    },\n  },\n  legend: {\n    show: false,\n  },\n  padding: [paddingSide, paddingSide, paddingSide, paddingSide],\n  series: [],\n  hooks: {},\n};\n\n/** @internal */\ninterface StackMeta {\n  totals: AlignedData;\n}\n\n/** @internal */\nexport interface StackingGroup {\n  series: number[];\n  dir: StackDirection;\n}\n\n/** @internal */\nconst enum StackDirection {\n  Pos = 1,\n  Neg = -1,\n}\n\n// generates bands between adjacent group series\n/** @internal */\nexport function getStackingBands(group: StackingGroup) {\n  let bands: uPlot.Band[] = [];\n  let { series, dir } = group;\n  let lastIdx = series.length - 1;\n\n  let rSeries = series.slice().reverse();\n\n  rSeries.forEach((si, i) => {\n    if (i !== lastIdx) {\n      let nextIdx = rSeries[i + 1];\n      bands.push({\n        series: [si, nextIdx],\n        // fill direction is inverted from stack direction\n        dir: (-1 * dir) as 1 | -1,\n      });\n    }\n  });\n\n  return bands;\n}\n\n// expects an AlignedFrame\n/** @internal */\nexport function getStackingGroups(frame: DataFrame) {\n  let groups: Map<string, StackingGroup> = new Map();\n\n  frame.fields.forEach(({ config, values, type }, i) => {\n    // skip x or time field\n    if (i === 0) {\n      return;\n    }\n\n    let { custom } = config;\n\n    if (custom == null) {\n      return;\n    }\n\n    // TODO: currently all AlignedFrame fields end up in uplot series & data, even custom.hideFrom?.viz\n    // ideally hideFrom.viz fields would be excluded so we can remove this\n    if (custom.hideFrom?.viz) {\n      return;\n    }\n\n    let { stacking } = custom;\n\n    if (stacking == null) {\n      return;\n    }\n\n    let { mode: stackingMode, group: stackingGroup } = stacking;\n\n    // not stacking\n    if (stackingMode === StackingMode.None) {\n      return;\n    }\n\n    // will this be stacked up or down after any transforms applied\n    let transform = custom.transform;\n    let stackDir = getStackDirection(transform, values);\n\n    let drawStyle: GraphDrawStyle = custom.drawStyle;\n    let drawStyle2: BarAlignment | LineInterpolation | null =\n      drawStyle === GraphDrawStyle.Bars\n        ? custom.barAlignment\n        : drawStyle === GraphDrawStyle.Line\n          ? custom.lineInterpolation\n          : null;\n\n    let stackKey = `${stackDir}|${stackingMode}|${stackingGroup}|${buildScaleKey(\n      config,\n      type\n    )}|${drawStyle}|${drawStyle2}`;\n\n    let group = groups.get(stackKey);\n\n    if (group == null) {\n      group = {\n        series: [],\n        dir: stackDir,\n      };\n\n      groups.set(stackKey, group);\n    }\n\n    group.series.push(i);\n  });\n\n  return [...groups.values()];\n}\n\n/** @internal */\nexport function preparePlotData2(\n  frame: DataFrame,\n  stackingGroups: StackingGroup[],\n  onStackMeta?: (meta: StackMeta) => void\n): AlignedData {\n  let data = Array(frame.fields.length);\n\n  let stacksQty = stackingGroups.length;\n\n  let dataLen = frame.length;\n  let zeroArr = stacksQty > 0 ? Array(dataLen).fill(0) : [];\n  let falseArr = stacksQty > 0 ? Array(dataLen).fill(false) : [];\n  let accums = Array.from({ length: stacksQty }, () => zeroArr.slice());\n\n  let anyValsAtX = Array.from({ length: stacksQty }, () => falseArr.slice());\n\n  // figure out at which time indices each stacking group has any values\n  // (needed to avoid absorbing initial accum 0s at unrelated joined timestamps)\n  stackingGroups.forEach((group, groupIdx) => {\n    let groupValsAtX = anyValsAtX[groupIdx];\n\n    group.series.forEach((seriesIdx) => {\n      let field = frame.fields[seriesIdx];\n\n      if (field.config.custom?.hideFrom?.viz) {\n        return;\n      }\n\n      let vals = field.values;\n\n      for (let i = 0; i < dataLen; i++) {\n        if (vals[i] != null) {\n          groupValsAtX[i] = true;\n        }\n      }\n    });\n  });\n\n  frame.fields.forEach((field, i) => {\n    let vals = field.values;\n\n    if (i === 0) {\n      data[i] = vals;\n      return;\n    }\n\n    let { custom } = field.config;\n\n    if (!custom || custom.hideFrom?.viz) {\n      data[i] = vals;\n      return;\n    }\n\n    // apply transforms\n    if (custom.transform === GraphTransform.Constant) {\n      let firstValIdx = vals.findIndex((v) => v != null);\n      let firstVal = vals[firstValIdx];\n      vals = Array(vals.length).fill(undefined);\n      vals[firstValIdx] = firstVal;\n    } else {\n      vals = vals.slice();\n\n      if (custom.transform === GraphTransform.NegativeY) {\n        for (let i = 0; i < vals.length; i++) {\n          if (vals[i] != null) {\n            vals[i] *= -1;\n          }\n        }\n      }\n    }\n\n    let stackingMode = custom.stacking?.mode;\n\n    if (!stackingMode || stackingMode === StackingMode.None) {\n      data[i] = vals;\n    } else {\n      let stackIdx = stackingGroups.findIndex((group) => group.series.indexOf(i) > -1);\n\n      let accum = accums[stackIdx];\n      let groupValsAtX = anyValsAtX[stackIdx];\n      let stacked = (data[i] = Array(dataLen));\n\n      for (let i = 0; i < dataLen; i++) {\n        let v = vals[i];\n\n        if (v != null) {\n          stacked[i] = accum[i] += v;\n        } else {\n          stacked[i] = groupValsAtX[i] ? accum[i] : v;\n        }\n      }\n    }\n  });\n\n  if (onStackMeta) {\n    let accumsBySeriesIdx = data.map((vals, i) => {\n      let stackIdx = stackingGroups.findIndex((group) => group.series.indexOf(i) > -1);\n      return stackIdx !== -1 ? accums[stackIdx] : vals;\n    });\n\n    onStackMeta({\n      totals: accumsBySeriesIdx,\n    });\n  }\n\n  // re-compute by percent\n  frame.fields.forEach((field, i) => {\n    if (i === 0 || field.config.custom?.hideFrom?.viz) {\n      return;\n    }\n\n    let stackingMode = field.config.custom?.stacking?.mode;\n\n    if (stackingMode === StackingMode.Percent) {\n      let stackIdx = stackingGroups.findIndex((group) => group.series.indexOf(i) > -1);\n      let accum = accums[stackIdx];\n      let group = stackingGroups[stackIdx];\n\n      let stacked = data[i];\n\n      for (let i = 0; i < dataLen; i++) {\n        let v = stacked[i];\n\n        if (v != null) {\n          // v / accum will always be pos, so properly (re)sign by group stacking dir\n          stacked[i] = accum[i] === 0 ? 0 : group.dir * (v / accum[i]);\n        }\n      }\n    }\n  });\n\n  return data;\n}\n\n/**\n * Finds y axis midpoint for point at given idx (css pixels relative to uPlot canvas)\n * @internal\n **/\n\nexport function findMidPointYPosition(u: uPlot, idx: number) {\n  let y;\n  let sMaxIdx = 1;\n  let sMinIdx = 1;\n  // assume min/max being values of 1st series\n  let max = u.data[1][idx];\n  let min = u.data[1][idx];\n\n  // find min max values AND ids of the corresponding series to get the scales\n  for (let i = 1; i < u.data.length; i++) {\n    const sData = u.data[i];\n    const sVal = sData[idx];\n    if (sVal != null) {\n      if (max == null) {\n        max = sVal;\n      } else {\n        if (sVal > max) {\n          max = u.data[i][idx];\n          sMaxIdx = i;\n        }\n      }\n      if (min == null) {\n        min = sVal;\n      } else {\n        if (sVal < min) {\n          min = u.data[i][idx];\n          sMinIdx = i;\n        }\n      }\n    }\n  }\n\n  if (min == null && max == null) {\n    // no tooltip to show\n    y = undefined;\n  } else if (min != null && max != null) {\n    // find median position\n    y = (u.valToPos(min, u.series[sMinIdx].scale!) + u.valToPos(max, u.series[sMaxIdx].scale!)) / 2;\n  } else {\n    // snap tooltip to min OR max point, one of those is not null :)\n    y = u.valToPos((min || max)!, u.series[(sMaxIdx || sMinIdx)!].scale!);\n  }\n\n  // if y is out of canvas bounds, snap it to the bottom\n  if (y !== undefined && y < 0) {\n    y = u.bbox.height / devicePixelRatio;\n  }\n\n  return y;\n}\n\nfunction getStackDirection(transform: GraphTransform, data: unknown[]) {\n  const hasNegSamp = hasNegSample(data);\n\n  if (transform === GraphTransform.NegativeY) {\n    return hasNegSamp ? StackDirection.Pos : StackDirection.Neg;\n  }\n  return hasNegSamp ? StackDirection.Neg : StackDirection.Pos;\n}\n\n// similar to isLikelyAscendingVector()\nfunction hasNegSample(data: unknown[], samples = 100) {\n  const len = data.length;\n\n  if (len === 0) {\n    return false;\n  }\n\n  // skip leading & trailing nullish\n  let firstIdx = 0;\n  let lastIdx = len - 1;\n\n  while (firstIdx <= lastIdx && data[firstIdx] == null) {\n    firstIdx++;\n  }\n\n  while (lastIdx >= firstIdx && data[lastIdx] == null) {\n    lastIdx--;\n  }\n\n  let negCount = 0;\n  let posCount = 0;\n\n  if (lastIdx >= firstIdx) {\n    const stride = Math.max(1, Math.floor((lastIdx - firstIdx + 1) / samples));\n\n    for (let i = firstIdx; i <= lastIdx; i += stride) {\n      const v = data[i];\n\n      if (v != null && typeof v === 'number') {\n        if (v < 0 || Object.is(v, -0)) {\n          negCount++;\n        } else if (v > 0) {\n          posCount++;\n        }\n      }\n    }\n\n    if (negCount > posCount) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nexport const getDisplayValuesForCalcs = (calcs: string[], field: Field, theme: GrafanaTheme2) => {\n  if (!calcs?.length) {\n    return [];\n  }\n\n  const defaultFormatter = (v: any) => (v == null ? '-' : v.toFixed(1));\n  const fmt = field.display ?? defaultFormatter;\n  let countFormatter: DisplayProcessor | null = null;\n\n  const fieldCalcs = reduceField({\n    field: field,\n    reducers: calcs,\n  });\n\n  return calcs.map<DisplayValue>((reducerId) => {\n    const fieldReducer = fieldReducers.get(reducerId);\n    let formatter = fmt;\n\n    if (fieldReducer.id === ReducerID.diffperc) {\n      formatter = getDisplayProcessor({\n        field: {\n          ...field,\n          config: {\n            ...field.config,\n            unit: 'percent',\n          },\n        },\n        theme,\n      });\n    }\n\n    if (\n      fieldReducer.id === ReducerID.count ||\n      fieldReducer.id === ReducerID.changeCount ||\n      fieldReducer.id === ReducerID.distinctCount\n    ) {\n      if (!countFormatter) {\n        countFormatter = getDisplayProcessor({\n          field: {\n            ...field,\n            config: {\n              ...field.config,\n              unit: 'none',\n            },\n          },\n          theme,\n        });\n      }\n      formatter = countFormatter;\n    }\n\n    return {\n      ...formatter(fieldCalcs[reducerId]),\n      title: fieldReducer.name,\n      description: fieldReducer.description,\n    };\n  });\n};\n\n// Dev helpers\n\n/** @internal */\nexport const pluginLogger = createLogger('uPlot');\nexport const pluginLog = pluginLogger.logger;\n// pluginLogger.enable();\nattachDebugger('graphng', undefined, pluginLogger);\n","import { Component, createRef } from 'react';\nimport uPlot, { AlignedData, Options } from 'uplot';\n\nimport { PlotProps } from './types';\nimport { pluginLog } from './utils';\n\nimport 'uplot/dist/uPlot.min.css';\n\nfunction sameDims(prevProps: PlotProps, nextProps: PlotProps) {\n  return nextProps.width === prevProps.width && nextProps.height === prevProps.height;\n}\n\nfunction sameData(prevProps: PlotProps, nextProps: PlotProps) {\n  return nextProps.data === prevProps.data;\n}\n\nfunction sameConfig(prevProps: PlotProps, nextProps: PlotProps) {\n  return nextProps.config === prevProps.config;\n}\n\ntype UPlotChartState = {\n  plot: uPlot | null;\n};\n\n/**\n * @internal\n * uPlot abstraction responsible for plot initialisation, setup and refresh\n * Receives a data frame that is x-axis aligned, as of https://github.com/leeoniya/uPlot/tree/master/docs#data-format\n * Exposes context for uPlot instance access\n */\nexport class UPlotChart extends Component<PlotProps, UPlotChartState> {\n  plotContainer = createRef<HTMLDivElement>();\n  plotCanvasBBox = createRef<DOMRect>();\n  plotInstance: uPlot | null = null;\n\n  constructor(props: PlotProps) {\n    super(props);\n  }\n\n  reinitPlot() {\n    let { width, height, plotRef } = this.props;\n\n    this.plotInstance?.destroy();\n\n    if (width === 0 && height === 0) {\n      return;\n    }\n\n    this.props.config.addHook('setSize', (u) => {\n      const canvas = u.over;\n      if (!canvas) {\n        return;\n      }\n    });\n\n    const config: Options = {\n      width: Math.floor(this.props.width),\n      height: Math.floor(this.props.height),\n      ...this.props.config.getConfig(),\n    };\n\n    pluginLog('UPlot', false, 'Reinitializing plot', config);\n    const plot = new uPlot(config, this.props.data as AlignedData, this.plotContainer!.current!);\n\n    if (plotRef) {\n      plotRef(plot);\n    }\n\n    this.plotInstance = plot;\n  }\n\n  componentDidMount() {\n    this.reinitPlot();\n  }\n\n  componentWillUnmount() {\n    this.plotInstance?.destroy();\n  }\n\n  componentDidUpdate(prevProps: PlotProps) {\n    if (!sameDims(prevProps, this.props)) {\n      this.plotInstance?.setSize({\n        width: Math.floor(this.props.width),\n        height: Math.floor(this.props.height),\n      });\n    } else if (!sameConfig(prevProps, this.props)) {\n      this.reinitPlot();\n    } else if (!sameData(prevProps, this.props)) {\n      this.plotInstance?.setData(this.props.data as AlignedData);\n    }\n  }\n\n  render() {\n    return (\n      <div style={{ position: 'relative' }}>\n        <div ref={this.plotContainer} data-testid=\"uplot-main-div\" />\n        {this.props.children}\n      </div>\n    );\n  }\n}\n","import uPlot, { Scale, Range } from 'uplot';\n\nimport { DecimalCount, incrRoundDn, incrRoundUp, isBooleanUnit } from '@grafana/data';\nimport { ScaleOrientation, ScaleDirection, ScaleDistribution, StackingMode } from '@grafana/schema';\n\nimport { PlotConfigBuilder } from '../types';\n\nexport interface ScaleProps {\n  scaleKey: string;\n  isTime?: boolean;\n  auto?: boolean;\n  min?: number | null;\n  max?: number | null;\n  softMin?: number | null;\n  softMax?: number | null;\n  range?: Scale.Range;\n  distribution?: ScaleDistribution;\n  orientation: ScaleOrientation;\n  direction: ScaleDirection;\n  log?: number;\n  linearThreshold?: number;\n  centeredZero?: boolean;\n  decimals?: DecimalCount;\n  stackingMode?: StackingMode;\n  padMinBy?: number;\n  padMaxBy?: number;\n}\n\nexport class UPlotScaleBuilder extends PlotConfigBuilder<ScaleProps, Scale> {\n  merge(props: ScaleProps) {\n    this.props.min = optMinMax('min', this.props.min, props.min);\n    this.props.max = optMinMax('max', this.props.max, props.max);\n  }\n\n  getConfig(): Scale {\n    let {\n      isTime,\n      auto,\n      scaleKey,\n      min: hardMin,\n      max: hardMax,\n      softMin,\n      softMax,\n      range,\n      direction,\n      orientation,\n      centeredZero,\n      decimals,\n      stackingMode,\n      padMinBy = 0.1,\n      padMaxBy = 0.1,\n    } = this.props;\n\n    if (stackingMode === StackingMode.Percent) {\n      if (hardMin == null && softMin == null) {\n        softMin = 0;\n      }\n\n      if (hardMax == null && softMax == null) {\n        softMax = 1;\n      }\n    }\n\n    const distr = this.props.distribution;\n\n    const distribution = !isTime\n      ? {\n          distr:\n            distr === ScaleDistribution.Symlog\n              ? 4\n              : distr === ScaleDistribution.Log\n                ? 3\n                : distr === ScaleDistribution.Ordinal\n                  ? 2\n                  : 1,\n          log:\n            distr === ScaleDistribution.Log || distr === ScaleDistribution.Symlog ? (this.props.log ?? 2) : undefined,\n          asinh: distr === ScaleDistribution.Symlog ? (this.props.linearThreshold ?? 1) : undefined,\n        }\n      : {};\n\n    // guard against invalid log scale limits <= 0, or snap to log boundaries\n    if (distr === ScaleDistribution.Log) {\n      let logBase = this.props.log!;\n      let logFn = logBase === 2 ? Math.log2 : Math.log10;\n\n      if (hardMin != null) {\n        if (hardMin <= 0) {\n          hardMin = null;\n        } else {\n          hardMin = logBase ** Math.floor(logFn(hardMin));\n        }\n      }\n\n      if (hardMax != null) {\n        if (hardMax <= 0) {\n          hardMax = null;\n        } else {\n          hardMax = logBase ** Math.ceil(logFn(hardMax));\n        }\n      }\n\n      if (softMin != null) {\n        if (softMin <= 0) {\n          softMin = null;\n        } else {\n          softMin = logBase ** Math.floor(logFn(softMin));\n        }\n      }\n\n      if (softMax != null) {\n        if (softMax <= 0) {\n          softMax = null;\n        } else {\n          softMax = logBase ** Math.ceil(logFn(softMax));\n        }\n      }\n    }\n    /*\n    // snap to symlog boundaries\n    else if (distr === ScaleDistribution.Symlog) {\n      let logBase = this.props.log!;\n      let logFn = logBase === 2 ? Math.log2 : Math.log10;\n\n      let sign = Math.sign(hardMin);\n\n      if (hardMin != null) {\n        hardMin = logBase ** Math.floor(logFn(hardMin));\n      }\n\n      if (hardMax != null) {\n        hardMax = logBase ** Math.ceil(logFn(hardMax));\n      }\n\n      if (softMin != null) {\n        softMin = logBase ** Math.floor(logFn(softMin));\n      }\n\n      if (softMax != null) {\n        softMax = logBase ** Math.ceil(logFn(softMax));\n      }\n    }\n    */\n\n    // uPlot's default ranging config for both min & max is {pad: 0.1, hard: null, soft: 0, mode: 3}\n    let softMinMode: Range.SoftMode = softMin == null ? 3 : 1;\n    let softMaxMode: Range.SoftMode = softMax == null ? 3 : 1;\n\n    const rangeConfig: Range.Config = {\n      min: {\n        pad: padMinBy,\n        hard: hardMin ?? -Infinity,\n        soft: softMin || 0,\n        mode: softMinMode,\n      },\n      max: {\n        pad: padMaxBy,\n        hard: hardMax ?? Infinity,\n        soft: softMax || 0,\n        mode: softMaxMode,\n      },\n    };\n\n    let hardMinOnly = softMin == null && hardMin != null;\n    let hardMaxOnly = softMax == null && hardMax != null;\n    let hasFixedRange = hardMinOnly && hardMaxOnly;\n\n    const rangeFn: uPlot.Range.Function = (\n      u: uPlot,\n      dataMin: number | null,\n      dataMax: number | null,\n      scaleKey: string\n    ) => {\n      const scale = u.scales[scaleKey];\n\n      let minMax: uPlot.Range.MinMax = [dataMin, dataMax];\n\n      // happens when all series on a scale are `show: false`, re-returning nulls will auto-disable axis\n      if (!hasFixedRange && dataMin == null && dataMax == null) {\n        return minMax;\n      }\n\n      let logBase = scale.log ?? 10;\n\n      if (scale.distr === 1 || scale.distr === 2 || scale.distr === 4) {\n        if (centeredZero) {\n          let absMin = Math.abs(dataMin!);\n          let absMax = Math.abs(dataMax!);\n          let max = Math.max(absMin, absMax);\n\n          // flat 0\n          if (max === 0) {\n            max = 80;\n          }\n\n          dataMin = -max;\n          dataMax = max;\n        }\n\n        if (scale.distr === 4) {\n          minMax = uPlot.rangeAsinh(dataMin!, dataMax!, logBase, true);\n        } else {\n          // @ts-ignore here we may use hardMin / hardMax to make sure any extra padding is computed from a more accurate delta\n          minMax = uPlot.rangeNum(hardMinOnly ? hardMin : dataMin, hardMaxOnly ? hardMax : dataMax, rangeConfig);\n        }\n      } else if (scale.distr === 3) {\n        minMax = uPlot.rangeLog(hardMin ?? dataMin!, hardMax ?? dataMax!, logBase, true);\n      }\n\n      if (decimals === 0) {\n        if (scale.distr === 1 || scale.distr === 2) {\n          minMax[0] = incrRoundDn(minMax[0]!, 1);\n          minMax[1] = incrRoundUp(minMax[1]!, 1);\n        }\n        // log2 or log10 scale min must be clamped to 1\n        else if (scale.distr === 3) {\n          let logFn = scale.log === 2 ? Math.log2 : Math.log10;\n\n          if (minMax[0]! <= 1) {\n            // clamp min\n            minMax[0] = 1;\n          } else {\n            // snap min to nearest mag below\n            let minExp = Math.floor(logFn(minMax[0]!));\n            minMax[0] = logBase ** minExp;\n          }\n\n          // snap max to nearest mag above\n          let maxExp = Math.ceil(logFn(minMax[1]!));\n          minMax[1] = logBase ** maxExp;\n\n          // inflate max by mag if same\n          if (minMax[0] === minMax[1]) {\n            minMax[1] *= logBase;\n          }\n        }\n        // TODO: this should be better. symlog values can be <= 0, but should also be snapped to log2 or log10 boundaries\n        // for now we just do same as linear snapping above, so may have non-neat range and ticks at edges\n        else if (scale.distr === 4) {\n          minMax[0] = incrRoundDn(minMax[0]!, 1);\n          minMax[1] = incrRoundUp(minMax[1]!, 1);\n        }\n      }\n\n      if (scale.distr === 1 || scale.distr === 4) {\n        // if all we got were hard limits, treat them as static min/max\n        if (hardMinOnly) {\n          minMax[0] = hardMin!;\n        }\n\n        if (hardMaxOnly) {\n          minMax[1] = hardMax!;\n        }\n      }\n\n      // guard against invalid y ranges\n      if (minMax[0]! >= minMax[1]!) {\n        minMax[0] = scale.distr === 3 ? 1 : 0;\n        minMax[1] = 100;\n      }\n\n      return minMax;\n    };\n\n    auto ??= !isTime && !hasFixedRange;\n\n    if (isBooleanUnit(scaleKey)) {\n      auto = false;\n      range = [0, 1];\n    }\n\n    return {\n      [scaleKey]: {\n        time: isTime,\n        auto,\n        range: range ?? rangeFn,\n        dir: direction,\n        ori: orientation,\n        ...distribution,\n      },\n    };\n  }\n}\n\nexport function optMinMax(minmax: 'min' | 'max', a?: number | null, b?: number | null): undefined | number | null {\n  const hasA = !(a === undefined || a === null);\n  const hasB = !(b === undefined || b === null);\n  if (hasA) {\n    if (!hasB) {\n      return a;\n    }\n    if (minmax === 'min') {\n      return a! < b! ? a : b;\n    }\n    return a! > b! ? a : b;\n  }\n  return b;\n}\n","import uPlot, { Axis } from 'uplot';\n\nimport {\n  dateTimeFormat,\n  DecimalCount,\n  GrafanaTheme2,\n  guessDecimals,\n  isBooleanUnit,\n  roundDecimals,\n  systemDateFormats,\n  TimeZone,\n} from '@grafana/data';\nimport { AxisPlacement, ScaleDistribution } from '@grafana/schema';\n\nimport { measureText } from '../../../utils/measureText';\nimport { PlotConfigBuilder } from '../types';\n\nimport { optMinMax } from './UPlotScaleBuilder';\n\nexport interface AxisProps {\n  scaleKey: string;\n  theme: GrafanaTheme2;\n  label?: string;\n  show?: boolean;\n  size?: number | null;\n  gap?: number;\n  tickLabelRotation?: number;\n  placement?: AxisPlacement;\n  grid?: Axis.Grid;\n  ticks?: Axis.Ticks;\n  filter?: Axis.Filter;\n  space?: Axis.Space;\n  formatValue?: (v: any, decimals?: DecimalCount) => string;\n  incrs?: Axis.Incrs;\n  splits?: Axis.Splits;\n  values?: Axis.Values;\n  isTime?: boolean;\n  timeZone?: TimeZone;\n  color?: uPlot.Axis.Stroke;\n  border?: uPlot.Axis.Border;\n  decimals?: DecimalCount;\n  distr?: ScaleDistribution;\n}\n\nexport const UPLOT_AXIS_FONT_SIZE = 12;\n\n// for panels with small heights, we increase tick density by reducing the minumum tick spacing\n// all values in CSS pixels\nconst Y_TICK_SPACING_PANEL_HEIGHT = 150;\nconst Y_TICK_SPACING_NORMAL = 30;\nconst Y_TICK_SPACING_SMALL = 15;\n\nconst X_TICK_SPACING_NORMAL = 40;\nconst X_TICK_VALUE_GAP = 18;\n\nconst labelPad = 8;\n\nexport class UPlotAxisBuilder extends PlotConfigBuilder<AxisProps, Axis> {\n  merge(props: AxisProps) {\n    this.props.size = optMinMax('max', this.props.size, props.size);\n    if (!this.props.label) {\n      this.props.label = props.label;\n    }\n    if (this.props.placement === AxisPlacement.Auto) {\n      this.props.placement = props.placement;\n    }\n  }\n\n  getConfig(): Axis {\n    let {\n      scaleKey,\n      label,\n      show = true,\n      placement = AxisPlacement.Auto,\n      grid = { show: true },\n      ticks,\n      space,\n      filter,\n      gap = 5,\n      formatValue,\n      splits,\n      values,\n      incrs,\n      isTime,\n      timeZone,\n      theme,\n      tickLabelRotation,\n      size,\n      color,\n      border,\n      decimals,\n      distr = ScaleDistribution.Linear,\n    } = this.props;\n\n    const font = `${UPLOT_AXIS_FONT_SIZE}px ${theme.typography.fontFamily}`;\n\n    const gridColor = theme.isDark ? 'rgba(240, 250, 255, 0.09)' : 'rgba(0, 10, 23, 0.09)';\n\n    // TODO: this is pretty flimsy now that scaleKey is composed from multiple parts :/\n    if (isBooleanUnit(scaleKey)) {\n      splits = [0, 1];\n    }\n\n    if (decimals === 0 && distr === ScaleDistribution.Linear) {\n      filter = (u, splits) => splits.map((v) => (Number.isInteger(v) ? v : null));\n    }\n\n    let config: Axis = {\n      scale: scaleKey,\n      show,\n      stroke: color ?? theme.colors.text.primary,\n      side: getUPlotSideFromAxis(placement),\n      font,\n      size:\n        size ??\n        ((self, values, axisIdx) => {\n          return calculateAxisSize(self, values, axisIdx);\n        }),\n      rotate: tickLabelRotation,\n      gap,\n\n      labelGap: 0,\n\n      grid: {\n        show: grid.show,\n        stroke: gridColor,\n        width: 1 / devicePixelRatio,\n      },\n      ticks: Object.assign(\n        {\n          show: true,\n          stroke: border?.show ? (color ?? theme.colors.text.primary) : gridColor,\n          width: 1 / devicePixelRatio,\n          size: 4,\n        },\n        ticks\n      ),\n      splits,\n      values,\n      space:\n        space ??\n        ((self, axisIdx, scaleMin, scaleMax, plotDim) => {\n          return calculateSpace(self, axisIdx, scaleMin, scaleMax, plotDim, formatValue);\n        }),\n      filter,\n      incrs,\n    };\n\n    if (border?.show) {\n      config.border = {\n        stroke: color ?? theme.colors.text.primary,\n        width: 1 / devicePixelRatio,\n        ...border,\n      };\n    }\n\n    if (label != null && label.length > 0) {\n      config.label = label;\n      config.labelSize = UPLOT_AXIS_FONT_SIZE + labelPad;\n      config.labelFont = font;\n      config.labelGap = labelPad;\n    }\n\n    if (values) {\n      config.values = values;\n    } else if (isTime) {\n      config.values = formatTime;\n    } else if (formatValue) {\n      config.values = (u: uPlot, splits, axisIdx, tickSpace, tickIncr) => {\n        let decimals = guessDecimals(roundDecimals(tickIncr, 6));\n        return splits.map((v) => {\n          if (v == null) {\n            return null;\n          } else {\n            return formatValue!(v, decimals > 0 ? decimals : undefined);\n          }\n        });\n      };\n    }\n\n    // store timezone\n    (config as any).timeZone = timeZone;\n\n    return config;\n  }\n}\n\n/** @internal */\nexport const timeUnitSize = {\n  second: 1000,\n  minute: 60 * 1000,\n  hour: 60 * 60 * 1000,\n  day: 24 * 60 * 60 * 1000,\n  month: 28 * 24 * 60 * 60 * 1000,\n  year: 365 * 24 * 60 * 60 * 1000,\n};\n\n/** Format time axis ticks */\nexport function formatTime(\n  self: uPlot,\n  splits: number[],\n  axisIdx: number,\n  foundSpace: number,\n  foundIncr: number\n): string[] {\n  const axis = self.axes[axisIdx];\n  const timeZone = 'timeZone' in axis && typeof axis.timeZone === 'string' ? axis.timeZone : undefined;\n  const scale = self.scales.x;\n  const range = (scale?.max ?? 0) - (scale?.min ?? 0);\n  const yearRoundedToDay = Math.round(timeUnitSize.year / timeUnitSize.day) * timeUnitSize.day;\n  const incrementRoundedToDay = Math.round(foundIncr / timeUnitSize.day) * timeUnitSize.day;\n\n  let format = systemDateFormats.interval.year;\n\n  if (foundIncr < timeUnitSize.second) {\n    format = systemDateFormats.interval.millisecond;\n  } else if (foundIncr <= timeUnitSize.minute) {\n    format = systemDateFormats.interval.second;\n  } else if (range <= timeUnitSize.day) {\n    format = systemDateFormats.interval.minute;\n  } else if (foundIncr <= timeUnitSize.day) {\n    format = systemDateFormats.interval.hour;\n  } else if (range < timeUnitSize.year) {\n    format = systemDateFormats.interval.day;\n  } else if (incrementRoundedToDay === yearRoundedToDay) {\n    format = systemDateFormats.interval.year;\n  } else if (foundIncr <= timeUnitSize.year) {\n    format = systemDateFormats.interval.month;\n  }\n\n  return splits.map((v) => (v == null ? '' : dateTimeFormat(v, { format, timeZone })));\n}\n\n/* Minimum grid & tick spacing in CSS pixels */\nfunction calculateSpace(\n  self: uPlot,\n  axisIdx: number,\n  scaleMin: number,\n  scaleMax: number,\n  plotDim: number,\n  formatValue?: (value: unknown) => string\n): number {\n  const axis = self.axes[axisIdx];\n  const scale = self.scales[axis.scale!];\n\n  // for axis left & right\n  if (axis.side !== 2 || !scale) {\n    return plotDim <= Y_TICK_SPACING_PANEL_HEIGHT ? Y_TICK_SPACING_SMALL : Y_TICK_SPACING_NORMAL;\n  }\n\n  const maxTicks = plotDim / X_TICK_SPACING_NORMAL;\n  const increment = (scaleMax - scaleMin) / maxTicks;\n\n  // not super great, since 0.000005 has many more chars than 1.0\n  // it also doesn't work well with \"short\" or adaptive units, e.g. 7 K and 6.40 K\n  const bigValue = Math.max(Math.abs(scaleMin), Math.abs(scaleMax));\n\n  let sample = '';\n\n  if (scale.time) {\n    sample = formatTime(self, [bigValue], axisIdx, X_TICK_SPACING_NORMAL, increment)[0];\n  } else if (formatValue != null) {\n    sample = formatValue(bigValue);\n  } else {\n    return X_TICK_SPACING_NORMAL;\n  }\n\n  const valueWidth = measureText(sample, UPLOT_AXIS_FONT_SIZE).width;\n\n  return valueWidth + X_TICK_VALUE_GAP;\n}\n\n/** height of x axis or width of y axis in CSS pixels alloted for values, gap & ticks, but excluding axis label */\nfunction calculateAxisSize(self: uPlot, values: string[], axisIdx: number) {\n  const axis = self.axes[axisIdx];\n\n  let axisSize = axis.ticks!.size!;\n\n  if (axis.side === 2) {\n    axisSize += axis!.gap! + UPLOT_AXIS_FONT_SIZE;\n  } else if (values?.length) {\n    let maxTextWidth = values.reduce((acc, value) => Math.max(acc, measureText(value, UPLOT_AXIS_FONT_SIZE).width), 0);\n    // limit y tick label width to 40% of visualization\n    const textWidthWithLimit = Math.min(self.width * 0.4, maxTextWidth);\n    // Not sure why this += and not normal assignment\n    axisSize += axis!.gap! + axis!.labelGap! + textWidthWithLimit;\n  }\n\n  return Math.ceil(axisSize);\n}\n\nexport function getUPlotSideFromAxis(axis: AxisPlacement) {\n  switch (axis) {\n    case AxisPlacement.Top:\n      return 0;\n    case AxisPlacement.Right:\n      return 1;\n    case AxisPlacement.Bottom:\n      return 2;\n    case AxisPlacement.Left:\n  }\n\n  return 3; // default everythign to the left\n}\n","import tinycolor from 'tinycolor2';\nimport uPlot from 'uplot';\n\nimport {\n  colorManipulator,\n  FieldColorMode,\n  FieldColorModeId,\n  GrafanaTheme2,\n  ThresholdsConfig,\n  ThresholdsMode,\n} from '@grafana/data';\nimport { ScaleOrientation } from '@grafana/schema';\n\nimport { getCanvasContext } from '../../../utils/measureText';\n\nfunction makeDirectionalGradient(direction: GradientDirection, bbox: uPlot.BBox, ctx: CanvasRenderingContext2D) {\n  let x0 = 0,\n    y0 = 0,\n    x1 = 0,\n    y1 = 0;\n\n  if (direction === GradientDirection.Down) {\n    y0 = bbox.top;\n    y1 = bbox.top + bbox.height;\n  } else if (direction === GradientDirection.Left) {\n    x0 = bbox.left + bbox.width;\n    x1 = bbox.left;\n  } else if (direction === GradientDirection.Up) {\n    y0 = bbox.top + bbox.height;\n    y1 = bbox.top;\n  } else if (direction === GradientDirection.Right) {\n    x0 = bbox.left;\n    x1 = bbox.left + bbox.width;\n  }\n\n  return ctx.createLinearGradient(x0, y0, x1, y1);\n}\n\nexport function getOpacityGradientFn(\n  color: string,\n  opacity: number\n): (self: uPlot, seriesIdx: number) => CanvasGradient {\n  return (plot: uPlot, seriesIdx: number) => {\n    const ctx = getCanvasContext();\n    const gradient = makeDirectionalGradient(\n      plot.scales.x!.ori === ScaleOrientation.Horizontal ? GradientDirection.Down : GradientDirection.Left,\n      plot.bbox,\n      ctx\n    );\n\n    gradient.addColorStop(0, colorManipulator.alpha(color, opacity));\n    gradient.addColorStop(1, colorManipulator.alpha(color, 0));\n\n    return gradient;\n  };\n}\n\nexport function getHueGradientFn(\n  color: string,\n  opacity: number,\n  theme: GrafanaTheme2\n): (self: uPlot, seriesIdx: number) => CanvasGradient {\n  return (plot: uPlot, seriesIdx: number) => {\n    const ctx = getCanvasContext();\n    const gradient = makeDirectionalGradient(\n      plot.scales.x!.ori === ScaleOrientation.Horizontal ? GradientDirection.Down : GradientDirection.Left,\n      plot.bbox,\n      ctx\n    );\n\n    const color1 = tinycolor(color).spin(-25).darken(5);\n    const color2 = tinycolor(color).saturate(20).spin(20).brighten(10);\n\n    if (theme.isDark) {\n      gradient.addColorStop(0, color2.lighten(10).setAlpha(opacity).toString());\n      gradient.addColorStop(1, color1.darken(10).setAlpha(opacity).toString());\n    } else {\n      gradient.addColorStop(0, color2.lighten(10).setAlpha(opacity).toString());\n      gradient.addColorStop(1, color1.setAlpha(opacity).toString());\n    }\n\n    return gradient;\n  };\n}\n\nexport enum GradientDirection {\n  Right = 0,\n  Up = 1,\n  Left = 2,\n  Down = 3,\n}\n\ntype ValueStop = [value: number, color: string];\n\ntype ScaleValueStops = ValueStop[];\n\nexport function scaleGradient(u: uPlot, scaleKey: string, scaleStops: ScaleValueStops, discrete = false) {\n  let scale = u.scales[scaleKey];\n\n  // we want the stop below or at the scaleMax\n  // and the stop below or at the scaleMin, else the stop above scaleMin\n  let minStopIdx: number | null = null;\n  let maxStopIdx: number | null = null;\n\n  for (let i = 0; i < scaleStops.length; i++) {\n    let stopVal = scaleStops[i][0];\n\n    if (stopVal <= scale.min! || minStopIdx == null) {\n      minStopIdx = i;\n    }\n\n    maxStopIdx = i;\n\n    if (stopVal >= scale.max!) {\n      break;\n    }\n  }\n\n  if (minStopIdx === maxStopIdx) {\n    return scaleStops[minStopIdx!][1];\n  }\n\n  let minStopVal = scaleStops[minStopIdx!][0];\n  let maxStopVal = scaleStops[maxStopIdx!][0];\n\n  if (minStopVal === -Infinity) {\n    minStopVal = scale.min!;\n  }\n\n  if (maxStopVal === Infinity) {\n    maxStopVal = scale.max!;\n  }\n\n  let minStopPos = Math.round(u.valToPos(minStopVal, scaleKey, true));\n  let maxStopPos = Math.round(u.valToPos(maxStopVal, scaleKey, true));\n\n  let range = minStopPos - maxStopPos;\n\n  if (range === 0) {\n    return scaleStops[maxStopIdx!][1];\n  }\n\n  let x0, y0, x1, y1;\n\n  if (u.scales.x!.ori === ScaleOrientation.Horizontal) {\n    x0 = x1 = 0;\n    y0 = minStopPos;\n    y1 = maxStopPos;\n  } else {\n    y0 = y1 = 0;\n    x0 = minStopPos;\n    x1 = maxStopPos;\n  }\n\n  let ctx = getCanvasContext();\n\n  let grd = ctx.createLinearGradient(x0, y0, x1, y1);\n\n  let prevColor: string;\n\n  for (let i = minStopIdx!; i <= maxStopIdx!; i++) {\n    let s = scaleStops[i];\n\n    let stopPos =\n      i === minStopIdx ? minStopPos : i === maxStopIdx ? maxStopPos : Math.round(u.valToPos(s[0], scaleKey, true));\n\n    let pct = (minStopPos - stopPos) / range;\n\n    if (discrete && i > minStopIdx!) {\n      grd.addColorStop(pct, prevColor!);\n    }\n\n    grd.addColorStop(pct, (prevColor = s[1]));\n  }\n\n  return grd;\n}\n\nexport function getDataRange(plot: uPlot, scaleKey: string) {\n  let sc = plot.scales[scaleKey];\n\n  let min = Infinity;\n  let max = -Infinity;\n\n  plot.series.forEach((ser, seriesIdx) => {\n    if (ser.show && ser.scale === scaleKey) {\n      // uPlot skips finding data min/max when a scale has a pre-defined range\n      if (ser.min == null) {\n        let data = plot.data[seriesIdx];\n        for (let i = 0; i < data.length; i++) {\n          if (data[i] != null) {\n            min = Math.min(min, data[i]!);\n            max = Math.max(max, data[i]!);\n          }\n        }\n      } else {\n        min = Math.min(min, ser.min!);\n        max = Math.max(max, ser.max!);\n      }\n    }\n  });\n\n  if (max === min) {\n    min = sc.min!;\n    max = sc.max!;\n  }\n\n  return [min, max];\n}\n\nexport function getGradientRange(\n  u: uPlot,\n  scaleKey: string,\n  hardMin?: number | null,\n  hardMax?: number | null,\n  softMin?: number | null,\n  softMax?: number | null\n) {\n  let min = hardMin ?? softMin ?? null;\n  let max = hardMax ?? softMax ?? null;\n\n  if (min == null || max == null) {\n    let [dataMin, dataMax] = getDataRange(u, scaleKey);\n\n    min = min ?? dataMin ?? 0;\n    max = max ?? dataMax ?? 100;\n  }\n\n  return [min, max];\n}\n\nfunction isStepTransparent(color: string) {\n  // steps are stored as names or 8-char hex\n  return color === 'transparent' || (color[0] === '#' && color.slice(-2) === '00');\n}\n\nexport function getScaleGradientFn(\n  opacity: number,\n  theme: GrafanaTheme2,\n  colorMode?: FieldColorMode,\n  thresholds?: ThresholdsConfig,\n  hardMin?: number | null,\n  hardMax?: number | null,\n  softMin?: number | null,\n  softMax?: number | null\n): (self: uPlot, seriesIdx: number) => CanvasGradient | string {\n  if (!colorMode) {\n    throw Error('Missing colorMode required for color scheme gradients');\n  }\n\n  if (!thresholds) {\n    throw Error('Missing thresholds required for color scheme gradients');\n  }\n\n  return (plot: uPlot, seriesIdx: number) => {\n    let scaleKey = plot.series[seriesIdx].scale!;\n\n    let gradient: CanvasGradient | string = '';\n\n    if (colorMode.id === FieldColorModeId.Thresholds) {\n      if (thresholds.mode === ThresholdsMode.Absolute) {\n        const valueStops: ValueStop[] = thresholds.steps.map((step) => [\n          step.value,\n          isStepTransparent(step.color)\n            ? '#0000'\n            : colorManipulator.alpha(theme.visualization.getColorByName(step.color), opacity),\n        ]);\n        gradient = scaleGradient(plot, scaleKey, valueStops, true);\n      } else {\n        const [min, max] = getGradientRange(plot, scaleKey, hardMin, hardMax, softMin, softMax);\n        const range = max - min;\n        const valueStops: ValueStop[] = thresholds.steps.map((step) => [\n          min + range * (step.value / 100),\n          colorManipulator.alpha(theme.visualization.getColorByName(step.color), opacity),\n        ]);\n        gradient = scaleGradient(plot, scaleKey, valueStops, true);\n      }\n    } else if (colorMode.getColors) {\n      const colors = colorMode.getColors(theme);\n      const [min, max] = getGradientRange(plot, scaleKey, hardMin, hardMax, softMin, softMax);\n      const range = max - min;\n      const valueStops: ValueStop[] = colors.map((color, i) => [\n        min + range * (i / (colors.length - 1)),\n        colorManipulator.alpha(theme.visualization.getColorByName(color), opacity),\n      ]);\n      gradient = scaleGradient(plot, scaleKey, valueStops, false);\n    }\n\n    return gradient;\n  };\n}\n","import uPlot, { Series } from 'uplot';\n\nimport {\n  colorManipulator,\n  DataFrameFieldIndex,\n  FALLBACK_COLOR,\n  FieldColorMode,\n  FieldColorModeId,\n  GrafanaTheme2,\n  ThresholdsConfig,\n} from '@grafana/data';\nimport {\n  BarAlignment,\n  BarConfig,\n  GraphDrawStyle,\n  FillConfig,\n  GraphGradientMode,\n  LineConfig,\n  LineInterpolation,\n  PointsConfig,\n  VisibilityMode,\n} from '@grafana/schema';\n\nimport { PlotConfigBuilder } from '../types';\n\nimport { getHueGradientFn, getOpacityGradientFn, getScaleGradientFn } from './gradientFills';\n\nexport interface SeriesProps extends LineConfig, BarConfig, FillConfig, PointsConfig {\n  scaleKey: string;\n  pxAlign?: boolean;\n  gradientMode?: GraphGradientMode;\n  dynamicSeriesColor?: (seriesIdx: number) => string | undefined;\n\n  facets?: uPlot.Series.Facet[];\n\n  /** Used when gradientMode is set to Scheme */\n  thresholds?: ThresholdsConfig;\n  colorMode?: FieldColorMode;\n  hardMin?: number | null;\n  hardMax?: number | null;\n  softMin?: number | null;\n  softMax?: number | null;\n\n  drawStyle?: GraphDrawStyle;\n  pathBuilder?: Series.PathBuilder | null;\n  pointsFilter?: Series.Points.Filter | null;\n  pointsBuilder?: Series.Points.Show | null;\n  show?: boolean;\n  dataFrameFieldIndex?: DataFrameFieldIndex;\n  theme: GrafanaTheme2;\n  value?: uPlot.Series.Value;\n  showValues?: boolean;\n}\n\nexport class UPlotSeriesBuilder extends PlotConfigBuilder<SeriesProps, Series> {\n  getConfig() {\n    const {\n      facets,\n      drawStyle,\n      pathBuilder,\n      pointsBuilder,\n      pointsFilter,\n      lineInterpolation,\n      lineWidth,\n      lineStyle,\n      barAlignment,\n      barWidthFactor,\n      barMaxWidth,\n      showPoints,\n      pointSize,\n      scaleKey,\n      pxAlign,\n      spanNulls,\n      show = true,\n    } = this.props;\n\n    let lineConfig: Partial<Series> = {};\n\n    let lineColor = this.getLineColor();\n\n    // GraphDrawStyle.Points mode also needs this for fill/stroke sharing & re-use in series.points. see getColor() below.\n    lineConfig.stroke = lineColor;\n\n    lineConfig.width = lineWidth;\n    if (lineStyle && lineStyle.fill !== 'solid') {\n      if (lineStyle.fill === 'dot') {\n        lineConfig.cap = 'round';\n      }\n      lineConfig.dash = lineStyle.dash ?? [10, 10];\n    }\n\n    if (pathBuilder != null) {\n      lineConfig.paths = pathBuilder;\n    } else if (drawStyle === GraphDrawStyle.Points) {\n      lineConfig.paths = () => null;\n    } else if (drawStyle != null) {\n      lineConfig.paths = (self: uPlot, seriesIdx: number, idx0: number, idx1: number) => {\n        let pathsBuilder = mapDrawStyleToPathBuilder(\n          drawStyle,\n          lineInterpolation,\n          barAlignment,\n          barWidthFactor,\n          barMaxWidth\n        );\n        return pathsBuilder(self, seriesIdx, idx0, idx1);\n      };\n    }\n\n    const useColor: uPlot.Series.Stroke =\n      // @ts-ignore\n      typeof lineColor === 'string' ? lineColor : (u, seriesIdx) => u.series[seriesIdx]._stroke;\n\n    const pointsConfig: Partial<Series> = {\n      points: {\n        stroke: useColor,\n        fill: useColor,\n        size: !pointSize || pointSize < lineWidth! ? undefined : pointSize,\n        filter: pointsFilter,\n      },\n    };\n\n    if (pointsBuilder != null) {\n      pointsConfig.points!.show = pointsBuilder;\n    } else {\n      // we cannot set points.show property above (even to undefined) as that will clear uPlot's default auto behavior\n      if (drawStyle === GraphDrawStyle.Points) {\n        pointsConfig.points!.show = true;\n      } else {\n        if (showPoints === VisibilityMode.Auto) {\n          if (drawStyle === GraphDrawStyle.Bars) {\n            pointsConfig.points!.show = false;\n          }\n        } else if (showPoints === VisibilityMode.Never) {\n          pointsConfig.points!.show = false;\n        } else if (showPoints === VisibilityMode.Always) {\n          pointsConfig.points!.show = true;\n        }\n      }\n    }\n\n    return {\n      scale: scaleKey,\n      facets,\n      spanGaps: typeof spanNulls === 'number' ? false : spanNulls,\n      value: () => '',\n      pxAlign,\n      show,\n      fill: this.getFill(),\n      ...lineConfig,\n      ...pointsConfig,\n    };\n  }\n\n  private getLineColor(): Series.Stroke {\n    const {\n      lineColor,\n      gradientMode,\n      colorMode,\n      thresholds,\n      theme,\n      hardMin,\n      hardMax,\n      softMin,\n      softMax,\n      dynamicSeriesColor,\n    } = this.props;\n\n    if (gradientMode === GraphGradientMode.None && dynamicSeriesColor) {\n      return (plot: uPlot, seriesIdx: number) => dynamicSeriesColor(seriesIdx) ?? lineColor ?? FALLBACK_COLOR;\n    }\n\n    if (gradientMode === GraphGradientMode.Scheme && colorMode?.id !== FieldColorModeId.Fixed) {\n      return getScaleGradientFn(1, theme, colorMode, thresholds, hardMin, hardMax, softMin, softMax);\n    }\n\n    if (gradientMode === GraphGradientMode.Hue) {\n      return getHueGradientFn(lineColor ?? FALLBACK_COLOR, 1, theme);\n    }\n\n    return lineColor ?? FALLBACK_COLOR;\n  }\n\n  private getFill(): Series.Fill | undefined {\n    const {\n      lineColor,\n      fillColor,\n      gradientMode,\n      fillOpacity,\n      colorMode,\n      thresholds,\n      theme,\n      hardMin,\n      hardMax,\n      softMin,\n      softMax,\n      dynamicSeriesColor,\n    } = this.props;\n\n    if (fillColor) {\n      return fillColor;\n    }\n\n    const mode = gradientMode ?? GraphGradientMode.None;\n    const opacityPercent = (fillOpacity ?? 0) / 100;\n\n    if (mode === GraphGradientMode.None && dynamicSeriesColor && opacityPercent > 0) {\n      return (u: uPlot, seriesIdx: number) => {\n        // @ts-ignore\n        let lineColor = u.series[seriesIdx]._stroke; // cache\n        return colorManipulator.alpha(lineColor ?? '', opacityPercent);\n      };\n    }\n\n    switch (mode) {\n      case GraphGradientMode.Opacity:\n        return getOpacityGradientFn((fillColor ?? lineColor)!, opacityPercent);\n      case GraphGradientMode.Hue:\n        return getHueGradientFn((fillColor ?? lineColor)!, opacityPercent, theme);\n      case GraphGradientMode.Scheme:\n        if (colorMode?.id !== FieldColorModeId.Fixed) {\n          return getScaleGradientFn(opacityPercent, theme, colorMode, thresholds, hardMin, hardMax, softMin, softMax);\n        }\n      // intentional fall-through to handle Scheme with Fixed color\n      default:\n        if (opacityPercent > 0) {\n          return colorManipulator.alpha(lineColor ?? '', opacityPercent);\n        }\n    }\n\n    return undefined;\n  }\n}\n\ninterface PathBuilders {\n  linear: Series.PathBuilder;\n  smooth: Series.PathBuilder;\n  stepBefore: Series.PathBuilder;\n  stepAfter: Series.PathBuilder;\n  [key: string]: Series.PathBuilder;\n}\n\nlet builders: PathBuilders | undefined = undefined;\n\nfunction mapDrawStyleToPathBuilder(\n  style: GraphDrawStyle,\n  lineInterpolation?: LineInterpolation,\n  barAlignment = BarAlignment.Center,\n  barWidthFactor = 0.6,\n  barMaxWidth = 200\n): Series.PathBuilder {\n  const pathBuilders = uPlot.paths;\n\n  if (!builders) {\n    // This should be global static, but Jest initalization was failing so we lazy load to avoid the issue\n    builders = {\n      linear: pathBuilders.linear!(),\n      smooth: pathBuilders.spline!(),\n      stepBefore: pathBuilders.stepped!({ align: -1 }),\n      stepAfter: pathBuilders.stepped!({ align: 1 }),\n    };\n  }\n\n  if (style === GraphDrawStyle.Bars) {\n    // each bars pathBuilder is lazy-initialized and globally cached by a key composed of its options\n    let barsCfgKey = `bars|${barAlignment}|${barWidthFactor}|${barMaxWidth}`;\n\n    if (!builders[barsCfgKey]) {\n      builders[barsCfgKey] = pathBuilders.bars!({\n        size: [barWidthFactor, barMaxWidth],\n        align: barAlignment,\n      });\n    }\n\n    return builders[barsCfgKey];\n  } else if (style === GraphDrawStyle.Line) {\n    if (lineInterpolation === LineInterpolation.StepBefore) {\n      return builders.stepBefore;\n    }\n    if (lineInterpolation === LineInterpolation.StepAfter) {\n      return builders.stepAfter;\n    }\n    if (lineInterpolation === LineInterpolation.Smooth) {\n      return builders.smooth;\n    }\n  }\n\n  return builders.linear; // the default\n}\n","import tinycolor from 'tinycolor2';\nimport uPlot from 'uplot';\n\nimport { GrafanaTheme2, Threshold, ThresholdsConfig, ThresholdsMode } from '@grafana/data';\nimport { GraphThresholdsStyleConfig, GraphThresholdsStyleMode, ScaleOrientation } from '@grafana/schema';\n\nimport { getGradientRange, scaleGradient } from './gradientFills';\n\nexport interface UPlotThresholdOptions {\n  scaleKey: string;\n  thresholds: ThresholdsConfig;\n  config: GraphThresholdsStyleConfig;\n  theme: GrafanaTheme2;\n  hardMin?: number | null;\n  hardMax?: number | null;\n  softMin?: number | null;\n  softMax?: number | null;\n}\n\nexport function getThresholdsDrawHook(options: UPlotThresholdOptions) {\n  const dashSegments =\n    options.config.mode === GraphThresholdsStyleMode.Dashed ||\n    options.config.mode === GraphThresholdsStyleMode.DashedAndArea\n      ? [10, 10]\n      : [];\n\n  function addLines(u: uPlot, yScaleKey: string, steps: Threshold[], theme: GrafanaTheme2) {\n    let ctx = u.ctx;\n\n    // Thresholds below a transparent threshold is treated like \"less than\", and line drawn previous threshold\n    let transparentIndex = 0;\n\n    for (let idx = 0; idx < steps.length; idx++) {\n      const step = steps[idx];\n      if (step.color === 'transparent') {\n        transparentIndex = idx;\n        break;\n      }\n    }\n\n    ctx.lineWidth = 2;\n    ctx.setLineDash(dashSegments);\n\n    // Ignore the base -Infinity threshold by always starting on index 1\n    for (let idx = 1; idx < steps.length; idx++) {\n      const step = steps[idx];\n      let color: tinycolor.Instance;\n\n      // if we are below a transparent index treat this a less then threshold, use previous thresholds color\n      if (transparentIndex >= idx && idx > 0) {\n        color = tinycolor(theme.visualization.getColorByName(steps[idx - 1].color));\n      } else {\n        color = tinycolor(theme.visualization.getColorByName(step.color));\n      }\n\n      // Unless alpha specififed set to default value\n      if (color.getAlpha() === 1) {\n        color.setAlpha(0.7);\n      }\n\n      const isHorizontal = u.scales.x!.ori === ScaleOrientation.Horizontal;\n      const scaleVal = u.valToPos(step.value, yScaleKey, true);\n\n      let x0 = Math.round(isHorizontal ? u.bbox.left : scaleVal);\n      let y0 = Math.round(isHorizontal ? scaleVal : u.bbox.top);\n      let x1 = Math.round(isHorizontal ? u.bbox.left + u.bbox.width : scaleVal);\n      let y1 = Math.round(isHorizontal ? scaleVal : u.bbox.top + u.bbox.height);\n\n      ctx.beginPath();\n      ctx.moveTo(x0, y0);\n      ctx.lineTo(x1, y1);\n\n      ctx.strokeStyle = color.toString();\n      ctx.stroke();\n    }\n  }\n\n  function addAreas(u: uPlot, yScaleKey: string, steps: Threshold[], theme: GrafanaTheme2) {\n    let ctx = u.ctx;\n\n    let grd = scaleGradient(\n      u,\n      yScaleKey,\n      steps.map((step) => {\n        let color = tinycolor(theme.visualization.getColorByName(step.color));\n\n        if (color.getAlpha() === 1) {\n          color.setAlpha(0.15);\n        }\n\n        return [step.value, color.toString()];\n      }),\n      true\n    );\n\n    ctx.fillStyle = grd;\n    ctx.fillRect(u.bbox.left, u.bbox.top, u.bbox.width, u.bbox.height);\n  }\n\n  const { scaleKey, thresholds, theme, config, hardMin, hardMax, softMin, softMax } = options;\n\n  return (u: uPlot) => {\n    const ctx = u.ctx;\n    const { min: xMin, max: xMax } = u.scales.x;\n    const { min: yMin, max: yMax } = u.scales[scaleKey];\n\n    if (xMin == null || xMax == null || yMin == null || yMax == null) {\n      return;\n    }\n\n    let { steps, mode } = thresholds;\n\n    if (mode === ThresholdsMode.Percentage) {\n      let [min, max] = getGradientRange(u, scaleKey, hardMin, hardMax, softMin, softMax);\n      let range = max - min;\n\n      steps = steps.map((step) => ({\n        ...step,\n        value: min + range * (step.value / 100),\n      }));\n    }\n\n    ctx.save();\n\n    switch (config.mode) {\n      case GraphThresholdsStyleMode.Line:\n      case GraphThresholdsStyleMode.Dashed:\n        addLines(u, scaleKey, steps, theme);\n        break;\n      case GraphThresholdsStyleMode.Area:\n        addAreas(u, scaleKey, steps, theme);\n        break;\n      case GraphThresholdsStyleMode.LineAndArea:\n      case GraphThresholdsStyleMode.DashedAndArea:\n        addAreas(u, scaleKey, steps, theme);\n        addLines(u, scaleKey, steps, theme);\n    }\n\n    ctx.restore();\n  };\n}\n","import { merge } from 'lodash';\nimport uPlot, { Cursor, Band, Hooks, Select, AlignedData, Padding, Series } from 'uplot';\n\nimport { DataFrame, DefaultTimeZone, Field, getTimeZoneInfo, GrafanaTheme2, TimeRange, TimeZone } from '@grafana/data';\nimport { AxisPlacement, VizOrientation } from '@grafana/schema';\n\nimport { FacetedData, PlotConfig } from '../types';\nimport { DEFAULT_PLOT_CONFIG, getStackingBands, pluginLog, StackingGroup } from '../utils';\n\nimport { AxisProps, UPlotAxisBuilder } from './UPlotAxisBuilder';\nimport { ScaleProps, UPlotScaleBuilder } from './UPlotScaleBuilder';\nimport { SeriesProps, UPlotSeriesBuilder } from './UPlotSeriesBuilder';\nimport { getThresholdsDrawHook, UPlotThresholdOptions } from './UPlotThresholds';\n\nconst cursorDefaults: Cursor = {\n  // prevent client-side zoom from triggering at the end of a selection\n  drag: { setScale: false },\n  points: {\n    /*@ts-ignore*/\n    size: (u, seriesIdx) => u.series[seriesIdx].points.size * 2,\n    /*@ts-ignore*/\n    width: (u, seriesIdx, size) => size / 4,\n  },\n  focus: {\n    prox: 30,\n  },\n};\n\ntype PrepData = (frames: DataFrame[]) => AlignedData | FacetedData;\ntype PreDataStacked = (frames: DataFrame[], stackingGroups: StackingGroup[]) => AlignedData | FacetedData;\n\nexport class UPlotConfigBuilder {\n  readonly uid = Math.random().toString(36).slice(2);\n\n  series: UPlotSeriesBuilder[] = [];\n  private axes: Record<string, UPlotAxisBuilder> = {};\n  readonly scales: UPlotScaleBuilder[] = [];\n  private bands: Band[] = [];\n  private stackingGroups: StackingGroup[] = [];\n  private cursor: Cursor | undefined;\n  private select: uPlot.Select | undefined;\n  private hasLeftAxis = false;\n  private hooks: Hooks.Arrays = {};\n  private tz: string | undefined = undefined;\n  private mode: uPlot.Mode = 1;\n  private frames: DataFrame[] | undefined = undefined;\n  // to prevent more than one threshold per scale\n  private thresholds: Record<string, UPlotThresholdOptions> = {};\n  private padding?: Padding = undefined;\n\n  private cachedConfig?: PlotConfig;\n\n  prepData: PrepData | undefined = undefined;\n\n  constructor(timeZone: TimeZone = DefaultTimeZone) {\n    this.tz = getTimeZoneInfo(timeZone, Date.now())?.ianaName;\n  }\n\n  // Exposed to let the container know the primary scale keys\n  scaleKeys: [string, string] = ['', ''];\n\n  addHook<T extends keyof Hooks.Defs>(type: T, hook: Hooks.Defs[T]) {\n    pluginLog('UPlotConfigBuilder', false, 'addHook', type);\n\n    if (!this.hooks[type]) {\n      this.hooks[type] = [];\n    }\n\n    this.hooks[type].push(hook);\n  }\n\n  addThresholds(options: UPlotThresholdOptions) {\n    if (!this.thresholds[options.scaleKey]) {\n      this.thresholds[options.scaleKey] = options;\n      this.addHook('drawClear', getThresholdsDrawHook(options));\n    }\n  }\n\n  addAxis(props: AxisProps) {\n    props.placement = props.placement ?? AxisPlacement.Auto;\n    props.grid = props.grid ?? {};\n    let scaleKey = props.scaleKey;\n\n    if (scaleKey === 'x') {\n      scaleKey += props.timeZone ?? '';\n    }\n\n    if (this.axes[scaleKey]) {\n      this.axes[scaleKey].merge(props);\n      return;\n    }\n\n    // Handle auto placement logic\n    if (props.placement === AxisPlacement.Auto) {\n      props.placement = this.hasLeftAxis ? AxisPlacement.Right : AxisPlacement.Left;\n    }\n\n    if (props.placement === AxisPlacement.Left) {\n      this.hasLeftAxis = true;\n    }\n\n    if (props.placement === AxisPlacement.Hidden) {\n      props.grid.show = false;\n      props.size = 0;\n    }\n\n    this.axes[scaleKey] = new UPlotAxisBuilder(props);\n  }\n\n  getAxisPlacement(scaleKey: string): AxisPlacement {\n    const axis = this.axes[scaleKey];\n    return axis?.props.placement! ?? AxisPlacement.Left;\n  }\n\n  setCursor(cursor?: Cursor) {\n    this.cursor = merge({}, this.cursor, cursor);\n  }\n\n  setMode(mode: uPlot.Mode) {\n    this.mode = mode;\n  }\n\n  setSelect(select: Select) {\n    this.select = select;\n  }\n\n  addSeries(props: SeriesProps) {\n    this.series.push(new UPlotSeriesBuilder(props));\n  }\n\n  getSeries() {\n    return this.series;\n  }\n\n  /** Add or update the scale with the scale key */\n  addScale(props: ScaleProps) {\n    const current = this.scales.find((v) => v.props.scaleKey === props.scaleKey);\n    if (current) {\n      current.merge(props);\n      return;\n    }\n    this.scales.push(new UPlotScaleBuilder(props));\n  }\n\n  addBand(band: Band) {\n    this.bands.push(band);\n  }\n\n  setStackingGroups(groups: StackingGroup[]) {\n    this.stackingGroups = groups;\n  }\n\n  getStackingGroups() {\n    return this.stackingGroups;\n  }\n\n  setPrepData(prepData: PreDataStacked) {\n    this.prepData = (frames) => {\n      this.frames = frames;\n      return prepData(frames, this.getStackingGroups());\n    };\n  }\n\n  setPadding(padding: Padding) {\n    this.padding = padding;\n  }\n\n  getConfig() {\n    if (this.cachedConfig) {\n      return this.cachedConfig;\n    }\n\n    const config: PlotConfig = {\n      ...DEFAULT_PLOT_CONFIG,\n      mode: this.mode,\n      series: [\n        this.mode === 2\n          ? (null as unknown as Series)\n          : {\n              value: () => '',\n            },\n      ],\n    };\n    config.axes = this.ensureNonOverlappingAxes(Object.values(this.axes)).map((a) => a.getConfig());\n    config.series = [...config.series, ...this.series.map((s) => s.getConfig())];\n    config.scales = this.scales.reduce((acc, s) => {\n      return { ...acc, ...s.getConfig() };\n    }, {});\n\n    config.hooks = this.hooks;\n\n    config.select = this.select;\n\n    const pointColorFn =\n      (alphaHex = '') =>\n      (u: uPlot, seriesIdx: number) => {\n        /*@ts-ignore*/\n        let s = u.series[seriesIdx].points._stroke;\n\n        // interpolate for gradients/thresholds\n        if (typeof s !== 'string') {\n          let field = this.frames![0].fields[seriesIdx];\n          s = field.display!(field.values[u.cursor.idxs![seriesIdx]!]).color!;\n        }\n\n        return s + alphaHex;\n      };\n\n    config.cursor = merge(\n      {},\n      cursorDefaults,\n      {\n        points: {\n          stroke: pointColorFn('80'),\n          fill: pointColorFn(),\n        },\n      },\n      this.cursor\n    );\n\n    config.tzDate = this.tzDate;\n\n    if (Array.isArray(this.padding)) {\n      config.padding = this.padding;\n    }\n\n    this.stackingGroups.forEach((group) => {\n      getStackingBands(group).forEach((band) => {\n        this.addBand(band);\n      });\n    });\n\n    if (this.bands.length) {\n      config.bands = this.bands;\n    }\n\n    this.cachedConfig = config;\n\n    return config;\n  }\n\n  private tzDate = (ts: number) => {\n    let date = new Date(ts);\n\n    return this.tz ? uPlot.tzDate(date, this.tz) : date;\n  };\n\n  private ensureNonOverlappingAxes(axes: UPlotAxisBuilder[]): UPlotAxisBuilder[] {\n    const xAxis = axes.find((a) => a.props.scaleKey === 'x');\n    const axesWithoutGridSet = axes.filter((a) => a.props.grid?.show === undefined);\n    const firstValueAxisIdx = axesWithoutGridSet.findIndex(\n      (a) =>\n        a.props.placement === AxisPlacement.Left ||\n        a.props.placement === AxisPlacement.Right ||\n        (a.props.placement === AxisPlacement.Bottom && a !== xAxis)\n    );\n\n    // For all axes with no grid set, set the grid automatically (grid only for first left axis )\n    for (let i = 0; i < axesWithoutGridSet.length; i++) {\n      if (axesWithoutGridSet[i] === xAxis || i === firstValueAxisIdx) {\n        axesWithoutGridSet[i].props.grid!.show = true;\n      } else {\n        axesWithoutGridSet[i].props.grid!.show = false;\n      }\n    }\n\n    return axes;\n  }\n}\n\nexport type Renderers = Array<{\n  fieldMap: Record<string, string>;\n  indicesOnly: string[];\n  init: (config: UPlotConfigBuilder, fieldIndices: Record<string, number>) => void;\n}>;\n\n/** @alpha */\ntype UPlotConfigPrepOpts<T extends Record<string, unknown> = {}> = {\n  frame: DataFrame;\n  theme: GrafanaTheme2;\n  timeZones: TimeZone[];\n  getTimeRange: () => TimeRange;\n  allFrames: DataFrame[];\n  renderers?: Renderers;\n  tweakScale?: (opts: ScaleProps, forField: Field) => ScaleProps;\n  tweakAxis?: (opts: AxisProps, forField: Field) => AxisProps;\n  hoverProximity?: number;\n  orientation?: VizOrientation;\n} & T;\n\n/** @alpha */\nexport type UPlotConfigPrepFn<T extends {} = {}> = (opts: UPlotConfigPrepOpts<T>) => UPlotConfigBuilder;\n","import { Range } from 'uplot';\n\nimport {\n  DataFrame,\n  FieldConfig,\n  FieldSparkline,\n  FieldType,\n  isLikelyAscendingVector,\n  sortDataFrame,\n  applyNullInsertThreshold,\n  Field,\n} from '@grafana/data';\nimport { GraphFieldConfig } from '@grafana/schema';\n\n/** @internal\n * Given a sparkline config returns a DataFrame ready to be turned into Plot data set\n **/\nexport function preparePlotFrame(sparkline: FieldSparkline, config?: FieldConfig<GraphFieldConfig>): DataFrame {\n  const length = sparkline.y.values.length;\n  const yFieldConfig = {\n    ...sparkline.y.config,\n    ...config,\n  };\n\n  const xField = sparkline.x ?? {\n    name: '',\n    values: [...Array(length).keys()],\n    type: FieldType.number,\n    config: {},\n  };\n\n  let frame: DataFrame = {\n    refId: 'sparkline',\n    fields: [\n      xField,\n      {\n        ...sparkline.y,\n        config: yFieldConfig,\n      },\n    ],\n    length,\n  };\n\n  if (!isLikelyAscendingVector(xField.values)) {\n    frame = sortDataFrame(frame, 0);\n  }\n\n  return applyNullInsertThreshold({\n    frame,\n    refFieldPseudoMin: sparkline.timeRange?.from.valueOf(),\n    refFieldPseudoMax: sparkline.timeRange?.to.valueOf(),\n  });\n}\n\n/**\n * apply configuration defaults and ensure that the range is never two equal values.\n */\nexport function getYRange(field: Field, alignedFrame: DataFrame): Range.MinMax {\n  let { min, max } = alignedFrame.fields[1].state?.range!;\n\n  // enure that the min/max from the field config are respected\n  min = Math.max(min!, field.config.min ?? -Infinity);\n  max = Math.min(max!, field.config.max ?? Infinity);\n\n  // if noValue is set, ensure that it is included in the range as well\n  const noValue = +alignedFrame.fields[1].config?.noValue!;\n  if (!Number.isNaN(noValue)) {\n    min = Math.min(min, noValue);\n    max = Math.max(max, noValue);\n  }\n\n  // if min and max are equal after all of that, create a range\n  // that allows the sparkline to be visible in the center of the viz\n  if (min === max) {\n    if (min === 0) {\n      max = 100;\n    } else if (min < 0) {\n      max = 0;\n      min *= 2;\n    } else {\n      min = 0;\n      max *= 2;\n    }\n  }\n\n  return [min, max];\n}\n","import { isEqual } from 'lodash';\nimport { PureComponent } from 'react';\nimport { AlignedData, Range } from 'uplot';\n\nimport {\n  compareDataFrameStructures,\n  DataFrame,\n  Field,\n  FieldConfig,\n  FieldSparkline,\n  FieldType,\n  getFieldColorModeForField,\n  nullToValue,\n} from '@grafana/data';\nimport {\n  AxisPlacement,\n  GraphDrawStyle,\n  GraphFieldConfig,\n  VisibilityMode,\n  ScaleDirection,\n  ScaleOrientation,\n} from '@grafana/schema';\n\nimport { Themeable2 } from '../../types/theme';\nimport { UPlotChart } from '../uPlot/Plot';\nimport { UPlotConfigBuilder } from '../uPlot/config/UPlotConfigBuilder';\nimport { preparePlotData2, getStackingGroups } from '../uPlot/utils';\n\nimport { getYRange, preparePlotFrame } from './utils';\n\nexport interface SparklineProps extends Themeable2 {\n  width: number;\n  height: number;\n  config?: FieldConfig<GraphFieldConfig>;\n  sparkline: FieldSparkline;\n}\n\ninterface State {\n  data: AlignedData;\n  alignedDataFrame: DataFrame;\n  configBuilder: UPlotConfigBuilder;\n}\n\nconst defaultConfig: GraphFieldConfig = {\n  drawStyle: GraphDrawStyle.Line,\n  showPoints: VisibilityMode.Auto,\n  axisPlacement: AxisPlacement.Hidden,\n  pointSize: 2,\n};\n\n/** @internal */\nexport class Sparkline extends PureComponent<SparklineProps, State> {\n  constructor(props: SparklineProps) {\n    super(props);\n\n    const alignedDataFrame = preparePlotFrame(props.sparkline, props.config);\n\n    this.state = {\n      data: preparePlotData2(alignedDataFrame, getStackingGroups(alignedDataFrame)),\n      alignedDataFrame,\n      configBuilder: this.prepareConfig(alignedDataFrame),\n    };\n  }\n\n  static getDerivedStateFromProps(props: SparklineProps, state: State) {\n    const _frame = preparePlotFrame(props.sparkline, props.config);\n    const frame = nullToValue(_frame);\n    if (!frame) {\n      return { ...state };\n    }\n\n    return {\n      ...state,\n      data: preparePlotData2(frame, getStackingGroups(frame)),\n      alignedDataFrame: frame,\n    };\n  }\n\n  componentDidUpdate(prevProps: SparklineProps, prevState: State) {\n    const { alignedDataFrame } = this.state;\n\n    if (!alignedDataFrame) {\n      return;\n    }\n\n    let rebuildConfig = false;\n\n    if (prevProps.sparkline !== this.props.sparkline) {\n      const isStructureChanged = !compareDataFrameStructures(this.state.alignedDataFrame, prevState.alignedDataFrame);\n      const isRangeChanged = !isEqual(\n        alignedDataFrame.fields[1].state?.range,\n        prevState.alignedDataFrame.fields[1].state?.range\n      );\n      rebuildConfig = isStructureChanged || isRangeChanged;\n    } else {\n      rebuildConfig = !isEqual(prevProps.config, this.props.config);\n    }\n\n    if (rebuildConfig) {\n      this.setState({ configBuilder: this.prepareConfig(alignedDataFrame) });\n    }\n  }\n\n  getYRange(field: Field): Range.MinMax {\n    return getYRange(field, this.state.alignedDataFrame);\n  }\n\n  prepareConfig(data: DataFrame) {\n    const { theme } = this.props;\n    const builder = new UPlotConfigBuilder();\n\n    builder.setCursor({\n      show: false,\n      x: false, // no crosshairs\n      y: false,\n    });\n\n    // X is the first field in the alligned frame\n    const xField = data.fields[0];\n    builder.addScale({\n      scaleKey: 'x',\n      orientation: ScaleOrientation.Horizontal,\n      direction: ScaleDirection.Right,\n      isTime: false, //xField.type === FieldType.time,\n      range: () => {\n        const { sparkline } = this.props;\n        if (sparkline.x) {\n          if (sparkline.timeRange && sparkline.x.type === FieldType.time) {\n            return [sparkline.timeRange.from.valueOf(), sparkline.timeRange.to.valueOf()];\n          }\n          const vals = sparkline.x.values;\n          return [vals[0], vals[vals.length - 1]];\n        }\n        return [0, sparkline.y.values.length - 1];\n      },\n    });\n\n    builder.addAxis({\n      scaleKey: 'x',\n      theme,\n      placement: AxisPlacement.Hidden,\n    });\n\n    for (let i = 0; i < data.fields.length; i++) {\n      const field = data.fields[i];\n      const config: FieldConfig<GraphFieldConfig> = field.config;\n      const customConfig: GraphFieldConfig = {\n        ...defaultConfig,\n        ...config.custom,\n      };\n\n      if (field === xField || field.type !== FieldType.number) {\n        continue;\n      }\n\n      const scaleKey = config.unit || '__fixed';\n      builder.addScale({\n        scaleKey,\n        orientation: ScaleOrientation.Vertical,\n        direction: ScaleDirection.Up,\n        range: () => this.getYRange(field),\n      });\n\n      builder.addAxis({\n        scaleKey,\n        theme,\n        placement: AxisPlacement.Hidden,\n      });\n\n      const colorMode = getFieldColorModeForField(field);\n      const seriesColor = colorMode.getCalculator(field, theme)(0, 0);\n      const pointsMode =\n        customConfig.drawStyle === GraphDrawStyle.Points ? VisibilityMode.Always : customConfig.showPoints;\n\n      builder.addSeries({\n        pxAlign: false,\n        scaleKey,\n        theme,\n        colorMode,\n        thresholds: config.thresholds,\n        drawStyle: customConfig.drawStyle!,\n        lineColor: customConfig.lineColor ?? seriesColor,\n        lineWidth: customConfig.lineWidth,\n        lineInterpolation: customConfig.lineInterpolation,\n        showPoints: pointsMode,\n        pointSize: customConfig.pointSize,\n        fillOpacity: customConfig.fillOpacity,\n        fillColor: customConfig.fillColor,\n        lineStyle: customConfig.lineStyle,\n        gradientMode: customConfig.gradientMode,\n        spanNulls: customConfig.spanNulls,\n      });\n    }\n\n    return builder;\n  }\n\n  render() {\n    const { data, configBuilder } = this.state;\n    const { width, height } = this.props;\n    return <UPlotChart data={data} config={configBuilder} width={width} height={height} />;\n  }\n}\n","import * as React from 'react';\n\nimport {\n  FieldType,\n  FieldConfig,\n  getMinMaxAndDelta,\n  FieldSparkline,\n  isDataFrame,\n  Field,\n  isDataFrameWithValue,\n  formattedValueToString,\n} from '@grafana/data';\nimport {\n  BarAlignment,\n  GraphDrawStyle,\n  GraphFieldConfig,\n  GraphGradientMode,\n  LineInterpolation,\n  TableSparklineCellOptions,\n  TableCellDisplayMode,\n  VisibilityMode,\n} from '@grafana/schema';\n\nimport { useTheme2 } from '../../../themes/ThemeContext';\nimport { measureText } from '../../../utils/measureText';\nimport { FormattedValueDisplay } from '../../FormattedValueDisplay/FormattedValueDisplay';\nimport { Sparkline } from '../../Sparkline/Sparkline';\nimport { TableCellProps } from '../types';\nimport { getAlignmentFactor, getCellOptions } from '../utils';\n\nexport const defaultSparklineCellConfig: TableSparklineCellOptions = {\n  type: TableCellDisplayMode.Sparkline,\n  drawStyle: GraphDrawStyle.Line,\n  lineInterpolation: LineInterpolation.Smooth,\n  lineWidth: 1,\n  fillOpacity: 17,\n  gradientMode: GraphGradientMode.Hue,\n  pointSize: 2,\n  barAlignment: BarAlignment.Center,\n  showPoints: VisibilityMode.Never,\n  hideValue: false,\n};\n\nexport const SparklineCell = (props: TableCellProps) => {\n  const { field, innerWidth, tableStyles, cell, cellProps, timeRange } = props;\n  const sparkline = getSparkline(cell.value);\n  const theme = useTheme2();\n\n  if (!sparkline) {\n    return (\n      <div {...cellProps} className={tableStyles.cellContainer}>\n        {field.config.noValue || 'no data'}\n      </div>\n    );\n  }\n\n  // Get the step from the first two values to null-fill the x-axis based on timerange\n  if (sparkline.x && !sparkline.x.config.interval && sparkline.x.values.length > 1) {\n    sparkline.x.config.interval = sparkline.x.values[1] - sparkline.x.values[0];\n  }\n\n  // Remove non-finite values, e.g: NaN, +/-Infinity\n  sparkline.y.values = sparkline.y.values.map((v) => {\n    if (!Number.isFinite(v)) {\n      return null;\n    } else {\n      return v;\n    }\n  });\n\n  const range = getMinMaxAndDelta(sparkline.y);\n  sparkline.y.config.min = range.min;\n  sparkline.y.config.max = range.max;\n  sparkline.y.state = { range };\n  sparkline.timeRange = timeRange;\n\n  const cellOptions = getTableSparklineCellOptions(field);\n\n  const config: FieldConfig<GraphFieldConfig> = {\n    color: field.config.color,\n    custom: {\n      ...defaultSparklineCellConfig,\n      ...cellOptions,\n    },\n  };\n\n  const hideValue = field.config.custom?.cellOptions?.hideValue;\n  let valueWidth = 0;\n  let valueElement: React.ReactNode = null;\n  if (!hideValue) {\n    const value = isDataFrameWithValue(cell.value) ? cell.value.value : null;\n    const displayValue = field.display!(value);\n    const alignmentFactor = getAlignmentFactor(field, displayValue, cell.row.index);\n\n    valueWidth = measureText(formattedValueToString(alignmentFactor), 16).width + theme.spacing.gridSize;\n\n    valueElement = (\n      <FormattedValueDisplay\n        style={{\n          width: `${valueWidth - theme.spacing.gridSize}px`,\n          textAlign: 'right',\n          marginRight: theme.spacing(1),\n        }}\n        value={displayValue}\n      />\n    );\n  }\n\n  return (\n    <div {...cellProps} className={tableStyles.cellContainer}>\n      {valueElement}\n      <div>\n        <Sparkline\n          width={innerWidth - valueWidth}\n          height={tableStyles.cellHeightInner}\n          sparkline={sparkline}\n          config={config}\n          theme={tableStyles.theme}\n        />\n      </div>\n    </div>\n  );\n};\n\nfunction getSparkline(value: unknown): FieldSparkline | undefined {\n  if (Array.isArray(value)) {\n    return {\n      y: {\n        name: 'test',\n        type: FieldType.number,\n        values: value,\n        config: {},\n      },\n    };\n  }\n\n  if (isDataFrame(value)) {\n    const timeField = value.fields.find((x) => x.type === FieldType.time);\n    const numberField = value.fields.find((x) => x.type === FieldType.number);\n\n    if (timeField && numberField) {\n      return { x: timeField, y: numberField };\n    }\n  }\n\n  return;\n}\n\nfunction getTableSparklineCellOptions(field: Field): TableSparklineCellOptions {\n  let options = getCellOptions(field);\n  if (options.type === TableCellDisplayMode.Auto) {\n    options = { ...options, type: TableCellDisplayMode.Sparkline };\n  }\n  if (options.type === TableCellDisplayMode.Sparkline) {\n    return options;\n  }\n  throw new Error(`Expected options type ${TableCellDisplayMode.Sparkline} but got ${options.type}`);\n}\n","import { css } from '@emotion/css';\n\nimport { KeyValue } from '@grafana/data';\n\nimport { FooterItem } from '../types';\n\nexport interface FooterProps {\n  value: FooterItem;\n}\n\nexport const FooterCell = (props: FooterProps) => {\n  const cell = css({\n    width: '100%',\n    listStyle: 'none',\n  });\n\n  const list = css({\n    width: '100%',\n    display: 'flex',\n    flexDirection: 'row',\n    justifyContent: 'space-between',\n  });\n\n  if (props.value && !Array.isArray(props.value)) {\n    return <span>{props.value}</span>;\n  }\n\n  if (props.value && Array.isArray(props.value) && props.value.length > 0) {\n    return (\n      <ul className={cell}>\n        {props.value.map((v: KeyValue<string>, i) => {\n          const key = Object.keys(v)[0];\n          return (\n            <li className={list} key={i}>\n              <span>{key}</span>\n              <span>{v[key]}</span>\n            </li>\n          );\n        })}\n      </ul>\n    );\n  }\n\n  return EmptyCell;\n};\n\nexport const EmptyCell = () => {\n  return <span>&nbsp;</span>;\n};\n","import { ColumnInstance, HeaderGroup } from 'react-table';\n\nimport { fieldReducers, ReducerID } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { EmptyCell, FooterCell } from '../Cells/FooterCell';\nimport { FooterItem } from '../types';\n\nimport { TableStyles } from './styles';\n\nexport interface FooterRowProps {\n  totalColumnsWidth: number;\n  footerGroups: HeaderGroup[];\n  footerValues: FooterItem[];\n  isPaginationVisible: boolean;\n  tableStyles: TableStyles;\n}\n\nexport function FooterRow(props: FooterRowProps) {\n  const { totalColumnsWidth, footerGroups, isPaginationVisible, tableStyles } = props;\n  const e2eSelectorsTable = selectors.components.Panels.Visualization.Table;\n\n  return (\n    <div\n      style={{\n        position: isPaginationVisible ? 'relative' : 'absolute',\n        width: totalColumnsWidth ? `${totalColumnsWidth}px` : '100%',\n        bottom: '0px',\n      }}\n    >\n      {footerGroups.map((footerGroup: HeaderGroup) => {\n        const { key, ...footerGroupProps } = footerGroup.getFooterGroupProps();\n        return (\n          <div className={tableStyles.tfoot} {...footerGroupProps} key={key} data-testid={e2eSelectorsTable.footer}>\n            {footerGroup.headers.map((column: ColumnInstance) => renderFooterCell(column, tableStyles))}\n          </div>\n        );\n      })}\n    </div>\n  );\n}\n\nfunction renderFooterCell(column: ColumnInstance, tableStyles: TableStyles) {\n  const { key, ...footerProps } = column.getHeaderProps();\n\n  if (!footerProps) {\n    return null;\n  }\n\n  footerProps.style = footerProps.style ?? {};\n  footerProps.style.position = 'absolute';\n  footerProps.style.justifyContent = (column as any).justifyContent;\n\n  return (\n    <div key={key} className={tableStyles.headerCell} {...footerProps}>\n      {column.render('Footer')}\n    </div>\n  );\n}\n\nexport function getFooterValue(index: number, footerValues?: FooterItem[], isCountRowsSet?: boolean) {\n  if (footerValues === undefined) {\n    return EmptyCell;\n  }\n\n  if (isCountRowsSet) {\n    if (footerValues[index] === undefined) {\n      return EmptyCell;\n    }\n\n    const key = fieldReducers.get(ReducerID.count).name;\n\n    return FooterCell({ value: [{ [key]: String(footerValues[index]) }] });\n  }\n\n  return FooterCell({ value: footerValues[index] });\n}\n","import { t } from '@grafana/i18n';\n\nimport { Icon } from '../../Icon/Icon';\nimport { GrafanaTableRow } from '../types';\n\nimport { TableStyles } from './styles';\n\nexport interface Props {\n  row: GrafanaTableRow;\n  tableStyles: TableStyles;\n}\n\nexport function RowExpander({ row, tableStyles }: Props) {\n  return (\n    <div className={tableStyles.expanderCell} {...row.getToggleRowExpandedProps()}>\n      <Icon\n        aria-label={\n          row.isExpanded\n            ? t('grafana-ui.row-expander.collapse', 'Collapse row')\n            : t('grafana-ui.row-expander.expand', 'Expand row')\n        }\n        name={row.isExpanded ? 'angle-down' : 'angle-right'}\n        size=\"lg\"\n      />\n    </div>\n  );\n}\n","import { Property } from 'csstype';\nimport { clone, sampleSize } from 'lodash';\nimport memoize from 'micro-memoize';\nimport { HeaderGroup, Row } from 'react-table';\nimport tinycolor from 'tinycolor2';\n\nimport {\n  ActionModel,\n  DataFrame,\n  DisplayValue,\n  DisplayValueAlignmentFactors,\n  Field,\n  FieldConfigSource,\n  fieldReducers,\n  FieldType,\n  formattedValueToString,\n  getDisplayProcessor,\n  getFieldDisplayName,\n  GrafanaTheme2,\n  isDataFrame,\n  isDataFrameWithValue,\n  isTimeSeriesFrame,\n  LinkModel,\n  reduceField,\n  SelectableValue,\n} from '@grafana/data';\nimport {\n  BarGaugeDisplayMode,\n  TableAutoCellOptions,\n  TableCellBackgroundDisplayMode,\n  TableCellDisplayMode,\n} from '@grafana/schema';\n\nimport { getTextColorForAlphaBackground } from '../../utils/colors';\n\nimport { ActionsCell } from './ActionsCell';\nimport { BarGaugeCell } from './Cells/BarGaugeCell';\nimport { DataLinksCell } from './Cells/DataLinksCell';\nimport { DefaultCell } from './Cells/DefaultCell';\nimport { GeoCell } from './Cells/GeoCell';\nimport { ImageCell } from './Cells/ImageCell';\nimport { JSONViewCell } from './Cells/JSONViewCell';\nimport { SparklineCell } from './Cells/SparklineCell';\nimport { getFooterValue } from './TableRT/FooterRow';\nimport { RowExpander } from './TableRT/RowExpander';\nimport {\n  CellColors,\n  CellComponent,\n  FooterItem,\n  GrafanaTableColumn,\n  TableCellOptions,\n  TableFieldOptions,\n  TableFooterCalc,\n} from './types';\n\nexport const EXPANDER_WIDTH = 50;\n\nexport function getTextAlign(field?: Field): Property.JustifyContent {\n  if (!field) {\n    return 'flex-start';\n  }\n\n  if (field.config.custom) {\n    const custom: TableFieldOptions = field.config.custom;\n\n    switch (custom.align) {\n      case 'right':\n        return 'flex-end';\n      case 'left':\n        return 'flex-start';\n      case 'center':\n        return 'center';\n    }\n  }\n\n  if (field.type === FieldType.number) {\n    return 'flex-end';\n  }\n\n  return 'flex-start';\n}\n\nexport function getColumns(\n  data: DataFrame,\n  availableWidth: number,\n  columnMinWidth: number,\n  expander: boolean,\n  footerValues?: FooterItem[],\n  isCountRowsSet?: boolean\n): GrafanaTableColumn[] {\n  const columns: GrafanaTableColumn[] = [];\n  let fieldCountWithoutWidth = 0;\n\n  if (expander) {\n    columns.push({\n      // Make an expander cell\n      Header: () => null, // No header\n      id: 'expander', // It needs an ID\n      // @ts-expect-error\n      // TODO fix type error here\n      Cell: RowExpander,\n      width: EXPANDER_WIDTH,\n      minWidth: EXPANDER_WIDTH,\n      filter: (_rows: Row[], _id: string, _filterValues?: SelectableValue[]) => {\n        return [];\n      },\n      justifyContent: 'left',\n      field: data.fields[0],\n      sortType: 'basic',\n    });\n\n    availableWidth -= EXPANDER_WIDTH;\n  }\n\n  for (const [fieldIndex, field] of data.fields.entries()) {\n    const fieldTableOptions: TableFieldOptions = field.config.custom || {};\n    if (\n      // @ts-ignore this was the former hidden option; we support it for legacy use cases while TableRT is being sunset.\n      fieldTableOptions.hidden ||\n      fieldTableOptions.hideFrom?.viz ||\n      field.type === FieldType.nestedFrames\n    ) {\n      continue;\n    }\n\n    if (fieldTableOptions.width) {\n      availableWidth -= fieldTableOptions.width;\n    } else {\n      fieldCountWithoutWidth++;\n    }\n\n    const selectSortType = (type: FieldType) => {\n      switch (type) {\n        case FieldType.number:\n        case FieldType.frame:\n          return 'number';\n        case FieldType.time:\n          return 'basic';\n        default:\n          return 'alphanumeric-insensitive';\n      }\n    };\n\n    const Cell = getCellComponent(fieldTableOptions.cellOptions?.type, field);\n    columns.push({\n      // @ts-expect-error\n      // TODO fix type error here\n      Cell,\n      id: fieldIndex.toString(),\n      field: field,\n      Header: fieldTableOptions.hideHeader ? '' : getFieldDisplayName(field, data),\n      accessor: (_row, i) => field.values[i],\n      sortType: selectSortType(field.type),\n      width: fieldTableOptions.width,\n      minWidth: fieldTableOptions.minWidth ?? columnMinWidth,\n      filter: memoize(filterByValue(field)),\n      justifyContent: getTextAlign(field),\n      Footer: getFooterValue(fieldIndex, footerValues, isCountRowsSet),\n    });\n  }\n\n  // set columns that are at minimum width\n  let sharedWidth = availableWidth / fieldCountWithoutWidth;\n  for (let i = fieldCountWithoutWidth; i > 0; i--) {\n    for (const column of columns) {\n      if (!column.width && column.minWidth > sharedWidth) {\n        column.width = column.minWidth;\n        availableWidth -= column.width;\n        fieldCountWithoutWidth -= 1;\n        sharedWidth = availableWidth / fieldCountWithoutWidth;\n      }\n    }\n  }\n\n  // divide up the rest of the space\n  for (const column of columns) {\n    if (!column.width) {\n      column.width = sharedWidth;\n    }\n    column.minWidth = 50;\n  }\n\n  return columns;\n}\n\nexport function getCellComponent(displayMode: TableCellDisplayMode, field: Field): CellComponent {\n  switch (displayMode) {\n    case TableCellDisplayMode.Custom:\n    case TableCellDisplayMode.ColorText:\n    case TableCellDisplayMode.ColorBackground:\n      return DefaultCell;\n    case TableCellDisplayMode.Image:\n      return ImageCell;\n    case TableCellDisplayMode.Gauge:\n      return BarGaugeCell;\n    case TableCellDisplayMode.Sparkline:\n      return SparklineCell;\n    case TableCellDisplayMode.JSONView:\n      return JSONViewCell;\n    case TableCellDisplayMode.DataLinks:\n      return DataLinksCell;\n    case TableCellDisplayMode.Actions:\n      return ActionsCell;\n    case TableCellDisplayMode.Pill:\n      return DefaultCell; // Legacy table doesn't support pill cells, fallback to default\n  }\n\n  if (field.type === FieldType.geo) {\n    return GeoCell;\n  }\n\n  if (field.type === FieldType.frame) {\n    const firstValue = field.values[0];\n    if (isDataFrame(firstValue) && isTimeSeriesFrame(firstValue)) {\n      return SparklineCell;\n    }\n\n    return JSONViewCell;\n  }\n\n  // Default or Auto\n  if (field.type === FieldType.other) {\n    return JSONViewCell;\n  }\n\n  return DefaultCell;\n}\n\nexport function filterByValue(field?: Field) {\n  return function (rows: Row[], id: string, filterValues?: SelectableValue[]) {\n    if (rows.length === 0) {\n      return rows;\n    }\n\n    if (!filterValues) {\n      return rows;\n    }\n\n    if (!field) {\n      return rows;\n    }\n\n    return rows.filter((row) => {\n      if (!row.values.hasOwnProperty(id)) {\n        return false;\n      }\n      const value = rowToFieldValue(row, field);\n      return filterValues.find((filter) => filter.value === value) !== undefined;\n    });\n  };\n}\n\nexport function calculateUniqueFieldValues(rows: any[], field?: Field) {\n  if (!field || rows.length === 0) {\n    return {};\n  }\n\n  const set: Record<string, string> = {};\n\n  for (let index = 0; index < rows.length; index++) {\n    const value = rowToFieldValue(rows[index], field);\n    set[value || '(Blanks)'] = value;\n  }\n\n  return set;\n}\n\nexport function rowToFieldValue(row: any, field?: Field): string {\n  if (!field || !row) {\n    return '';\n  }\n\n  const fieldValue = field.values[row.index];\n  const displayValue = field.display ? field.display(fieldValue) : fieldValue;\n  const value = field.display ? formattedValueToString(displayValue) : displayValue;\n\n  return value;\n}\n\nexport function valuesToOptions(unique: Record<string, unknown>): SelectableValue[] {\n  return Object.keys(unique)\n    .reduce<SelectableValue[]>((all, key) => all.concat({ value: unique[key], label: key }), [])\n    .sort(sortOptions);\n}\n\nexport function sortOptions(a: SelectableValue, b: SelectableValue): number {\n  if (a.label === undefined && b.label === undefined) {\n    return 0;\n  }\n\n  if (a.label === undefined && b.label !== undefined) {\n    return -1;\n  }\n\n  if (a.label !== undefined && b.label === undefined) {\n    return 1;\n  }\n\n  if (a.label! < b.label!) {\n    return -1;\n  }\n\n  if (a.label! > b.label!) {\n    return 1;\n  }\n\n  return 0;\n}\n\nexport function getFilteredOptions(options: SelectableValue[], filterValues?: SelectableValue[]): SelectableValue[] {\n  if (!filterValues) {\n    return [];\n  }\n\n  return options.filter((option) => filterValues.some((filtered) => filtered.value === option.value));\n}\n\nexport function sortCaseInsensitive(a: Row, b: Row, id: string) {\n  return String(a.values[id]).localeCompare(String(b.values[id]), undefined, { sensitivity: 'base' });\n}\n\n// sortNumber needs to have great performance as it is called a lot\nexport function sortNumber(rowA: Row, rowB: Row, id: string) {\n  const a = toNumber(rowA.values[id]);\n  const b = toNumber(rowB.values[id]);\n  return a === b ? 0 : a > b ? 1 : -1;\n}\n\nfunction toNumber(value: any): number {\n  if (isDataFrameWithValue(value)) {\n    return value.value ?? Number.NEGATIVE_INFINITY;\n  }\n\n  if (value === null || value === undefined || value === '' || isNaN(value)) {\n    return Number.NEGATIVE_INFINITY;\n  }\n\n  if (typeof value === 'number') {\n    return value;\n  }\n\n  return Number(value);\n}\n\nexport function getFooterItems(\n  filterFields: Array<{ id: string; field?: Field } | undefined>,\n  values: any[number],\n  options: TableFooterCalc,\n  theme2: GrafanaTheme2\n): FooterItem[] {\n  /*\n    The FooterItems[] are calculated using both the `headerGroups[0].headers`\n    (filterFields) and `rows` (values) destructured from the useTable() hook.\n    This cacluation is based on the data from each index in `filterFields`\n    array as well as the corresponding index in the `values` array.\n    When the user hides a column through an override, the getColumns()\n    hook is invoked, removes said hidden column, sends the updated column\n    data to the useTable() hook, which then builds `headerGroups[0].headers`\n    without the hidden column. However, it doesn't remove the hidden column\n    from the `row` data, instead it substututes the hidden column row data\n    with an `undefined` value. Therefore, the `row` array length never changes,\n    despite the `headerGroups[0].headers` length changing at every column removal.\n    This makes all footer reduce calculations AFTER the first hidden column\n    in the `headerGroups[0].headers` break, since the indexing of both\n    arrays is no longer in parity.\n\n    So, here we simply recursively test for the \"hidden\" columns\n    from `headerGroups[0].headers`. Each column has an ID property that corresponds\n    to its own index, therefore if (`filterField.id` !== `String(index)`),\n    we know there is one or more hidden columns; at which point we update\n    the index with an ersatz placeholder with just an `id` property.\n  */\n  addMissingColumnIndex(filterFields);\n\n  return filterFields.map((data, i) => {\n    // Then test for numerical data - this will filter out placeholder `filterFields` as well.\n    if (data?.field?.type !== FieldType.number) {\n      // Show the reducer in the first column\n      if (i === 0 && options.reducer && options.reducer.length > 0) {\n        const reducer = fieldReducers.get(options.reducer[0]);\n        return reducer.name;\n      }\n      // Render an <EmptyCell />.\n      return undefined;\n    }\n\n    let newField = clone(data.field);\n    newField.values = values[data.id];\n    newField.state = undefined;\n\n    data.field = newField;\n\n    if (options.fields && options.fields.length > 0) {\n      const f = options.fields.find((f) => f === data?.field?.name);\n      if (f) {\n        return getFormattedValue(data.field, options.reducer, theme2);\n      }\n      return undefined;\n    }\n    return getFormattedValue(data.field, options.reducer || [], theme2);\n  });\n}\n\nfunction getFormattedValue(field: Field, reducer: string[], theme: GrafanaTheme2) {\n  // If we don't have anything to return then we display nothing\n  const calc = reducer[0];\n  if (calc === undefined) {\n    return '';\n  }\n\n  // Calculate the reduction\n  const format = field.display ?? getDisplayProcessor({ field, theme });\n  const fieldCalcValue = reduceField({ field, reducers: reducer })[calc];\n\n  // If the reducer preserves units then format the\n  // end value with the field display processor\n  const reducerInfo = fieldReducers.get(calc);\n  if (reducerInfo.preservesUnits) {\n    return formattedValueToString(format(fieldCalcValue));\n  }\n\n  // Otherwise we simply return the formatted string\n  return formattedValueToString({ text: fieldCalcValue });\n}\n\n// This strips the raw vales from the `rows` object.\nexport function createFooterCalculationValues(rows: Row[]): any[number] {\n  const values: any[number] = [];\n\n  for (const key in rows) {\n    for (const [valKey, val] of Object.entries(rows[key].values)) {\n      if (values[valKey] === undefined) {\n        values[valKey] = [];\n      }\n      values[valKey].push(val);\n    }\n  }\n\n  return values;\n}\n\nconst defaultCellOptions: TableAutoCellOptions = { type: TableCellDisplayMode.Auto };\n\nexport function getCellOptions(field: Field): TableCellOptions {\n  if (field.config.custom?.displayMode) {\n    return migrateTableDisplayModeToCellOptions(field.config.custom?.displayMode);\n  }\n\n  if (!field.config.custom?.cellOptions) {\n    return defaultCellOptions;\n  }\n\n  return field.config.custom.cellOptions;\n}\n\n/**\n * Migrates table cell display mode to new object format.\n *\n * @param displayMode The display mode of the cell\n * @returns TableCellOptions object in the correct format\n * relative to the old display mode.\n */\nexport function migrateTableDisplayModeToCellOptions(displayMode: TableCellDisplayMode): TableCellOptions {\n  switch (displayMode) {\n    // In the case of the gauge we move to a different option\n    case 'basic':\n    case 'gradient-gauge':\n    case 'lcd-gauge':\n      let gaugeMode = BarGaugeDisplayMode.Basic;\n\n      if (displayMode === 'gradient-gauge') {\n        gaugeMode = BarGaugeDisplayMode.Gradient;\n      } else if (displayMode === 'lcd-gauge') {\n        gaugeMode = BarGaugeDisplayMode.Lcd;\n      }\n\n      return {\n        type: TableCellDisplayMode.Gauge,\n        mode: gaugeMode,\n      };\n    // Also true in the case of the color background\n    case 'color-background':\n    case 'color-background-solid':\n      let mode = TableCellBackgroundDisplayMode.Basic;\n\n      // Set the new mode field, somewhat confusingly the\n      // color-background mode is for gradient display\n      if (displayMode === 'color-background') {\n        mode = TableCellBackgroundDisplayMode.Gradient;\n      }\n\n      return {\n        type: TableCellDisplayMode.ColorBackground,\n        mode: mode,\n      };\n    default:\n      return {\n        // @ts-ignore\n        type: displayMode,\n      };\n  }\n}\n\n/**\n * This recurses through an array of `filterFields` (Array<{ id: string; field?: Field } | undefined>)\n * and adds back the missing indecies that are removed due to hiding a column through an panel override.\n * This is necessary to create Array.length parity between the `filterFields` array and the `values` array (any[number]),\n * since the footer value calculations are based on the corresponding index values of both arrays.\n *\n * @remarks\n * This function uses the splice() method, and therefore mutates the array.\n *\n * @param columns - An array of `filterFields` (Array<{ id: string; field?: Field } | undefined>).\n * @returns void; this function returns nothing; it only mutates values as a side effect.\n */\nfunction addMissingColumnIndex(columns: Array<{ id: string; field?: Field } | undefined>): void {\n  const missingIndex = columns.findIndex((field, index) => field?.id !== String(index));\n\n  // Base case\n  if (missingIndex === -1 || columns[missingIndex]?.id === 'expander') {\n    return;\n  }\n\n  // Splice in missing column\n  columns.splice(missingIndex, 0, { id: String(missingIndex) });\n\n  // Recurse\n  addMissingColumnIndex(columns);\n}\n\n/**\n * Getting gauge or sparkline values to align is very tricky without looking at all values and passing them through display processor.\n * For very large tables that could pretty expensive. So this is kind of a compromise. We look at the first 1000 rows and cache the longest value.\n * If we have a cached value we just check if the current value is longer and update the alignmentFactor. This can obviously still lead to\n * unaligned gauges but it should a lot less common.\n **/\nexport function getAlignmentFactor(\n  field: Field,\n  displayValue: DisplayValue,\n  rowIndex: number\n): DisplayValueAlignmentFactors {\n  let alignmentFactor = field.state?.alignmentFactors;\n\n  if (alignmentFactor) {\n    // check if current alignmentFactor is still the longest\n    if (formattedValueToString(alignmentFactor).length < formattedValueToString(displayValue).length) {\n      alignmentFactor = { ...displayValue };\n      field.state!.alignmentFactors = alignmentFactor;\n    }\n    return alignmentFactor;\n  } else {\n    // look at the next 1000 rows\n    alignmentFactor = { ...displayValue };\n    const maxIndex = Math.min(field.values.length, rowIndex + 1000);\n\n    for (let i = rowIndex + 1; i < maxIndex; i++) {\n      const nextDisplayValue = field.display!(field.values[i]);\n      if (formattedValueToString(alignmentFactor).length > formattedValueToString(nextDisplayValue).length) {\n        alignmentFactor.text = displayValue.text;\n      }\n    }\n\n    if (field.state) {\n      field.state.alignmentFactors = alignmentFactor;\n    } else {\n      field.state = { alignmentFactors: alignmentFactor };\n    }\n\n    return alignmentFactor;\n  }\n}\n\n// since the conversion from timeseries panel crosshair to time is pixel based, we need\n// to set a threshold where the table row highlights when the crosshair is hovered over a certain point\n// because multiple pixels (converted to times) may represent the same point/row in table\nexport function isPointTimeValAroundTableTimeVal(pointTime: number, rowTime: number, threshold: number) {\n  return Math.abs(Math.floor(pointTime) - rowTime) < threshold;\n}\n\n// calculate the threshold for which we consider a point in a chart\n// to match a row in a table based on a time value\nexport function calculateAroundPointThreshold(timeField: Field): number {\n  let max = -Number.MAX_VALUE;\n  let min = Number.MAX_VALUE;\n\n  if (timeField.values.length < 2) {\n    return 0;\n  }\n\n  for (let i = 0; i < timeField.values.length; i++) {\n    const value = timeField.values[i];\n    if (value > max) {\n      max = value;\n    }\n    if (value < min) {\n      min = value;\n    }\n  }\n\n  return (max - min) / timeField.values.length;\n}\n\n/**\n * Retrieve colors for a table cell (or table row).\n *\n * @param tableStyles\n *  Styles for the table\n * @param cellOptions\n *  Table cell configuration options\n * @param displayValue\n *  The value that will be displayed\n * @returns CellColors\n */\nexport function getCellColors(\n  theme: GrafanaTheme2,\n  cellOptions: TableCellOptions,\n  displayValue: DisplayValue\n): CellColors {\n  // How much to darken elements depends upon if we're in dark mode\n  const darkeningFactor = theme.isDark ? 1 : -0.7;\n\n  // Setup color variables\n  let textColor: string | undefined = undefined;\n  let bgColor: string | undefined = undefined;\n  let bgHoverColor: string | undefined = undefined;\n\n  if (cellOptions.type === TableCellDisplayMode.ColorText) {\n    textColor = displayValue.color;\n  } else if (cellOptions.type === TableCellDisplayMode.ColorBackground) {\n    const mode = cellOptions.mode ?? TableCellBackgroundDisplayMode.Gradient;\n\n    if (mode === TableCellBackgroundDisplayMode.Basic) {\n      textColor = getTextColorForAlphaBackground(displayValue.color!, theme.isDark);\n      bgColor = tinycolor(displayValue.color).toRgbString();\n      bgHoverColor = tinycolor(displayValue.color).setAlpha(1).toRgbString();\n    } else if (mode === TableCellBackgroundDisplayMode.Gradient) {\n      const hoverColor = tinycolor(displayValue.color).setAlpha(1).toRgbString();\n      const bgColor2 = tinycolor(displayValue.color)\n        .darken(10 * darkeningFactor)\n        .spin(5);\n      textColor = getTextColorForAlphaBackground(displayValue.color!, theme.isDark);\n      bgColor = `linear-gradient(120deg, ${bgColor2.toRgbString()}, ${displayValue.color})`;\n      bgHoverColor = `linear-gradient(120deg, ${bgColor2.setAlpha(1).toRgbString()}, ${hoverColor})`;\n    }\n  }\n\n  return { textColor, bgColor, bgHoverColor };\n}\n\n/**\n * Calculate an estimated bounding box for a block\n * of text using an offscreen canvas.\n */\nexport function guessTextBoundingBox(\n  text: string,\n  headerGroup: HeaderGroup,\n  osContext: OffscreenCanvasRenderingContext2D | null,\n  lineHeight: number,\n  defaultRowHeight: number,\n  padding = 0\n) {\n  const width = Number(headerGroup?.width ?? 300);\n  const LINE_SCALE_FACTOR = 1.17;\n  const LOW_LINE_PAD = 42;\n  const PADDING = padding * 2;\n\n  if (osContext !== null && typeof text === 'string') {\n    const words = text.split(/\\s/);\n    const lines = [];\n    let currentLine = '';\n    let wordCount = 0;\n    let extraLines = 0;\n\n    // Let's just wrap the lines and see how well the measurement works\n    for (let i = 0; i < words.length; i++) {\n      const currentWord = words[i];\n      let lineWidth = osContext.measureText(currentLine + ' ' + currentWord).width;\n\n      if (lineWidth < width - PADDING) {\n        currentLine += ' ' + currentWord;\n        wordCount++;\n      } else {\n        lines.push({\n          width: lineWidth,\n          line: currentLine,\n        });\n\n        currentLine = currentWord;\n        wordCount = 0;\n      }\n    }\n\n    // We can have extra long strings, for these\n    // we estimate if it overshoots the line by\n    // at least one other line\n    for (let i = 0; i < lines.length; i++) {\n      if (lines[i].width > width) {\n        let extra = Math.floor(lines[i].width / width) - 1;\n        extraLines += extra;\n      }\n    }\n\n    // Estimated height would be lines multiplied\n    // by the line height\n    let lineNumber = lines.length + extraLines;\n    let height = 38;\n    if (lineNumber > 5) {\n      height = lineNumber * lineHeight * LINE_SCALE_FACTOR;\n    } else {\n      height = lineNumber * lineHeight + LOW_LINE_PAD;\n    }\n    height += PADDING;\n\n    return { width, height };\n  }\n\n  return { width, height: defaultRowHeight };\n}\n\n/**\n * A function to guess at which field has the longest text.\n * To do this we either select a single record if there aren't many records\n * or we select records at random and sample their size.\n */\nexport function guessLongestField(fieldConfig: FieldConfigSource, data: DataFrame) {\n  let longestField = undefined;\n  const SAMPLE_SIZE = 3;\n\n  // If the default field option is set to allow text wrapping\n  // we determine the field to wrap text with here and then\n  // pass it to the RowsList\n  if (fieldConfig.defaults.custom?.cellOptions?.wrapText) {\n    const stringFields = data.fields.filter((field: Field) => field.type === FieldType.string);\n\n    if (stringFields.length >= 1 && stringFields[0].values.length > 0) {\n      const numValues = stringFields[0].values.length;\n      let longestLength = 0;\n\n      // If we have less than 30 values we assume that the first\n      // non-null record is representative of the overall data\n      if (numValues <= 30) {\n        for (const field of stringFields) {\n          const fieldLength = field.values.find((v) => v != null)?.length ?? 0;\n          if (fieldLength > longestLength) {\n            longestLength = fieldLength;\n            longestField = field;\n          }\n        }\n      }\n      // Otherwise we randomly sample SAMPLE_SIZE values and take\n      // the mean length\n      else {\n        for (const field of stringFields) {\n          // This could result in duplicate values but\n          // that should be fairly unlikely. This could potentially\n          // be improved using a Set datastructure but\n          // going to leave that one as an exercise for\n          // the reader to contemplate and possibly code\n          const vals = sampleSize(field.values, SAMPLE_SIZE);\n          const meanLength = (vals[0]?.length + vals[1]?.length + vals[2]?.length) / 3;\n\n          if (meanLength > longestLength) {\n            longestLength = meanLength;\n            longestField = field;\n          }\n        }\n      }\n    }\n  }\n\n  return longestField;\n}\n\nexport interface DataLinksActionsTooltipState {\n  coords: DataLinksActionsTooltipCoords;\n  links?: LinkModel[];\n  actions?: ActionModel[];\n}\n\nexport interface DataLinksActionsTooltipCoords {\n  clientX: number;\n  clientY: number;\n}\n\nexport const getDataLinksActionsTooltipUtils = (links: LinkModel[], actions?: ActionModel[]) => {\n  const hasMultipleLinksOrActions = links.length > 1 || Boolean(actions?.length);\n  const shouldShowLink = links.length === 1 && !Boolean(actions?.length);\n\n  return { shouldShowLink, hasMultipleLinksOrActions };\n};\n\nconst shouldTriggerTooltip = (event: React.MouseEvent<HTMLElement>): boolean => {\n  return event.target === event.currentTarget;\n};\n\n/**\n * Creates an onClick handler for table cells that only triggers tooltip when clicking directly on the cell\n * @param setTooltipCoords - function to set tooltip coordinates\n * @returns onClick handler\n */\nexport const tooltipOnClickHandler = (setTooltipCoords: (coords: DataLinksActionsTooltipCoords) => void) => {\n  return (event: React.MouseEvent<HTMLElement>) => {\n    if (shouldTriggerTooltip(event)) {\n      const { clientX, clientY } = event;\n      setTooltipCoords({ clientX, clientY });\n    }\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { useCallback, useMemo } from 'react';\nimport * as React from 'react';\nimport { FixedSizeList as List, ListChildComponentProps } from 'react-window';\n\nimport { GrafanaTheme2, formattedValueToString, getValueFormat, SelectableValue } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2, useTheme2 } from '../../../themes/ThemeContext';\nimport { ButtonSelect } from '../../Dropdown/ButtonSelect';\nimport { FilterInput } from '../../FilterInput/FilterInput';\nimport { Checkbox } from '../../Forms/Checkbox';\nimport { Label } from '../../Forms/Label';\nimport { Stack } from '../../Layout/Stack/Stack';\n\ninterface Props {\n  values: SelectableValue[];\n  options: SelectableValue[];\n  onChange: (options: SelectableValue[]) => void;\n  caseSensitive?: boolean;\n  showOperators?: boolean;\n  searchFilter: string;\n  setSearchFilter: (value: string) => void;\n  operator: SelectableValue<string>;\n  setOperator: (item: SelectableValue<string>) => void;\n}\n\nconst ITEM_HEIGHT = 28;\nconst MIN_HEIGHT = ITEM_HEIGHT * 5;\n\nconst operatorSelectableValues: { [key: string]: SelectableValue<string> } = {\n  Contains: { label: 'Contains', value: 'Contains', description: 'Contains' },\n  '=': { label: '=', value: '=', description: 'Equals' },\n  '!=': { label: '!=', value: '!=', description: 'Not equals' },\n  '>': { label: '>', value: '>', description: 'Greater' },\n  '>=': { label: '>=', value: '>=', description: 'Greater or Equal' },\n  '<': { label: '<', value: '<', description: 'Less' },\n  '<=': { label: '<=', value: '<=', description: 'Less or Equal' },\n  Expression: {\n    label: 'Expression',\n    value: 'Expression',\n    description: 'Bool Expression (Char $ represents the column value in the expression, e.g. \"$ >= 10 && $ <= 12\")',\n  },\n};\nconst OPERATORS = Object.values(operatorSelectableValues);\nexport const REGEX_OPERATOR = operatorSelectableValues['Contains'];\nconst XPR_OPERATOR = operatorSelectableValues['Expression'];\n\nconst comparableValue = (value: string): string | number | Date | boolean => {\n  value = value.trim().replace(/\\\\/g, '');\n\n  // Does it look like a Date (Starting with pattern YYYY-MM-DD* or YYYY/MM/DD*)?\n  if (/^(\\d{4}-\\d{2}-\\d{2}|\\d{4}\\/\\d{2}\\/\\d{2})/.test(value)) {\n    const date = new Date(value);\n    if (!isNaN(date.getTime())) {\n      const fmt = getValueFormat('dateTimeAsIso');\n      return formattedValueToString(fmt(date.getTime()));\n    }\n  }\n  // Does it look like a Number?\n  const num = parseFloat(value);\n  if (!isNaN(num)) {\n    return num;\n  }\n  // Does it look like a Bool?\n  const lvalue = value.toLowerCase();\n  if (lvalue === 'true' || lvalue === 'false') {\n    return lvalue === 'true';\n  }\n  // Anything else\n  return value;\n};\n\nexport const FilterList = ({\n  options,\n  values,\n  caseSensitive,\n  showOperators,\n  onChange,\n  searchFilter,\n  setSearchFilter,\n  operator,\n  setOperator,\n}: Props) => {\n  const regex = useMemo(() => new RegExp(searchFilter, caseSensitive ? undefined : 'i'), [searchFilter, caseSensitive]);\n  const items = useMemo(\n    () =>\n      options.filter((option) => {\n        if (!showOperators || !searchFilter || operator.value === REGEX_OPERATOR.value) {\n          if (option.label === undefined) {\n            return false;\n          }\n          return regex.test(option.label);\n        } else if (operator.value === XPR_OPERATOR.value) {\n          if (option.value === undefined) {\n            return false;\n          }\n          try {\n            const xpr = searchFilter.replace(/\\\\/g, '');\n            const fnc = new Function('$', `'use strict'; return ${xpr};`);\n            const val = comparableValue(option.value);\n            return fnc(val);\n          } catch (_) {}\n          return false;\n        } else {\n          if (option.value === undefined) {\n            return false;\n          }\n\n          const value1 = comparableValue(option.value);\n          const value2 = comparableValue(searchFilter);\n\n          switch (operator.value) {\n            case '=':\n              return value1 === value2;\n            case '!=':\n              return value1 !== value2;\n            case '>':\n              return value1 > value2;\n            case '>=':\n              return value1 >= value2;\n            case '<':\n              return value1 < value2;\n            case '<=':\n              return value1 <= value2;\n          }\n          return false;\n        }\n      }),\n    [options, regex, showOperators, operator, searchFilter]\n  );\n  const selectedItems = useMemo(() => items.filter((item) => values.includes(item)), [items, values]);\n\n  const selectCheckValue = useMemo(() => items.length === selectedItems.length, [items, selectedItems]);\n  const selectCheckIndeterminate = useMemo(\n    () => selectedItems.length > 0 && items.length > selectedItems.length,\n    [items, selectedItems]\n  );\n  const selectCheckLabel = useMemo(\n    () => (selectedItems.length ? `${selectedItems.length} selected` : `Select all`),\n    [selectedItems]\n  );\n  const selectCheckDescription = useMemo(\n    () =>\n      items.length !== selectedItems.length\n        ? 'Add all displayed values to the filter'\n        : 'Remove all displayed values from the filter',\n    [items, selectedItems]\n  );\n\n  const styles = useStyles2(getStyles);\n  const theme = useTheme2();\n  const gutter = theme.spacing.gridSize;\n  const height = useMemo(() => Math.min(items.length * ITEM_HEIGHT, MIN_HEIGHT) + gutter, [gutter, items.length]);\n\n  const onCheckedChanged = useCallback(\n    (option: SelectableValue) => (event: React.FormEvent<HTMLInputElement>) => {\n      const newValues = event.currentTarget.checked\n        ? values.concat(option)\n        : values.filter((c) => c.value !== option.value);\n\n      onChange(newValues);\n    },\n    [onChange, values]\n  );\n\n  const onSelectChanged = useCallback(() => {\n    if (items.length === selectedItems.length) {\n      const newValues = values.filter((item) => !items.includes(item));\n      onChange(newValues);\n    } else {\n      const newValues = [...new Set([...values, ...items])];\n      onChange(newValues);\n    }\n  }, [onChange, values, items, selectedItems]);\n\n  return (\n    <Stack direction=\"column\" gap={0.25}>\n      {!showOperators && (\n        <FilterInput\n          placeholder={t('grafana-ui.table.filter-placeholder', 'Filter values')}\n          onChange={setSearchFilter}\n          value={searchFilter}\n        />\n      )}\n      {showOperators && (\n        <Stack direction=\"row\" gap={0}>\n          <ButtonSelect\n            variant=\"canvas\"\n            options={OPERATORS}\n            onChange={setOperator}\n            value={operator}\n            tooltip={operator.description}\n          />\n          <FilterInput\n            placeholder={t('grafana-ui.table.filter-placeholder', 'Filter values')}\n            onChange={setSearchFilter}\n            value={searchFilter}\n          />\n        </Stack>\n      )}\n      {items.length > 0 ? (\n        <>\n          <List\n            height={height}\n            itemCount={items.length}\n            itemSize={ITEM_HEIGHT}\n            itemData={{ items, values: selectedItems, onCheckedChanged, className: styles.filterListRow }}\n            width=\"100%\"\n            className={styles.filterList}\n          >\n            {ItemRenderer}\n          </List>\n          <Stack direction=\"column\" gap={0.25}>\n            <div className={cx(styles.selectDivider)} />\n            <div className={cx(styles.filterListRow)}>\n              <Checkbox\n                value={selectCheckValue}\n                indeterminate={selectCheckIndeterminate}\n                label={selectCheckLabel}\n                description={selectCheckDescription}\n                onChange={onSelectChanged}\n              />\n            </div>\n          </Stack>\n        </>\n      ) : (\n        <Label className={styles.noValuesLabel}>\n          <Trans i18nKey=\"grafana-ui.table.no-values-label\">No values</Trans>\n        </Label>\n      )}\n    </Stack>\n  );\n};\n\ninterface ItemRendererProps extends ListChildComponentProps {\n  data: {\n    onCheckedChanged: (option: SelectableValue) => (event: React.FormEvent<HTMLInputElement>) => void;\n    items: SelectableValue[];\n    values: SelectableValue[];\n    className: string;\n  };\n}\n\nfunction ItemRenderer({ index, style, data: { onCheckedChanged, items, values, className } }: ItemRendererProps) {\n  const option = items[index];\n  const { value, label } = option;\n  const isChecked = values.find((s) => s.value === value) !== undefined;\n\n  return (\n    <div className={className} style={style} title={label}>\n      <Checkbox value={isChecked} label={label} onChange={onCheckedChanged(option)} />\n    </div>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  filterList: css({\n    label: 'filterList',\n  }),\n  filterListRow: css({\n    label: 'filterListRow',\n    cursor: 'pointer',\n    whiteSpace: 'nowrap',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    padding: theme.spacing(0.5),\n\n    ':hover': {\n      backgroundColor: theme.colors.action.hover,\n    },\n  }),\n  selectDivider: css({\n    label: 'selectDivider',\n    width: '100%',\n    borderTop: `1px solid ${theme.colors.border.medium}`,\n    padding: theme.spacing(0.5, 2),\n  }),\n  noValuesLabel: css({\n    paddingTop: theme.spacing(1),\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport { useCallback, useMemo, useState } from 'react';\nimport * as React from 'react';\n\nimport { Field, GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2, useTheme2 } from '../../../themes/ThemeContext';\nimport { Button } from '../../Button/Button';\nimport { ClickOutsideWrapper } from '../../ClickOutsideWrapper/ClickOutsideWrapper';\nimport { Label } from '../../Forms/Label';\nimport { IconButton } from '../../IconButton/IconButton';\nimport { Stack } from '../../Layout/Stack/Stack';\nimport { calculateUniqueFieldValues, getFilteredOptions, valuesToOptions } from '../utils';\n\nimport { FilterList } from './FilterList';\nimport { TableStyles } from './styles';\n\ninterface Props {\n  column: any;\n  tableStyles: TableStyles;\n  onClose: () => void;\n  field?: Field;\n  searchFilter: string;\n  setSearchFilter: (value: string) => void;\n  operator: SelectableValue<string>;\n  setOperator: (item: SelectableValue<string>) => void;\n}\n\nexport const FilterPopup = ({\n  column: { preFilteredRows, filterValue, setFilter },\n  onClose,\n  field,\n  searchFilter,\n  setSearchFilter,\n  operator,\n  setOperator,\n}: Props) => {\n  const theme = useTheme2();\n  const uniqueValues = useMemo(() => calculateUniqueFieldValues(preFilteredRows, field), [preFilteredRows, field]);\n  const options = useMemo(() => valuesToOptions(uniqueValues), [uniqueValues]);\n  const filteredOptions = useMemo(() => getFilteredOptions(options, filterValue), [options, filterValue]);\n  const [values, setValues] = useState<SelectableValue[]>(filteredOptions);\n  const [matchCase, setMatchCase] = useState(false);\n\n  const onCancel = useCallback((event?: React.MouseEvent) => onClose(), [onClose]);\n\n  const onFilter = useCallback(\n    (event: React.MouseEvent) => {\n      const filtered = values.length ? values : undefined;\n\n      setFilter(filtered);\n      onClose();\n    },\n    [setFilter, values, onClose]\n  );\n\n  const onClearFilter = useCallback(\n    (event: React.MouseEvent) => {\n      setFilter(undefined);\n      onClose();\n    },\n    [setFilter, onClose]\n  );\n\n  const clearFilterVisible = useMemo(() => filterValue !== undefined, [filterValue]);\n  const styles = useStyles2(getStyles);\n\n  return (\n    <ClickOutsideWrapper onClick={onCancel} useCapture={true}>\n      {/* This is just blocking click events from bubbeling and should not have a keyboard interaction. */}\n      {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */}\n      <div className={cx(styles.filterContainer)} onClick={stopPropagation}>\n        <Stack direction=\"column\" gap={3}>\n          <Stack direction=\"column\" gap={0.5}>\n            <Stack justifyContent=\"space-between\" alignItems=\"center\">\n              <Label className={styles.label}>\n                <Trans i18nKey=\"grafana-ui.table.filter-popup-heading\">Filter by values:</Trans>\n              </Label>\n              <IconButton\n                name=\"text-fields\"\n                tooltip={t('grafana-ui.table.filter-popup-match-case', 'Match case')}\n                style={{ color: matchCase ? theme.colors.text.link : theme.colors.text.disabled }}\n                onClick={() => {\n                  setMatchCase((s) => !s);\n                }}\n              />\n            </Stack>\n            <div className={cx(styles.listDivider)} />\n            <FilterList\n              onChange={setValues}\n              values={values}\n              options={options}\n              caseSensitive={matchCase}\n              showOperators={true}\n              searchFilter={searchFilter}\n              setSearchFilter={setSearchFilter}\n              operator={operator}\n              setOperator={setOperator}\n            />\n          </Stack>\n          <Stack gap={3}>\n            <Stack>\n              <Button size=\"sm\" onClick={onFilter}>\n                <Trans i18nKey=\"grafana-ui.table.filter-popup-apply\">Ok</Trans>\n              </Button>\n              <Button size=\"sm\" variant=\"secondary\" onClick={onCancel}>\n                <Trans i18nKey=\"grafana-ui.table.filter-popup-cancel\">Cancel</Trans>\n              </Button>\n            </Stack>\n            {clearFilterVisible && (\n              <Stack>\n                <Button fill=\"text\" size=\"sm\" onClick={onClearFilter}>\n                  <Trans i18nKey=\"grafana-ui.table.filter-popup-clear\">Clear filter</Trans>\n                </Button>\n              </Stack>\n            )}\n          </Stack>\n        </Stack>\n      </div>\n    </ClickOutsideWrapper>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  filterContainer: css({\n    label: 'filterContainer',\n    width: '100%',\n    minWidth: '250px',\n    height: '100%',\n    maxHeight: '400px',\n    backgroundColor: theme.colors.background.primary,\n    border: `1px solid ${theme.colors.border.weak}`,\n    padding: theme.spacing(2),\n    boxShadow: theme.shadows.z3,\n    borderRadius: theme.shape.radius.default,\n  }),\n  listDivider: css({\n    label: 'listDivider',\n    width: '100%',\n    borderTop: `1px solid ${theme.colors.border.medium}`,\n    padding: theme.spacing(0.5, 2),\n  }),\n  label: css({\n    marginBottom: 0,\n  }),\n});\n\nconst stopPropagation = (event: React.MouseEvent) => {\n  event.stopPropagation();\n};\n","import { css, cx } from '@emotion/css';\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Field, GrafanaTheme2, SelectableValue } from '@grafana/data';\n\nimport { Popover } from '../../../components/Tooltip/Popover';\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { Icon } from '../../Icon/Icon';\n\nimport { REGEX_OPERATOR } from './FilterList';\nimport { FilterPopup } from './FilterPopup';\nimport { TableStyles } from './styles';\n\ninterface Props {\n  column: any;\n  tableStyles: TableStyles;\n  field?: Field;\n}\n\nexport const Filter = ({ column, field, tableStyles }: Props) => {\n  const ref = useRef<HTMLButtonElement>(null);\n  const [isPopoverVisible, setPopoverVisible] = useState<boolean>(false);\n  const styles = useStyles2(getStyles);\n  const filterEnabled = useMemo(() => Boolean(column.filterValue), [column.filterValue]);\n  const onShowPopover = useCallback(() => setPopoverVisible(true), [setPopoverVisible]);\n  const onClosePopover = useCallback(() => setPopoverVisible(false), [setPopoverVisible]);\n  const [searchFilter, setSearchFilter] = useState('');\n  const [operator, setOperator] = useState<SelectableValue<string>>(REGEX_OPERATOR);\n\n  if (!field || !field.config.custom?.filterable) {\n    return null;\n  }\n  return (\n    <button\n      className={cx(tableStyles.headerFilter, filterEnabled ? styles.filterIconEnabled : styles.filterIconDisabled)}\n      ref={ref}\n      type=\"button\"\n      onClick={onShowPopover}\n    >\n      <Icon name=\"filter\" />\n      {isPopoverVisible && ref.current && (\n        <Popover\n          content={\n            <FilterPopup\n              column={column}\n              tableStyles={tableStyles}\n              field={field}\n              onClose={onClosePopover}\n              searchFilter={searchFilter}\n              setSearchFilter={setSearchFilter}\n              operator={operator}\n              setOperator={setOperator}\n            />\n          }\n          placement=\"bottom-start\"\n          referenceElement={ref.current}\n          show\n        />\n      )}\n    </button>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  filterIconEnabled: css({\n    label: 'filterIconEnabled',\n    color: theme.colors.primary.text,\n  }),\n  filterIconDisabled: css({\n    label: 'filterIconDisabled',\n    color: theme.colors.text.disabled,\n  }),\n});\n","import { HeaderGroup, Column } from 'react-table';\n\nimport { Field } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { getFieldTypeIcon } from '../../../types/icon';\nimport { Icon } from '../../Icon/Icon';\nimport { TableFieldOptions } from '../types';\n\nimport { Filter } from './Filter';\nimport { TableStyles } from './styles';\n\nexport interface HeaderRowProps {\n  headerGroups: HeaderGroup[];\n  showTypeIcons?: boolean;\n  tableStyles: TableStyles;\n}\n\nexport const HeaderRow = (props: HeaderRowProps) => {\n  const { headerGroups, showTypeIcons, tableStyles } = props;\n  const e2eSelectorsTable = selectors.components.Panels.Visualization.Table;\n\n  return (\n    <div role=\"rowgroup\" className={tableStyles.headerRow}>\n      {headerGroups.map((headerGroup: HeaderGroup) => {\n        const { key, ...headerGroupProps } = headerGroup.getHeaderGroupProps();\n        return (\n          <div\n            className={tableStyles.thead}\n            {...headerGroupProps}\n            key={key}\n            aria-label={e2eSelectorsTable.header}\n            role=\"row\"\n          >\n            {headerGroup.headers.map((column: Column, index: number) =>\n              renderHeaderCell(column, tableStyles, showTypeIcons)\n            )}\n          </div>\n        );\n      })}\n    </div>\n  );\n};\n\nfunction renderHeaderCell(column: any, tableStyles: TableStyles, showTypeIcons?: boolean) {\n  const { key, ...headerProps } = column.getHeaderProps();\n  const field: Field = column.field ?? null;\n  const tableFieldOptions: TableFieldOptions | undefined = field?.config.custom;\n\n  if (column.canResize) {\n    headerProps.style.userSelect = column.isResizing ? 'none' : 'auto'; // disables selecting text while resizing\n  }\n\n  headerProps.style.position = 'absolute';\n  headerProps.style.justifyContent = column.justifyContent;\n  headerProps.style.left = column.totalLeft;\n\n  let headerContent = column.render('Header');\n\n  let sortHeaderContent = column.canSort && (\n    <>\n      <button {...column.getSortByToggleProps()} className={tableStyles.headerCellLabel}>\n        {showTypeIcons && (\n          <Icon name={getFieldTypeIcon(field)} title={field?.type} size=\"sm\" className={tableStyles.typeIcon} />\n        )}\n        <div>{headerContent}</div>\n        {column.isSorted &&\n          (column.isSortedDesc ? (\n            <Icon size=\"lg\" name=\"arrow-down\" className={tableStyles.sortIcon} />\n          ) : (\n            <Icon name=\"arrow-up\" size=\"lg\" className={tableStyles.sortIcon} />\n          ))}\n      </button>\n      {column.canFilter && <Filter column={column} tableStyles={tableStyles} field={field} />}\n    </>\n  );\n  if (sortHeaderContent && tableFieldOptions?.headerComponent) {\n    sortHeaderContent = <tableFieldOptions.headerComponent field={field} defaultContent={sortHeaderContent} />;\n  } else if (tableFieldOptions?.headerComponent) {\n    headerContent = <tableFieldOptions.headerComponent field={field} defaultContent={headerContent} />;\n  }\n\n  return (\n    <div className={tableStyles.headerCell} key={key} {...headerProps} role=\"columnheader\">\n      {column.canSort && sortHeaderContent}\n      {!column.canSort && headerContent}\n      {!column.canSort && column.canFilter && <Filter column={column} tableStyles={tableStyles} field={field} />}\n      {column.canResize && <div {...column.getResizerProps()} className={tableStyles.resizeHandle} />}\n    </div>\n  );\n}\n","import { css, cx, keyframes } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\n/**\n * @internal\n */\nexport type LoadingIndicatorProps = {\n  loading: boolean;\n  onCancel: () => void;\n};\n\n/**\n * @internal\n */\nexport const LoadingIndicator = ({ onCancel, loading }: LoadingIndicatorProps) => {\n  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  const styles = useStyles2(getStyles);\n\n  if (!loading) {\n    return null;\n  }\n\n  return (\n    <Tooltip content={t('grafana-ui.panel-chrome.tooltip-cancel-loading', 'Cancel query')}>\n      <Icon\n        className={cx(styles.spin, { [styles.clickable]: !!onCancel })}\n        name={prefersReducedMotion ? 'hourglass' : 'sync'}\n        size=\"sm\"\n        onClick={onCancel}\n        data-testid={selectors.components.LoadingIndicator.icon}\n      />\n    </Tooltip>\n  );\n};\n\nconst spin = keyframes({\n  '0%': {\n    transform: 'rotate(0deg) scaleX(-1)', // scaleX flips the `sync` icon so arrows point the correct way\n  },\n  '100%': {\n    transform: 'rotate(359deg) scaleX(-1)',\n  },\n});\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    clickable: css({\n      cursor: 'pointer',\n    }),\n    spin: css({\n      [theme.transitions.handleMotion('no-preference')]: {\n        animation: `${spin} 3s linear infinite`,\n      },\n    }),\n  };\n};\n","import { useEffect, useState } from 'react';\nimport * as React from 'react';\n\ninterface Props {\n  children: React.ReactNode;\n  delay: number;\n}\n\n/**\n * Delay the rendering of the children by N amount of milliseconds\n */\nexport function DelayRender({ children, delay }: Props) {\n  const [shouldRender, setShouldRender] = useState(false);\n  useEffect(() => {\n    window.setTimeout(() => {\n      setShouldRender(true);\n    }, delay);\n  }, [children, delay]);\n\n  return <>{shouldRender ? children : null}</>;\n}\n","import React, { useCallback, useMemo } from 'react';\n\ninterface Point {\n  x: number;\n  y: number;\n}\ntype PointerOrMouseEvent = React.PointerEvent | React.MouseEvent | PointerEvent | MouseEvent;\ntype PointerDistanceSet = (evt: PointerOrMouseEvent) => void;\ntype PointerDistanceCheck = (evt: PointerOrMouseEvent, distance?: number) => boolean;\n\ninterface PointerDistance {\n  set: PointerDistanceSet;\n  check: PointerDistanceCheck;\n}\n\nexport function createPointerDistance(distance = 10): PointerDistance {\n  let initial = { x: 0, y: 0 };\n\n  const set: PointerDistanceSet = (evt) => {\n    initial = getPoint(evt);\n  };\n\n  const check: PointerDistanceCheck = (evt, overrideDistance = distance) =>\n    checkDistance(initial, getPoint(evt), overrideDistance);\n\n  return { set, check };\n}\n\nexport function usePointerDistance(distance = 10): PointerDistance {\n  const initial = React.useRef<Point>({ x: 0, y: 0 });\n\n  const set = useCallback<PointerDistance['set']>((evt) => {\n    initial.current = getPoint(evt);\n  }, []);\n\n  const check = useCallback<PointerDistance['check']>(\n    (evt, overrideDistance = distance) => checkDistance(initial.current, getPoint(evt), overrideDistance),\n    [distance]\n  );\n\n  return useMemo(() => ({ set, check }), [set, check]);\n}\n\nfunction getPoint(evt: PointerOrMouseEvent): Point {\n  return { x: evt.clientX, y: evt.clientY };\n}\n\nfunction checkDistance(point1: Point, point2: Point, distance: number): boolean {\n  return Math.hypot(point1.x - point2.x, point1.y - point2.y) > distance;\n}\n","import React, { createContext, useCallback, useContext } from 'react';\n\nexport interface ElementSelectionOnSelectOptions {\n  /** If specified, this will ignore the shift key press */\n  multi?: boolean;\n\n  /** If true, this will make sure the element is selected */\n  force?: boolean;\n}\n\n/** @alpha */\nexport interface ElementSelectionContextState {\n  /**\n   * Turn on selection mode & show selection state\n   */\n  enabled?: boolean;\n  /** List of currently selected elements */\n  selected: ElementSelectionContextItem[];\n  onSelect: (item: ElementSelectionContextItem, options: ElementSelectionOnSelectOptions) => void;\n  onClear: () => void;\n}\n\nexport interface ElementSelectionContextItem {\n  id: string;\n}\n\nexport const ElementSelectionContext = createContext<ElementSelectionContextState | undefined>(undefined);\n\nexport interface UseElementSelectionResult {\n  isSelected?: boolean;\n  isSelectable?: boolean;\n  onSelect?: (evt: React.MouseEvent, options?: ElementSelectionOnSelectOptions) => void;\n  onClear?: () => void;\n}\n\nexport function useElementSelection(id: string | undefined): UseElementSelectionResult {\n  if (!id) {\n    return {};\n  }\n\n  const context = useContext(ElementSelectionContext);\n  if (!context) {\n    return {};\n  }\n\n  const isSelected = context.selected.some((item) => item.id === id);\n  const onSelect = useCallback(\n    (evt: React.MouseEvent, options: ElementSelectionOnSelectOptions = {}) => {\n      if (!context.enabled) {\n        return;\n      }\n\n      // To prevent this click form clearing the selection\n      evt.stopPropagation();\n\n      // Prevent text selection caused by shift click\n      if (evt.shiftKey) {\n        evt.preventDefault();\n        window.getSelection()?.empty();\n      }\n\n      context.onSelect({ id }, { ...options, multi: options.multi ?? evt.shiftKey });\n    },\n    [context, id]\n  );\n\n  const onClear = useCallback(() => {\n    if (!context.enabled) {\n      return;\n    }\n\n    context.onClear();\n  }, [context]);\n\n  return { isSelected, onSelect, onClear, isSelectable: context.enabled };\n}\n","import { css } from '@emotion/css';\nimport {\n  FloatingFocusManager,\n  autoUpdate,\n  flip,\n  offset as floatingUIOffset,\n  shift,\n  useClick,\n  useDismiss,\n  useFloating,\n  useInteractions,\n} from '@floating-ui/react';\nimport { useCallback, useRef, useState } from 'react';\nimport * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { renderOrCallToRender } from '../../utils/reactUtils';\nimport { getPlacement } from '../../utils/tooltipUtils';\nimport { Portal } from '../Portal/Portal';\nimport { TooltipPlacement } from '../Tooltip/types';\n\nexport interface Props {\n  overlay: React.ReactElement | (() => React.ReactElement);\n  placement?: TooltipPlacement;\n  children: React.ReactElement;\n  /** Amount in pixels to nudge the dropdown vertically and horizontally, respectively. */\n  offset?: [number, number];\n  onVisibleChange?: (state: boolean) => void;\n}\n\nexport const Dropdown = React.memo(({ children, overlay, placement, offset, onVisibleChange }: Props) => {\n  const [show, setShow] = useState(false);\n  const transitionRef = useRef(null);\n\n  const handleOpenChange = useCallback(\n    (newState: boolean) => {\n      setShow(newState);\n      onVisibleChange?.(newState);\n    },\n    [onVisibleChange]\n  );\n\n  // the order of middleware is important!\n  const middleware = [\n    floatingUIOffset({\n      mainAxis: offset?.[0] ?? 8,\n      crossAxis: offset?.[1] ?? 0,\n    }),\n    flip({\n      fallbackAxisSideDirection: 'end',\n      // see https://floating-ui.com/docs/flip#combining-with-shift\n      crossAxis: false,\n      boundary: document.body,\n    }),\n    shift(),\n  ];\n\n  const { context, refs, floatingStyles } = useFloating({\n    open: show,\n    placement: getPlacement(placement),\n    onOpenChange: handleOpenChange,\n    middleware,\n    whileElementsMounted: autoUpdate,\n  });\n\n  const click = useClick(context);\n  const dismiss = useDismiss(context);\n  const { getReferenceProps, getFloatingProps } = useInteractions([dismiss, click]);\n\n  const animationDuration = 150;\n  const animationStyles = useStyles2(getStyles, animationDuration);\n\n  const onOverlayClicked = () => {\n    handleOpenChange(false);\n  };\n\n  const handleKeys = (event: React.KeyboardEvent) => {\n    if (event.key === 'Tab') {\n      handleOpenChange(false);\n    }\n  };\n\n  return (\n    <>\n      {React.cloneElement(children, {\n        ref: refs.setReference,\n        ...getReferenceProps(),\n      })}\n      {show && (\n        <Portal>\n          <FloatingFocusManager context={context}>\n            {/*\n              this is handling bubbled events from the inner overlay\n              see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-static-element-interactions.md#case-the-event-handler-is-only-being-used-to-capture-bubbled-events\n            */}\n            {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */}\n            <div ref={refs.setFloating} style={floatingStyles} onClick={onOverlayClicked} onKeyDown={handleKeys}>\n              <CSSTransition\n                nodeRef={transitionRef}\n                appear={true}\n                in={true}\n                timeout={{ appear: animationDuration, exit: 0, enter: 0 }}\n                classNames={animationStyles}\n              >\n                <div ref={transitionRef}>{renderOrCallToRender(overlay, { ...getFloatingProps() })}</div>\n              </CSSTransition>\n            </div>\n          </FloatingFocusManager>\n        </Portal>\n      )}\n    </>\n  );\n});\n\nDropdown.displayName = 'Dropdown';\n\nconst getStyles = (theme: GrafanaTheme2, duration: number) => {\n  return {\n    appear: css({\n      opacity: '0',\n      position: 'relative',\n      transformOrigin: 'top',\n      [theme.transitions.handleMotion('no-preference')]: {\n        transform: 'scaleY(0.5)',\n      },\n    }),\n    appearActive: css({\n      opacity: '1',\n      [theme.transitions.handleMotion('no-preference')]: {\n        transform: 'scaleY(1)',\n        transition: `transform ${duration}ms cubic-bezier(0.2, 0, 0.2, 1), opacity ${duration}ms cubic-bezier(0.2, 0, 0.2, 1)`,\n      },\n    }),\n  };\n};\n","import { cx } from '@emotion/css';\nimport { ReactElement, useCallback } from 'react';\n\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { Dropdown } from '../Dropdown/Dropdown';\nimport { ToolbarButton } from '../ToolbarButton/ToolbarButton';\nimport { TooltipPlacement } from '../Tooltip/types';\n\ninterface PanelMenuProps {\n  menu: ReactElement | (() => ReactElement);\n  menuButtonClass?: string;\n  dragClassCancel?: string;\n  title?: string;\n  placement?: TooltipPlacement;\n  offset?: [number, number];\n  onOpenMenu?: () => void;\n}\n\nexport function PanelMenu({\n  menu,\n  title,\n  placement = 'bottom',\n  offset,\n  dragClassCancel,\n  menuButtonClass,\n  onOpenMenu,\n}: PanelMenuProps) {\n  const testId = title ? selectors.components.Panels.Panel.menu(title) : `panel-menu-button`;\n\n  const handleVisibility = useCallback(\n    (show: boolean) => {\n      if (show && onOpenMenu) {\n        onOpenMenu();\n      }\n    },\n    [onOpenMenu]\n  );\n\n  return (\n    <Dropdown overlay={menu} placement={placement} offset={offset} onVisibleChange={handleVisibility}>\n      <ToolbarButton\n        aria-label={t('grafana-ui.panel-menu.label', 'Menu for panel {{ title }}', { title: title ?? 'Untitled' })}\n        title={t('grafana-ui.panel-menu.title', 'Menu')}\n        icon=\"ellipsis-v\"\n        iconSize=\"md\"\n        narrow\n        data-testid={testId}\n        className={cx(menuButtonClass, dragClassCancel)}\n      />\n    </Dropdown>\n  );\n}\n","import { css, cx } from '@emotion/css';\nimport { ReactElement, useCallback, useRef } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors as e2eSelectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\n\nimport { PanelMenu } from './PanelMenu';\n\ninterface Props {\n  children?: React.ReactNode;\n  menu?: ReactElement | (() => ReactElement);\n  title?: string;\n  offset?: number;\n  dragClass?: string;\n  onOpenMenu?: () => void;\n}\n\nexport function HoverWidget({ menu, title, dragClass, children, offset = -32, onOpenMenu }: Props) {\n  const styles = useStyles2(getStyles);\n  const draggableRef = useRef<HTMLDivElement>(null);\n  const selectors = e2eSelectors.components.Panels.Panel.HoverWidget;\n  // Capture the pointer to keep the widget visible while dragging\n  const onPointerDown = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n    draggableRef.current?.setPointerCapture(e.pointerId);\n  }, []);\n\n  const onPointerUp = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n    draggableRef.current?.releasePointerCapture(e.pointerId);\n  }, []);\n\n  if (children === undefined || React.Children.count(children) === 0) {\n    return null;\n  }\n\n  return (\n    <div className={cx(styles.container, 'show-on-hover')} style={{ top: offset }} data-testid={selectors.container}>\n      {dragClass && (\n        <div\n          className={cx(styles.square, styles.draggable, dragClass)}\n          onPointerDown={onPointerDown}\n          onPointerUp={onPointerUp}\n          ref={draggableRef}\n          data-testid={selectors.dragIcon}\n        >\n          <Icon name=\"expand-arrows\" className={styles.draggableIcon} />\n        </div>\n      )}\n      {children}\n      {menu && (\n        <PanelMenu\n          menu={menu}\n          title={title}\n          placement=\"bottom\"\n          menuButtonClass={styles.menuButton}\n          onOpenMenu={onOpenMenu}\n        />\n      )}\n    </div>\n  );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n  return {\n    container: css({\n      label: 'hover-container-widget',\n      [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n        transition: `all .1s linear`,\n      },\n      display: 'flex',\n      position: 'absolute',\n      zIndex: 1,\n      right: 0,\n      boxSizing: 'content-box',\n      alignItems: 'center',\n      background: theme.colors.background.secondary,\n      color: theme.colors.text.primary,\n      border: `1px solid ${theme.colors.border.weak}`,\n      borderRadius: theme.shape.radius.default,\n      height: theme.spacing(4),\n      boxShadow: theme.shadows.z1,\n    }),\n    square: css({\n      display: 'flex',\n      justifyContent: 'center',\n      alignItems: 'center',\n      width: theme.spacing(4),\n      height: '100%',\n    }),\n    draggable: css({\n      cursor: 'move',\n      // mobile do not support draggable panels\n      [theme.breakpoints.down('md')]: {\n        display: 'none',\n      },\n    }),\n    menuButton: css({\n      // Background and border are overriden when topnav toggle is disabled\n      background: 'inherit',\n      border: 'none',\n      '&:hover': {\n        background: theme.colors.secondary.main,\n      },\n    }),\n    draggableIcon: css({\n      transform: 'rotate(45deg)',\n      color: theme.colors.text.secondary,\n      '&:hover': {\n        color: theme.colors.text.primary,\n      },\n    }),\n  };\n}\n","import { cx, css } from '@emotion/css';\nimport { forwardRef } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, LinkModel, LinkTarget } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles, getMouseFocusStyles } from '../../themes/mixins';\nimport { Button } from '../Button/Button';\n\ntype TitleItemProps = {\n  className?: string;\n  children: React.ReactNode;\n  onClick?: LinkModel['onClick'];\n  href?: string;\n  target?: LinkTarget;\n  title?: string;\n};\n\ntype TitleItemElement = HTMLAnchorElement & HTMLButtonElement;\n\nexport const TitleItem = forwardRef<TitleItemElement, TitleItemProps>(\n  ({ className, children, href, onClick, target, title, ...rest }, ref) => {\n    const styles = useStyles2(getStyles);\n\n    if (href) {\n      return (\n        <a\n          ref={ref}\n          href={href}\n          onClick={onClick}\n          target={target}\n          title={title}\n          className={cx(styles.linkItem, className)}\n          {...rest}\n        >\n          {children}\n        </a>\n      );\n    } else if (onClick) {\n      return (\n        <Button ref={ref} className={cx(styles.item, className)} variant=\"secondary\" fill=\"text\" onClick={onClick}>\n          {children}\n        </Button>\n      );\n    } else {\n      return (\n        <span ref={ref} className={cx(styles.item, className)} {...rest}>\n          {children}\n        </span>\n      );\n    }\n  }\n);\n\nTitleItem.displayName = 'TitleItem';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const item = css({\n    color: `${theme.colors.text.secondary}`,\n    label: 'panel-header-item',\n    cursor: 'auto',\n    border: 'none',\n    borderRadius: `${theme.shape.radius.default}`,\n    padding: `${theme.spacing(0, 1)}`,\n    height: `${theme.spacing(theme.components.panel.headerHeight)}`,\n    display: 'flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n\n    '&:focus, &:focus-visible': {\n      ...getFocusStyles(theme),\n      zIndex: 1,\n    },\n    '&: focus:not(:focus-visible)': getMouseFocusStyles(theme),\n\n    '&:hover ': {\n      boxShadow: `${theme.shadows.z1}`,\n      background: `${theme.colors.background.secondary}`,\n      color: `${theme.colors.text.primary}`,\n    },\n  });\n\n  return {\n    item,\n    linkItem: cx(item, css({ cursor: 'pointer' })),\n  };\n};\n","import { css, cx } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\nimport { TitleItem } from './TitleItem';\n\ninterface Props {\n  description: string | (() => string);\n  className?: string;\n}\n\nexport function PanelDescription({ description, className }: Props) {\n  const styles = useStyles2(getStyles);\n\n  const getDescriptionContent = (): JSX.Element => {\n    // description\n    const panelDescription = typeof description === 'function' ? description() : description;\n\n    return (\n      <div className=\"panel-info-content markdown-html\">\n        <div dangerouslySetInnerHTML={{ __html: panelDescription }} />\n      </div>\n    );\n  };\n\n  return description !== '' ? (\n    <Tooltip interactive content={getDescriptionContent}>\n      <TitleItem className={cx(className, styles.description)}>\n        <Icon name=\"info-circle\" size=\"md\" />\n      </TitleItem>\n    </Tooltip>\n  ) : null;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    description: css({\n      code: {\n        whiteSpace: 'normal',\n        wordWrap: 'break-word',\n      },\n\n      'pre > code': {\n        display: 'block',\n      },\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { ToolbarButton } from '../ToolbarButton/ToolbarButton';\n\nexport interface Props {\n  message?: string;\n  onClick?: (e: React.SyntheticEvent) => void;\n  ariaLabel?: string;\n}\n\nexport function PanelStatus({ message, onClick, ariaLabel = 'status' }: Props) {\n  const styles = useStyles2(getStyles);\n\n  return (\n    <ToolbarButton\n      className={styles.buttonStyles}\n      onClick={onClick}\n      variant={'destructive'}\n      icon=\"exclamation-triangle\"\n      iconSize=\"md\"\n      tooltip={message || ''}\n      aria-label={ariaLabel}\n      data-testid={selectors.components.Panels.Panel.status('error')}\n    />\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const { headerHeight, padding } = theme.components.panel;\n\n  return {\n    buttonStyles: css({\n      label: 'panel-header-state-button',\n      display: 'flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n      padding: theme.spacing(padding),\n      width: theme.spacing(headerHeight),\n      height: theme.spacing(headerHeight),\n      borderRadius: theme.shape.radius.default,\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { CSSProperties, ReactElement, ReactNode, useId, useState } from 'react';\nimport * as React from 'react';\nimport { useMeasure, useToggle } from 'react-use';\n\nimport { GrafanaTheme2, LoadingState } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { DelayRender } from '../../utils/DelayRender';\nimport { usePointerDistance } from '../../utils/usePointerDistance';\nimport { useElementSelection } from '../ElementSelectionContext/ElementSelectionContext';\nimport { Icon } from '../Icon/Icon';\nimport { LoadingBar } from '../LoadingBar/LoadingBar';\nimport { Text } from '../Text/Text';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\nimport { HoverWidget } from './HoverWidget';\nimport { PanelDescription } from './PanelDescription';\nimport { PanelMenu } from './PanelMenu';\nimport { PanelStatus } from './PanelStatus';\nimport { TitleItem } from './TitleItem';\n\n/**\n * @internal\n */\nexport type PanelChromeProps = (AutoSize | FixedDimensions) & (Collapsible | HoverHeader);\n\ninterface BaseProps {\n  padding?: PanelPadding;\n  title?: string | React.ReactElement;\n  description?: string | (() => string);\n  titleItems?: ReactNode;\n  menu?: ReactElement | (() => ReactElement);\n  dragClass?: string;\n  dragClassCancel?: string;\n  onDragStart?: (e: React.PointerEvent) => void;\n  selectionId?: string;\n  /**\n   * Use only to indicate loading or streaming data in the panel.\n   * Any other values of loadingState are ignored.\n   */\n  loadingState?: LoadingState;\n  /**\n   * Used to display status message (used for panel errors currently)\n   */\n  statusMessage?: string;\n  /**\n   * Handle opening error details view (like inspect / error tab)\n   */\n  statusMessageOnClick?: (e: React.SyntheticEvent) => void;\n  /**\n   * @deprecated use `actions' instead\n   **/\n  leftItems?: ReactNode[];\n  actions?: ReactNode;\n  displayMode?: 'default' | 'transparent';\n  onCancelQuery?: () => void;\n  /**\n   * callback when opening the panel menu\n   */\n  onOpenMenu?: () => void;\n  /**\n   * Used for setting panel attention\n   */\n  onFocus?: () => void;\n  /**\n   * Debounce the event handler, if possible\n   */\n  onMouseMove?: () => void;\n  onMouseEnter?: () => void;\n  /**\n   * If true, the VizPanelMenu will always be visible in the panel header. Defaults to false.\n   */\n  showMenuAlways?: boolean;\n}\n\ninterface FixedDimensions extends BaseProps {\n  width: number;\n  height: number;\n  children: (innerWidth: number, innerHeight: number) => ReactNode;\n}\n\ninterface AutoSize extends BaseProps {\n  width?: never;\n  height?: never;\n  children: ReactNode;\n}\n\ninterface Collapsible {\n  collapsible: boolean;\n  collapsed?: boolean;\n  /**\n   * callback when collapsing or expanding the panel\n   */\n  onToggleCollapse?: (collapsed: boolean) => void;\n  hoverHeader?: never;\n  hoverHeaderOffset?: never;\n}\n\ninterface HoverHeader {\n  collapsible?: never;\n  collapsed?: never;\n  showMenuAlways?: never;\n  onToggleCollapse?: never;\n  hoverHeader?: boolean;\n  hoverHeaderOffset?: number;\n}\n\n/**\n * @internal\n */\nexport type PanelPadding = 'none' | 'md';\n\n/**\n * @internal\n */\nexport function PanelChrome({\n  width,\n  height,\n  children,\n  padding = 'md',\n  title = '',\n  description = '',\n  displayMode = 'default',\n  titleItems,\n  menu,\n  dragClass,\n  dragClassCancel,\n  hoverHeader = false,\n  hoverHeaderOffset,\n  loadingState,\n  statusMessage,\n  statusMessageOnClick,\n  leftItems,\n  actions,\n  selectionId,\n  onCancelQuery,\n  onOpenMenu,\n  collapsible = false,\n  collapsed,\n  onToggleCollapse,\n  onFocus,\n  onMouseMove,\n  onMouseEnter,\n  onDragStart,\n  showMenuAlways = false,\n}: PanelChromeProps) {\n  const theme = useTheme2();\n  const styles = useStyles2(getStyles);\n  const panelContentId = useId();\n  const panelTitleId = useId().replace(/:/g, '_');\n  const { isSelected, onSelect, isSelectable } = useElementSelection(selectionId);\n  const pointerDistance = usePointerDistance();\n\n  const hasHeader = !hoverHeader;\n\n  const [isOpen, toggleOpen] = useToggle(true);\n\n  // Highlight the full panel when hovering over header\n  const [selectableHighlight, setSelectableHighlight] = useState(false);\n  const onHeaderEnter = React.useCallback(() => setSelectableHighlight(true), []);\n  const onHeaderLeave = React.useCallback(() => setSelectableHighlight(false), []);\n\n  // if collapsed is not defined, then component is uncontrolled and state is managed internally\n  if (collapsed === undefined) {\n    collapsed = !isOpen;\n  }\n\n  // hover menu is only shown on hover when not on touch devices\n  const showOnHoverClass = showMenuAlways ? 'always-show' : 'show-on-hover';\n  const isPanelTransparent = displayMode === 'transparent';\n\n  const headerHeight = getHeaderHeight(theme, hasHeader);\n  const { contentStyle, innerWidth, innerHeight } = getContentStyle(\n    padding,\n    theme,\n    headerHeight,\n    collapsed,\n    height,\n    width\n  );\n\n  const headerStyles: CSSProperties = {\n    height: headerHeight,\n    cursor: dragClass ? 'move' : 'auto',\n  };\n\n  const containerStyles: CSSProperties = { width, height: collapsed ? undefined : height };\n  const [ref, { width: loadingBarWidth }] = useMeasure<HTMLDivElement>();\n\n  /** Old property name now maps to actions */\n  if (leftItems) {\n    actions = leftItems;\n  }\n\n  const testid = typeof title === 'string' ? selectors.components.Panels.Panel.title(title) : 'Panel';\n\n  // Handle drag & selection events\n  // Mainly the tricky bit of differentiating between dragging and selecting\n  const onPointerUp = React.useCallback(\n    (evt: React.PointerEvent) => {\n      if (\n        pointerDistance.check(evt) ||\n        (dragClassCancel && evt.target instanceof Element && evt.target.closest(`.${dragClassCancel}`))\n      ) {\n        return;\n      }\n\n      // setTimeout is needed here because onSelect stops the event propagation\n      // By doing so, the event won't get to the document and drag will never be stopped\n      setTimeout(() => onSelect?.(evt));\n    },\n    [dragClassCancel, onSelect, pointerDistance]\n  );\n\n  const onPointerDown = React.useCallback(\n    (evt: React.PointerEvent) => {\n      evt.stopPropagation();\n\n      pointerDistance.set(evt);\n\n      onDragStart?.(evt);\n    },\n    [pointerDistance, onDragStart]\n  );\n\n  const onContentPointerDown = React.useCallback(\n    (evt: React.PointerEvent) => {\n      // Ignore clicks inside buttons, links, canvas and svg elments\n      // This does prevent a clicks inside a graphs from selecting panel as there is normal div above the canvas element that intercepts the click\n      if (evt.target instanceof Element && evt.target.closest('button,a,canvas,svg')) {\n        return;\n      }\n\n      onSelect?.(evt);\n    },\n    [onSelect]\n  );\n\n  const headerContent = (\n    <>\n      {/* Non collapsible title */}\n      {!collapsible && title && (\n        <div className={styles.title}>\n          <Text\n            element=\"h2\"\n            variant=\"h6\"\n            truncate\n            title={typeof title === 'string' ? title : undefined}\n            id={panelTitleId}\n          >\n            {title}\n          </Text>\n        </div>\n      )}\n\n      {/* Collapsible title */}\n      {collapsible && (\n        <div className={styles.title}>\n          <Text element=\"h2\" variant=\"h6\">\n            <button\n              type=\"button\"\n              className={styles.clearButtonStyles}\n              onClick={() => {\n                toggleOpen();\n                if (onToggleCollapse) {\n                  onToggleCollapse(!collapsed);\n                }\n              }}\n              aria-expanded={!collapsed}\n              aria-controls={!collapsed ? panelContentId : undefined}\n            >\n              <Icon\n                name={!collapsed ? 'angle-down' : 'angle-right'}\n                aria-hidden={!!title}\n                aria-label={\n                  !title ? t('grafana-ui.panel-chrome.aria-label-toggle-collapse', 'toggle collapse panel') : undefined\n                }\n              />\n              <Text variant=\"h6\" truncate id={panelTitleId}>\n                {title}\n              </Text>\n            </button>\n          </Text>\n        </div>\n      )}\n\n      <div className={cx(styles.titleItems, dragClassCancel)} data-testid=\"title-items-container\">\n        <PanelDescription description={description} className={dragClassCancel} />\n        {titleItems}\n      </div>\n      {loadingState === LoadingState.Streaming && (\n        <Tooltip\n          content={\n            onCancelQuery\n              ? t('grafana-ui.panel-chrome.tooltip-stop-streaming', 'Stop streaming')\n              : t('grafana-ui.panel-chrome.tooltip-streaming', 'Streaming')\n          }\n        >\n          <TitleItem className={dragClassCancel} data-testid=\"panel-streaming\" onClick={onCancelQuery}>\n            <Icon name=\"circle-mono\" size=\"md\" className={styles.streaming} />\n          </TitleItem>\n        </Tooltip>\n      )}\n      {loadingState === LoadingState.Loading && onCancelQuery && (\n        <DelayRender delay={2000}>\n          <Tooltip content={t('grafana-ui.panel-chrome.tooltip-cancel', 'Cancel query')}>\n            <TitleItem\n              className={cx(dragClassCancel, styles.pointer)}\n              data-testid=\"panel-cancel-query\"\n              onClick={onCancelQuery}\n            >\n              <Icon name=\"sync-slash\" size=\"md\" />\n            </TitleItem>\n          </Tooltip>\n        </DelayRender>\n      )}\n      <div className={styles.rightAligned}>\n        {actions && <div className={styles.rightActions}>{itemsRenderer(actions, (item) => item)}</div>}\n      </div>\n    </>\n  );\n\n  return (\n    // tabIndex={0} is needed for keyboard accessibility in the plot area\n    <section\n      className={cx(\n        styles.container,\n        isPanelTransparent && styles.transparentContainer,\n        isSelected && 'dashboard-selected-element',\n        !isSelected && isSelectable && selectableHighlight && 'dashboard-selectable-element'\n      )}\n      style={containerStyles}\n      aria-labelledby={!!title ? panelTitleId : undefined}\n      data-testid={testid}\n      tabIndex={0} // eslint-disable-line jsx-a11y/no-noninteractive-tabindex\n      onFocus={onFocus}\n      onMouseMove={onMouseMove}\n      onMouseEnter={onMouseEnter}\n      ref={ref}\n    >\n      <div className={styles.loadingBarContainer}>\n        {loadingState === LoadingState.Loading ? (\n          <LoadingBar\n            width={loadingBarWidth}\n            ariaLabel={t('grafana-ui.panel-chrome.ariaLabel-panel-loading', 'Panel loading bar')}\n          />\n        ) : null}\n      </div>\n\n      {hoverHeader && (\n        <>\n          <HoverWidget\n            menu={menu}\n            title={typeof title === 'string' ? title : undefined}\n            offset={hoverHeaderOffset}\n            dragClass={dragClass}\n            onOpenMenu={onOpenMenu}\n          >\n            {headerContent}\n          </HoverWidget>\n\n          {statusMessage && (\n            <div className={styles.errorContainerFloating}>\n              <PanelStatus\n                message={statusMessage}\n                onClick={statusMessageOnClick}\n                ariaLabel={t('grafana-ui.panel-chrome.ariaLabel-panel-status', 'Panel status')}\n              />\n            </div>\n          )}\n        </>\n      )}\n\n      {hasHeader && (\n        <div\n          className={cx(styles.headerContainer, dragClass)}\n          style={headerStyles}\n          data-testid={selectors.components.Panels.Panel.headerContainer}\n          onPointerDown={onPointerDown}\n          onMouseEnter={isSelectable ? onHeaderEnter : undefined}\n          onMouseLeave={isSelectable ? onHeaderLeave : undefined}\n          onPointerUp={onPointerUp}\n        >\n          {statusMessage && (\n            <div className={dragClassCancel}>\n              <PanelStatus\n                message={statusMessage}\n                onClick={statusMessageOnClick}\n                ariaLabel={t('grafana-ui.panel-chrome.ariaLabel-panel-status', 'Panel status')}\n              />\n            </div>\n          )}\n\n          {headerContent}\n\n          {menu && (\n            <PanelMenu\n              menu={menu}\n              title={typeof title === 'string' ? title : undefined}\n              placement=\"bottom-end\"\n              menuButtonClass={cx(styles.menuItem, dragClassCancel, showOnHoverClass)}\n              onOpenMenu={onOpenMenu}\n            />\n          )}\n        </div>\n      )}\n\n      {!collapsed && (\n        <div\n          id={panelContentId}\n          data-testid={selectors.components.Panels.Panel.content}\n          className={cx(styles.content, height === undefined && styles.containNone)}\n          style={contentStyle}\n          onPointerDown={onContentPointerDown}\n        >\n          {typeof children === 'function' ? children(innerWidth, innerHeight) : children}\n        </div>\n      )}\n    </section>\n  );\n}\n\nconst itemsRenderer = (items: ReactNode[] | ReactNode, renderer: (items: ReactNode[]) => ReactNode): ReactNode => {\n  const toRender = React.Children.toArray(items).filter(Boolean);\n  return toRender.length > 0 ? renderer(toRender) : null;\n};\n\nconst getHeaderHeight = (theme: GrafanaTheme2, hasHeader: boolean) => {\n  if (hasHeader) {\n    return theme.spacing.gridSize * theme.components.panel.headerHeight;\n  }\n\n  return 0;\n};\n\nconst getContentStyle = (\n  padding: string,\n  theme: GrafanaTheme2,\n  headerHeight: number,\n  collapsed: boolean,\n  height?: number,\n  width?: number\n) => {\n  const chromePadding = (padding === 'md' ? theme.components.panel.padding : 0) * theme.spacing.gridSize;\n\n  const panelPadding = chromePadding * 2;\n  const panelBorder = 1 * 2;\n\n  let innerWidth = 0;\n  if (width) {\n    innerWidth = width - panelPadding - panelBorder;\n  }\n\n  let innerHeight = 0;\n  if (height) {\n    innerHeight = height - headerHeight - panelPadding - panelBorder;\n  }\n\n  if (collapsed) {\n    innerHeight = headerHeight;\n  }\n\n  const contentStyle: CSSProperties = {\n    padding: chromePadding,\n  };\n\n  return { contentStyle, innerWidth, innerHeight };\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const { background, borderColor, padding } = theme.components.panel;\n\n  return {\n    container: css({\n      label: 'panel-container',\n      backgroundColor: background,\n      border: `1px solid ${borderColor}`,\n      position: 'relative',\n      borderRadius: theme.shape.radius.default,\n      height: '100%',\n      display: 'flex',\n      flexDirection: 'column',\n\n      '.always-show': {\n        background: 'none',\n        '&:focus-visible, &:hover': {\n          background: theme.colors.secondary.shade,\n        },\n      },\n\n      '.show-on-hover': {\n        opacity: '0',\n        visibility: 'hidden',\n      },\n\n      '&:focus-visible, &:hover': {\n        // only show menu icon on hover or focused panel\n        '.show-on-hover': {\n          opacity: '1',\n          visibility: 'visible',\n        },\n      },\n\n      '&:focus-visible': getFocusStyles(theme),\n\n      // The not:(:focus) clause is so that this rule is only applied when decendants are focused (important otherwise the hover header is visible when panel is clicked).\n      '&:focus-within:not(:focus)': {\n        '.show-on-hover': {\n          visibility: 'visible',\n          opacity: '1',\n        },\n      },\n    }),\n    transparentContainer: css({\n      label: 'panel-transparent-container',\n      backgroundColor: 'transparent',\n      border: '1px solid transparent',\n      boxSizing: 'border-box',\n      '&:hover': {\n        border: `1px solid ${borderColor}`,\n      },\n    }),\n    loadingBarContainer: css({\n      label: 'panel-loading-bar-container',\n      position: 'absolute',\n      top: 0,\n      width: '100%',\n      // this is to force the loading bar container to create a new stacking context\n      // otherwise, in webkit browsers on windows/linux, the aliasing of panel text changes when the loading bar is shown\n      // see https://github.com/grafana/grafana/issues/88104\n      zIndex: 1,\n    }),\n    containNone: css({\n      contain: 'none',\n    }),\n    content: css({\n      label: 'panel-content',\n      flexGrow: 1,\n      contain: 'size layout',\n    }),\n    headerContainer: css({\n      label: 'panel-header',\n      display: 'flex',\n      alignItems: 'center',\n    }),\n    pointer: css({\n      cursor: 'pointer',\n    }),\n    streaming: css({\n      label: 'panel-streaming',\n      marginRight: 0,\n      color: theme.colors.success.text,\n\n      '&:hover': {\n        color: theme.colors.success.text,\n      },\n    }),\n    title: css({\n      label: 'panel-title',\n      display: 'flex',\n      padding: theme.spacing(0, padding),\n      minWidth: 0,\n      '& > h2': {\n        minWidth: 0,\n      },\n    }),\n    items: css({\n      display: 'flex',\n    }),\n    item: css({\n      display: 'flex',\n      justifyContent: 'center',\n      alignItems: 'center',\n    }),\n    hiddenMenu: css({\n      visibility: 'hidden',\n    }),\n    menuItem: css({\n      label: 'panel-menu',\n      border: 'none',\n      background: theme.colors.secondary.main,\n      '&:hover': {\n        background: theme.colors.secondary.shade,\n      },\n    }),\n    errorContainerFloating: css({\n      label: 'error-container',\n      position: 'absolute',\n      left: 0,\n      top: 0,\n      zIndex: 1,\n    }),\n    rightActions: css({\n      display: 'flex',\n      padding: theme.spacing(0, padding),\n      gap: theme.spacing(1),\n    }),\n    rightAligned: css({\n      label: 'right-aligned-container',\n      marginLeft: 'auto',\n      display: 'flex',\n      alignItems: 'center',\n    }),\n    titleItems: css({\n      display: 'flex',\n      height: '100%',\n    }),\n    clearButtonStyles: css({\n      alignItems: 'center',\n      display: 'flex',\n      gap: theme.spacing(0.5),\n      background: 'transparent',\n      border: 'none',\n      padding: 0,\n      maxWidth: '100%',\n    }),\n  };\n};\n","import { createContext, useContext } from 'react';\n\nimport {\n  EventBusSrv,\n  EventBus,\n  DashboardCursorSync,\n  AnnotationEventUIModel,\n  ThresholdsConfig,\n  CoreApp,\n  DataFrame,\n  DataLinkPostProcessor,\n} from '@grafana/data';\n\nimport { AdHocFilterItem } from '../Table/types';\n\nimport { OnSelectRangeCallback, SeriesVisibilityChangeMode } from './types';\n\n/** @alpha */\nexport interface PanelContext {\n  /** Identifier for the events scope */\n  eventsScope: string;\n  eventBus: EventBus;\n\n  /** Dashboard panels sync */\n  sync?: () => DashboardCursorSync;\n\n  /** Information on what the outer container is */\n  app?: CoreApp | 'string';\n\n  /**\n   * Called when a component wants to change the color for a series\n   *\n   * @alpha -- experimental\n   */\n  onSeriesColorChange?: (label: string, color: string) => void;\n\n  onToggleSeriesVisibility?: (label: string, mode: SeriesVisibilityChangeMode) => void;\n\n  canAddAnnotations?: () => boolean;\n  canEditAnnotations?: (dashboardUID?: string) => boolean;\n  canDeleteAnnotations?: (dashboardUID?: string) => boolean;\n  canExecuteActions?: () => boolean;\n  onAnnotationCreate?: (annotation: AnnotationEventUIModel) => void;\n  onAnnotationUpdate?: (annotation: AnnotationEventUIModel) => void;\n  onAnnotationDelete?: (id: string) => void;\n\n  /**\n   * Called when a user selects an area on the panel, if defined will override the default behavior of the panel,\n   * which is to update the time range\n   */\n  onSelectRange?: OnSelectRangeCallback;\n\n  /**\n   * Used from visualizations like Table to add ad-hoc filters from cell values\n   */\n  onAddAdHocFilter?: (item: AdHocFilterItem) => void;\n\n  /**\n   * Enables modifying thresholds directly from the panel\n   *\n   * @alpha -- experimental\n   */\n  canEditThresholds?: boolean;\n\n  /**\n   * Shows threshold indicators on the right-hand side of the panel\n   *\n   * @alpha -- experimental\n   */\n  showThresholds?: boolean;\n\n  /**\n   * Called when a panel wants to change default thresholds configuration\n   *\n   * @alpha -- experimental\n   */\n  onThresholdsChange?: (thresholds: ThresholdsConfig) => void;\n\n  /** For instance state that can be shared between panel & options UI  */\n  instanceState?: any;\n\n  /** Update instance state, this is only supported in dashboard panel context currently */\n  onInstanceStateChange?: (state: any) => void;\n\n  /**\n   * Called when a panel is changing the sort order of the legends.\n   */\n  onToggleLegendSort?: (sortBy: string) => void;\n\n  /**\n   * Optional, only some contexts support this. This action can be cancelled by user which will result\n   * in a the Promise resolving to a false value.\n   */\n  onUpdateData?: (frames: DataFrame[]) => Promise<boolean>;\n\n  /**\n   * Optional supplier for internal data links. If not provided a link pointing to Explore will be generated.\n   * @internal\n   */\n  dataLinkPostProcessor?: DataLinkPostProcessor;\n}\n\nexport const PanelContextRoot = createContext<PanelContext>({\n  eventsScope: 'global',\n  eventBus: new EventBusSrv(),\n});\n\n/**\n * @alpha\n */\nexport const PanelContextProvider = PanelContextRoot.Provider;\n\n/**\n * @alpha\n */\nexport const usePanelContext = () => useContext(PanelContextRoot);\n","/**\n * Mode to describe if a legend is isolated/selected or being appended to an existing\n * series selection.\n * @alpha\n */\n\nexport enum SeriesVisibilityChangeMode {\n  ToggleSelection = 'select',\n  AppendToSelection = 'append',\n}\n\nexport type OnSelectRangeCallback = (selections: RangeSelection2D[]) => void;\n\nexport interface RangeSelection1D {\n  from: number;\n  to: number;\n}\n\nexport interface RangeSelection2D {\n  x?: RangeSelection1D;\n  y?: RangeSelection1D;\n}\n","import * as React from 'react';\n\nimport { LoadingIndicator } from './LoadingIndicator';\nimport { PanelChrome as PanelChromeComponent, PanelChromeProps } from './PanelChrome';\nimport { TitleItem } from './TitleItem';\n\n/**\n * @internal\n */\nexport type { PanelChromeProps, PanelPadding } from './PanelChrome';\n\n/**\n * @internal\n */\nexport interface PanelChromeType extends React.FC<PanelChromeProps> {\n  LoadingIndicator: typeof LoadingIndicator;\n  TitleItem: typeof TitleItem;\n}\n\n/**\n * @internal\n */\nexport const PanelChrome = PanelChromeComponent as PanelChromeType;\nPanelChrome.LoadingIndicator = LoadingIndicator;\nPanelChrome.TitleItem = TitleItem;\n\n/**\n * Exporting the components for extensibility and since it is a good practice\n * according to the api-extractor.\n */\nexport {\n  LoadingIndicator as PanelChromeLoadingIndicator,\n  type LoadingIndicatorProps as PanelChromeLoadingIndicatorProps,\n} from './LoadingIndicator';\n\nexport { PanelDescription } from './PanelDescription';\n\nexport { usePanelContext, PanelContextProvider, type PanelContext, PanelContextRoot } from './PanelContext';\n\nexport * from './types';\n","import { Cell } from 'react-table';\n\nimport { TimeRange, DataFrame, InterpolateFunction } from '@grafana/data';\n\nimport { TableStyles } from '../TableRT/styles';\nimport { GetActionsFunction, GrafanaTableColumn, TableFilterActionCallback, TableInspectCellCallback } from '../types';\n\nexport interface Props {\n  cell: Cell;\n  tableStyles: TableStyles;\n  onCellFilterAdded?: TableFilterActionCallback;\n  columnIndex: number;\n  columnCount: number;\n  timeRange?: TimeRange;\n  userProps?: object;\n  frame: DataFrame;\n  rowStyled?: boolean;\n  rowExpanded?: boolean;\n  textWrapped?: boolean;\n  height?: number;\n  getActions?: GetActionsFunction;\n  replaceVariables?: InterpolateFunction;\n  setInspectCell?: TableInspectCellCallback;\n}\n\nexport const TableCell = ({\n  cell,\n  tableStyles,\n  onCellFilterAdded,\n  timeRange,\n  userProps,\n  frame,\n  rowStyled,\n  rowExpanded,\n  textWrapped,\n  height,\n  getActions,\n  replaceVariables,\n  setInspectCell,\n}: Props) => {\n  const cellProps = cell.getCellProps();\n  const field = (cell.column as unknown as GrafanaTableColumn).field;\n\n  if (!field?.display) {\n    return null;\n  }\n\n  if (cellProps.style) {\n    cellProps.style.wordBreak = 'break-word';\n    cellProps.style.minWidth = cellProps.style.width;\n    const justifyContent = (cell.column as any).justifyContent;\n\n    if (justifyContent === 'flex-end' && !field.config.unit) {\n      // justify-content flex-end is not compatible with cellLink overflow; use direction instead\n      cellProps.style.textAlign = 'right';\n      cellProps.style.direction = 'rtl';\n      cellProps.style.unicodeBidi = 'plaintext';\n    } else {\n      cellProps.style.justifyContent = justifyContent;\n    }\n  }\n\n  let innerWidth = (typeof cell.column.width === 'number' ? cell.column.width : 24) - tableStyles.cellPadding * 2;\n\n  const actions = getActions ? getActions(frame, field, cell.row.index, replaceVariables) : [];\n\n  return (\n    <>\n      {cell.render('Cell', {\n        field,\n        tableStyles,\n        onCellFilterAdded,\n        cellProps,\n        innerWidth,\n        timeRange,\n        userProps,\n        frame,\n        rowStyled,\n        rowExpanded,\n        textWrapped,\n        height,\n        actions,\n        setInspectCell,\n      })}\n    </>\n  );\n};\n","import { css } from '@emotion/css';\nimport { CSSProperties } from 'react';\nimport * as React from 'react';\n\nimport { DataFrame, Field, GrafanaTheme2 } from '@grafana/data';\nimport { TableCellHeight } from '@grafana/schema';\n\nimport { useStyles2, useTheme2 } from '../../../themes/ThemeContext';\nimport { EXPANDER_WIDTH } from '../utils';\n\nimport { Table } from './Table';\nimport { TableStyles } from './styles';\n\nexport interface Props {\n  nestedData: Field;\n  tableStyles: TableStyles;\n  rowIndex: number;\n  width: number;\n  cellHeight: TableCellHeight;\n}\n\nexport function ExpandedRow({ tableStyles, nestedData, rowIndex, width, cellHeight }: Props) {\n  const frames: DataFrame[][] = nestedData.values;\n  const subTables: React.ReactNode[] = [];\n  const theme = useTheme2();\n  const styles = useStyles2(getStyles);\n\n  let top = tableStyles.rowHeight + theme.spacing.gridSize; // initial height for row that expands above sub tables + 1 grid unit spacing\n\n  frames[rowIndex].forEach((nf: DataFrame, nfIndex: number) => {\n    const noHeader = !!nf.meta?.custom?.noHeader;\n    const height = tableStyles.rowHeight * (nf.length + (noHeader ? 0 : 1)); // account for the header with + 1\n\n    const subTable: CSSProperties = {\n      height: height,\n      paddingLeft: EXPANDER_WIDTH,\n      position: 'absolute',\n      top,\n      backgroundColor: theme.colors.background.primary,\n      color: theme.colors.text.primary,\n    };\n\n    top += height + theme.spacing.gridSize;\n\n    subTables.push(\n      <div style={subTable} key={`subTable_${rowIndex}_${nfIndex}`}>\n        <Table\n          data={nf}\n          width={width - EXPANDER_WIDTH}\n          height={tableStyles.rowHeight * (nf.length + 1)}\n          noHeader={noHeader}\n          cellHeight={cellHeight}\n        />\n      </div>\n    );\n  });\n\n  return <div className={styles.subTables}>{subTables}</div>;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    subTables: css({\n      '&:before': {\n        content: '\"\"',\n        position: 'absolute',\n        width: '1px',\n        top: theme.spacing(5),\n        left: theme.spacing(1),\n        bottom: theme.spacing(2),\n        background: theme.colors.border.medium,\n      },\n    }),\n  };\n};\n\nexport function getExpandedRowHeight(nestedData: Field, rowIndex: number, tableStyles: TableStyles) {\n  const frames: DataFrame[][] = nestedData.values;\n\n  const height = frames[rowIndex].reduce((acc: number, frame: DataFrame) => {\n    if (frame.length) {\n      const noHeader = !!frame.meta?.custom?.noHeader;\n      return acc + tableStyles.rowHeight * (frame.length + (noHeader ? 0 : 1)) + 8; // account for the header with + 1\n    }\n    return acc;\n  }, tableStyles.rowHeight); // initial height for row that expands above sub tables\n\n  return height ?? tableStyles.rowHeight;\n}\n","import { css, cx } from '@emotion/css';\nimport { CSSProperties, UIEventHandler, useCallback, useEffect, useMemo, useState } from 'react';\nimport * as React from 'react';\nimport { Cell, Row, TableState, HeaderGroup } from 'react-table';\nimport { VariableSizeList } from 'react-window';\nimport { Subscription, debounceTime } from 'rxjs';\n\nimport {\n  DataFrame,\n  DataHoverClearEvent,\n  DataHoverEvent,\n  Field,\n  FieldType,\n  TimeRange,\n  hasTimeField,\n  InterpolateFunction,\n} from '@grafana/data';\nimport { TableCellDisplayMode, TableCellHeight } from '@grafana/schema';\n\nimport { useTheme2 } from '../../../themes/ThemeContext';\nimport CustomScrollbar from '../../CustomScrollbar/CustomScrollbar';\nimport { usePanelContext } from '../../PanelChrome';\nimport { TableCell } from '../Cells/TableCell';\nimport {\n  CellColors,\n  GetActionsFunction,\n  TableFieldOptions,\n  TableFilterActionCallback,\n  TableInspectCellCallback,\n} from '../types';\nimport {\n  calculateAroundPointThreshold,\n  getCellColors,\n  isPointTimeValAroundTableTimeVal,\n  guessTextBoundingBox,\n} from '../utils';\n\nimport { ExpandedRow, getExpandedRowHeight } from './ExpandedRow';\nimport { TableStyles } from './styles';\n\ninterface RowsListProps {\n  data: DataFrame;\n  rows: Row[];\n  enableSharedCrosshair: boolean;\n  headerHeight: number;\n  rowHeight: number;\n  itemCount: number;\n  pageIndex: number;\n  listHeight: number;\n  width: number;\n  cellHeight?: TableCellHeight;\n  listRef: React.RefObject<VariableSizeList>;\n  tableState: TableState;\n  tableStyles: TableStyles;\n  nestedDataField?: Field;\n  prepareRow: (row: Row) => void;\n  onCellFilterAdded?: TableFilterActionCallback;\n  timeRange?: TimeRange;\n  footerPaginationEnabled: boolean;\n  initialRowIndex?: number;\n  headerGroups: HeaderGroup[];\n  longestField?: Field;\n  textWrapField?: Field;\n  getActions?: GetActionsFunction;\n  replaceVariables?: InterpolateFunction;\n  setInspectCell?: TableInspectCellCallback;\n}\n\nexport const RowsList = (props: RowsListProps) => {\n  const {\n    data,\n    rows,\n    headerHeight,\n    footerPaginationEnabled,\n    rowHeight,\n    itemCount,\n    pageIndex,\n    tableState,\n    prepareRow,\n    onCellFilterAdded,\n    width,\n    cellHeight = TableCellHeight.Sm,\n    timeRange,\n    tableStyles,\n    nestedDataField,\n    listHeight,\n    listRef,\n    enableSharedCrosshair = false,\n    initialRowIndex = undefined,\n    headerGroups,\n    longestField,\n    textWrapField,\n    getActions,\n    replaceVariables,\n    setInspectCell,\n  } = props;\n\n  const [rowHighlightIndex, setRowHighlightIndex] = useState<number | undefined>(initialRowIndex);\n  if (initialRowIndex === undefined && rowHighlightIndex !== undefined) {\n    setRowHighlightIndex(undefined);\n  }\n\n  const theme = useTheme2();\n  const panelContext = usePanelContext();\n\n  // Create off-screen canvas for measuring rows for virtualized rendering\n  // This line is like this because Jest doesn't have OffscreenCanvas mocked\n  // nor is it a part of the jest-canvas-mock package\n  let osContext = null;\n  if (window.OffscreenCanvas !== undefined) {\n    // The canvas size is defined arbitrarily\n    // As we never actually visualize rendered content\n    // from the offscreen canvas, only perform text measurements\n    osContext = new OffscreenCanvas(256, 1024).getContext('2d');\n  }\n\n  // Set font property using theme info\n  // This will make text measurement accurate\n  if (osContext !== undefined && osContext !== null) {\n    osContext.font = `${theme.typography.fontSize}px ${theme.typography.body.fontFamily}`;\n  }\n\n  const threshold = useMemo(() => {\n    const timeField = data.fields.find((f) => f.type === FieldType.time);\n\n    if (!timeField) {\n      return 0;\n    }\n\n    return calculateAroundPointThreshold(timeField);\n  }, [data]);\n\n  const onRowHover = useCallback(\n    (idx: number, frame: DataFrame) => {\n      if (!panelContext || !enableSharedCrosshair) {\n        return;\n      }\n\n      const timeField: Field = frame!.fields.find((f) => f.type === FieldType.time)!;\n\n      if (!timeField) {\n        return;\n      }\n\n      panelContext.eventBus.publish(\n        new DataHoverEvent({\n          point: {\n            time: timeField.values[idx],\n          },\n        })\n      );\n    },\n    [enableSharedCrosshair, panelContext]\n  );\n\n  const onRowLeave = useCallback(() => {\n    if (!panelContext || !enableSharedCrosshair) {\n      return;\n    }\n\n    panelContext.eventBus.publish(new DataHoverClearEvent());\n  }, [enableSharedCrosshair, panelContext]);\n\n  const onDataHoverEvent = useCallback(\n    (evt: DataHoverEvent) => {\n      if (evt.payload.point?.time && evt.payload.rowIndex !== undefined) {\n        const timeField = data.fields.find((f) => f.type === FieldType.time);\n        const time = timeField!.values[evt.payload.rowIndex];\n        const pointTime = evt.payload.point.time;\n\n        // If the time value of the hovered point is around the time value of the\n        // row with same index, highlight the row\n        if (isPointTimeValAroundTableTimeVal(pointTime, time, threshold)) {\n          setRowHighlightIndex(evt.payload.rowIndex);\n          return;\n        }\n\n        // If the time value of the hovered point is not around the time value of the\n        // row with same index, try to find a row with same time value\n        const matchedRowIndex = timeField!.values.findIndex((t) =>\n          isPointTimeValAroundTableTimeVal(pointTime, t, threshold)\n        );\n\n        if (matchedRowIndex !== -1) {\n          setRowHighlightIndex(matchedRowIndex);\n          return;\n        }\n\n        setRowHighlightIndex(undefined);\n      }\n    },\n    [data.fields, threshold]\n  );\n\n  useEffect(() => {\n    if (!panelContext || !enableSharedCrosshair || !hasTimeField(data) || footerPaginationEnabled) {\n      return;\n    }\n\n    const subs = new Subscription();\n\n    subs.add(\n      panelContext.eventBus\n        .getStream(DataHoverEvent)\n        .pipe(debounceTime(250))\n        .subscribe({\n          next: (evt) => {\n            if (panelContext.eventBus === evt.origin) {\n              return;\n            }\n\n            onDataHoverEvent(evt);\n          },\n        })\n    );\n\n    subs.add(\n      panelContext.eventBus\n        .getStream(DataHoverClearEvent)\n        .pipe(debounceTime(250))\n        .subscribe({\n          next: (evt) => {\n            if (panelContext.eventBus === evt.origin) {\n              return;\n            }\n\n            setRowHighlightIndex(undefined);\n          },\n        })\n    );\n\n    return () => {\n      subs.unsubscribe();\n    };\n  }, [data, enableSharedCrosshair, footerPaginationEnabled, onDataHoverEvent, panelContext]);\n\n  let scrollTop: number | undefined = undefined;\n  if (rowHighlightIndex !== undefined) {\n    const firstMatchedRowIndex = rows.findIndex((row) => row.index === rowHighlightIndex);\n\n    if (firstMatchedRowIndex !== -1) {\n      scrollTop = headerHeight + (firstMatchedRowIndex - 1) * rowHeight;\n    }\n  }\n\n  const rowIndexForPagination = useCallback(\n    (index: number) => {\n      return tableState.pageIndex * tableState.pageSize + index;\n    },\n    [tableState.pageIndex, tableState.pageSize]\n  );\n\n  let rowBg: Function | undefined = undefined;\n  let textWrapFinal: Field | undefined;\n  for (const field of data.fields) {\n    // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n    const fieldOptions = field.config.custom as TableFieldOptions;\n    const cellOptionsExist = fieldOptions !== undefined && fieldOptions.cellOptions !== undefined;\n\n    if (\n      cellOptionsExist &&\n      fieldOptions.cellOptions.type === TableCellDisplayMode.ColorBackground &&\n      fieldOptions.cellOptions.applyToRow\n    ) {\n      rowBg = (rowIndex: number): CellColors => {\n        const display = field.display!(field.values.get(rowIndex));\n        const colors = getCellColors(tableStyles.theme, fieldOptions.cellOptions, display);\n        return colors;\n      };\n    }\n\n    if (textWrapField !== undefined) {\n      textWrapFinal = textWrapField;\n    } else if (longestField !== undefined) {\n      textWrapFinal = longestField;\n    }\n  }\n\n  const RenderRow = useCallback(\n    ({ index, style, rowHighlightIndex }: { index: number; style: CSSProperties; rowHighlightIndex?: number }) => {\n      const indexForPagination = rowIndexForPagination(index);\n      const row = rows[indexForPagination];\n      let additionalProps: React.HTMLAttributes<HTMLDivElement> = {};\n      prepareRow(row);\n\n      const expandedRowStyle = tableState.expanded[row.id] ? css({ '&:hover': { background: 'inherit' } }) : {};\n      const rowExpanded = nestedDataField && tableState.expanded[row.id];\n\n      if (rowHighlightIndex !== undefined && row.index === rowHighlightIndex) {\n        style = { ...style, backgroundColor: theme.components.table.rowSelected };\n        additionalProps = {\n          'aria-selected': 'true',\n        };\n      }\n\n      // Color rows if enabled\n      if (rowBg) {\n        const { bgColor, textColor } = rowBg(row.index);\n        style.background = bgColor;\n        style.color = textColor;\n        style.borderLeft = `2px solid ${bgColor}`;\n      }\n\n      // If there's a text wrapping field we set the height of it here\n      if (textWrapFinal) {\n        const visibleFields = data.fields.filter((field) => !Boolean(field.config.custom?.hidden));\n        const seriesIndex = visibleFields.findIndex((field) => field.name === textWrapFinal.name);\n        const pxLineHeight = theme.typography.body.lineHeight * theme.typography.fontSize;\n        const bbox = guessTextBoundingBox(\n          textWrapFinal.values[row.index],\n          headerGroups[0].headers[seriesIndex],\n          osContext,\n          pxLineHeight,\n          tableStyles.rowHeight,\n          tableStyles.cellPadding\n        );\n        style.height = bbox.height;\n      }\n      const { key, ...rowProps } = row.getRowProps({ style, ...additionalProps });\n\n      return (\n        <div\n          key={key}\n          {...rowProps}\n          className={cx(tableStyles.row, expandedRowStyle)}\n          onMouseEnter={() => onRowHover(row.index, data)}\n          onMouseLeave={onRowLeave}\n        >\n          {/*add the nested data to the DOM first to prevent a 1px border CSS issue on the last cell of the row*/}\n          {rowExpanded && (\n            <ExpandedRow\n              nestedData={nestedDataField}\n              tableStyles={tableStyles}\n              // Using `row.index` ensures that we pick the correct row from the original data frame even when rows in\n              // the table are sorted, since `row.index` does not change when sorting.\n              rowIndex={row.index}\n              width={width}\n              cellHeight={cellHeight}\n            />\n          )}\n          {row.cells.map((cell: Cell, index: number) => (\n            <TableCell\n              key={index}\n              tableStyles={tableStyles}\n              cell={cell}\n              onCellFilterAdded={onCellFilterAdded}\n              columnIndex={index}\n              columnCount={row.cells.length}\n              timeRange={timeRange}\n              frame={data}\n              rowStyled={rowBg !== undefined}\n              rowExpanded={rowExpanded}\n              textWrapped={textWrapFinal !== undefined}\n              // VariableSizeList overrides calculated in buildCellContainerStyle height of the cell,\n              // so we need to subtract 1 to respect the row border\n              height={Number(style.height) - 1}\n              getActions={getActions}\n              replaceVariables={replaceVariables}\n              setInspectCell={setInspectCell}\n            />\n          ))}\n        </div>\n      );\n    },\n    [\n      rowIndexForPagination,\n      rows,\n      prepareRow,\n      tableState.expanded,\n      nestedDataField,\n      rowBg,\n      textWrapFinal,\n      tableStyles,\n      onRowLeave,\n      width,\n      cellHeight,\n      theme.components.table.rowSelected,\n      theme.typography.body.lineHeight,\n      theme.typography.fontSize,\n      data,\n      headerGroups,\n      osContext,\n      onRowHover,\n      onCellFilterAdded,\n      timeRange,\n      getActions,\n      replaceVariables,\n      setInspectCell,\n    ]\n  );\n\n  const getItemSize = (index: number): number => {\n    const indexForPagination = rowIndexForPagination(index);\n    const row = rows[indexForPagination];\n\n    if (tableState.expanded[row.id] && nestedDataField) {\n      return getExpandedRowHeight(nestedDataField, row.index, tableStyles);\n    }\n\n    if (textWrapFinal) {\n      const visibleFields = data.fields.filter((field) => !Boolean(field.config.custom?.hidden));\n      const seriesIndex = visibleFields.findIndex((field) => field.name === textWrapFinal.name);\n      const pxLineHeight = theme.typography.fontSize * theme.typography.body.lineHeight;\n      return guessTextBoundingBox(\n        textWrapFinal.values[row.index],\n        headerGroups[0].headers[seriesIndex],\n        osContext,\n        pxLineHeight,\n        tableStyles.rowHeight,\n        tableStyles.cellPadding\n      ).height;\n    }\n\n    return tableStyles.rowHeight;\n  };\n\n  const handleScroll: UIEventHandler = (event) => {\n    const { scrollTop } = event.currentTarget;\n\n    if (listRef.current !== null) {\n      listRef.current.scrollTo(scrollTop);\n    }\n  };\n\n  // It's a hack for text wrapping.\n  // VariableSizeList component didn't know that we manually set row height.\n  // So we need to reset the list when the rows high changes.\n  useEffect(() => {\n    if (listRef.current) {\n      listRef.current.resetAfterIndex(0);\n    }\n  }, [rows, listRef]);\n\n  return (\n    <CustomScrollbar onScroll={handleScroll} hideHorizontalTrack={true} scrollTop={scrollTop}>\n      <VariableSizeList\n        key={`${rowHeight}${pageIndex}`}\n        height={listHeight}\n        itemCount={itemCount}\n        itemSize={getItemSize}\n        width={'100%'}\n        ref={listRef}\n        style={{ overflow: undefined }}\n      >\n        {({ index, style }) => RenderRow({ index, style, rowHighlightIndex })}\n      </VariableSizeList>\n    </CustomScrollbar>\n  );\n};\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { TableCellHeight } from '@grafana/schema';\n\nexport function useTableStyles(theme: GrafanaTheme2, cellHeightOption: TableCellHeight) {\n  const borderColor = theme.colors.border.weak;\n  const resizerColor = theme.colors.primary.border;\n  const cellPadding = 6;\n  const cellHeight = getCellHeight(theme, cellHeightOption, cellPadding);\n  const rowHeight = cellHeight + 2;\n  const headerHeight = 28;\n\n  const buildCellContainerStyle = (\n    color?: string,\n    background?: string,\n    backgroundHover?: string,\n    overflowOnHover?: boolean,\n    asCellText?: boolean,\n    textShouldWrap?: boolean,\n    textWrapped?: boolean,\n    rowStyled?: boolean,\n    rowExpanded?: boolean\n  ) => {\n    return css({\n      label: overflowOnHover ? 'cellContainerOverflow' : 'cellContainerNoOverflow',\n      padding: `${cellPadding}px`,\n      width: '100%',\n      // Cell height need to account for row border\n      height: rowExpanded ? 'auto !important' : `${rowHeight - 1}px`,\n      wordBreak: textWrapped ? 'break-all' : 'inherit',\n\n      display: 'flex',\n\n      ...(asCellText\n        ? {\n            overflow: 'hidden',\n            textOverflow: 'ellipsis',\n            userSelect: 'text',\n            whiteSpace: 'nowrap',\n          }\n        : {}),\n\n      alignItems: 'center',\n      borderRight: `1px solid ${borderColor}`,\n\n      color: rowStyled ? 'inherit' : (color ?? undefined),\n      background: rowStyled ? undefined : (background ?? undefined),\n      backgroundClip: 'padding-box',\n\n      '&:last-child:not(:only-child)': {\n        borderRight: 'none',\n      },\n\n      '&:hover': {\n        overflow: overflowOnHover && !textWrapped ? 'visible' : undefined,\n        width: textShouldWrap || !overflowOnHover ? 'auto' : 'auto !important',\n        height: (textShouldWrap || overflowOnHover) && !textWrapped ? 'auto !important' : `${rowHeight - 1}px`,\n        minHeight: `${rowHeight - 1}px`,\n        wordBreak: textShouldWrap ? 'break-word' : undefined,\n        whiteSpace: textShouldWrap && overflowOnHover ? 'normal' : 'nowrap',\n        boxShadow: overflowOnHover ? `0 0 2px ${theme.colors.primary.main}` : undefined,\n        background: rowStyled ? 'inherit' : (backgroundHover ?? theme.colors.background.primary),\n        zIndex: 1,\n        '.cellActions': {\n          background: theme.components.tooltip.background,\n          color: theme.components.tooltip.text,\n          visibility: 'visible',\n          opacity: 1,\n          width: 'auto',\n          borderRadius: theme.shape.radius.default,\n        },\n      },\n\n      a: {\n        color: 'inherit',\n      },\n\n      '.cellActions': {\n        display: 'flex',\n        position: overflowOnHover ? undefined : 'absolute',\n        top: overflowOnHover ? undefined : '1px',\n        right: overflowOnHover ? undefined : 0,\n        margin: overflowOnHover ? theme.spacing(0, 0, 0, 1) : 'auto',\n        visibility: 'hidden',\n        opacity: 0,\n        width: 0,\n        alignItems: 'center',\n        height: '100%',\n        padding: theme.spacing(0.5, 0, 0.5, 0.5),\n        background: theme.components.tooltip.background,\n        color: theme.components.tooltip.text,\n      },\n\n      '.cellActionsLeft': {\n        right: 'auto !important',\n        left: 0,\n      },\n    });\n  };\n\n  return {\n    theme,\n    cellHeight,\n    buildCellContainerStyle,\n    cellPadding,\n    cellHeightInner: cellHeight - cellPadding * 2,\n    rowHeight,\n    table: css({\n      height: '100%',\n      width: '100%',\n      overflow: 'auto',\n      display: 'flex',\n      flexDirection: 'column',\n    }),\n    thead: css({\n      label: 'thead',\n      height: `${headerHeight}px`,\n      overflowY: 'auto',\n      overflowX: 'hidden',\n      position: 'relative',\n    }),\n    tfoot: css({\n      label: 'tfoot',\n      height: `${headerHeight}px`,\n      borderTop: `1px solid ${borderColor}`,\n      overflowY: 'auto',\n      overflowX: 'hidden',\n      position: 'relative',\n    }),\n    headerRow: css({\n      label: 'row',\n      borderBottom: `1px solid ${borderColor}`,\n    }),\n    headerCell: css({\n      height: '100%',\n      padding: `0 ${cellPadding}px`,\n      overflow: 'hidden',\n      whiteSpace: 'nowrap',\n      display: 'flex',\n      alignItems: 'center',\n      fontWeight: theme.typography.fontWeightMedium,\n\n      '&:last-child': {\n        borderRight: 'none',\n      },\n    }),\n    headerCellLabel: css({\n      border: 'none',\n      padding: 0,\n      background: 'inherit',\n      cursor: 'pointer',\n      whiteSpace: 'nowrap',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      fontWeight: theme.typography.fontWeightMedium,\n      display: 'flex',\n      alignItems: 'center',\n      marginRight: theme.spacing(0.5),\n\n      '&:hover': {\n        textDecoration: 'underline',\n        color: theme.colors.text.link,\n      },\n    }),\n    cellContainerText: buildCellContainerStyle(undefined, undefined, undefined, true, true),\n    cellContainerTextNoOverflow: buildCellContainerStyle(undefined, undefined, undefined, false, true),\n\n    cellContainer: buildCellContainerStyle(undefined, undefined, undefined, true, false),\n    cellContainerNoOverflow: buildCellContainerStyle(undefined, undefined, undefined, false, false),\n    cellText: css({\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      userSelect: 'text',\n      whiteSpace: 'nowrap',\n      cursor: 'text',\n    }),\n    sortIcon: css({\n      marginLeft: theme.spacing(0.5),\n    }),\n    cellLink: css({\n      cursor: 'pointer',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      userSelect: 'text',\n      whiteSpace: 'nowrap',\n      color: `${theme.colors.text.link} !important`,\n      fontWeight: theme.typography.fontWeightMedium,\n      paddingRight: theme.spacing(1.5),\n      '&:hover': {\n        textDecoration: 'underline',\n        color: theme.colors.text.link,\n      },\n    }),\n    cellLinkEmpty: css({\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      userSelect: 'text',\n      whiteSpace: 'nowrap',\n      fontWeight: theme.typography.fontWeightMedium,\n      paddingRight: theme.spacing(1.5),\n    }),\n    cellLinkForColoredCell: css({\n      cursor: 'pointer',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      userSelect: 'text',\n      whiteSpace: 'nowrap',\n      fontWeight: theme.typography.fontWeightMedium,\n      textDecoration: 'underline',\n    }),\n    imageCellLink: css({\n      cursor: 'pointer',\n      overflow: 'hidden',\n      height: '100%',\n    }),\n    headerFilter: css({\n      background: 'transparent',\n      border: 'none',\n      label: 'headerFilter',\n      padding: 0,\n    }),\n    paginationWrapper: css({\n      display: 'flex',\n      height: `${cellHeight}px`,\n      justifyContent: 'center',\n      alignItems: 'center',\n      width: '100%',\n      li: {\n        marginBottom: 0,\n      },\n    }),\n    paginationSummary: css({\n      color: theme.colors.text.secondary,\n      fontSize: theme.typography.bodySmall.fontSize,\n      display: 'flex',\n      justifyContent: 'flex-end',\n      padding: theme.spacing(0, 1, 0, 2),\n    }),\n\n    tableContentWrapper: (totalColumnsWidth: number) => {\n      const width = totalColumnsWidth !== undefined ? `${totalColumnsWidth}px` : '100%';\n\n      return css({\n        label: 'tableContentWrapper',\n        width,\n        display: 'flex',\n        flexDirection: 'column',\n      });\n    },\n    row: css({\n      label: 'row',\n      borderBottom: `1px solid ${borderColor}`,\n\n      '&:hover': {\n        backgroundColor: theme.components.table.rowHoverBackground,\n      },\n\n      '&:last-child': {\n        borderBottom: 0,\n      },\n    }),\n    imageCell: css({\n      height: '100%',\n    }),\n    resizeHandle: css({\n      label: 'resizeHandle',\n      cursor: 'col-resize !important',\n      display: 'inline-block',\n      background: resizerColor,\n      opacity: 0,\n      [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n        transition: 'opacity 0.2s ease-in-out',\n      },\n      width: '8px',\n      height: '100%',\n      position: 'absolute',\n      right: '-4px',\n      borderRadius: theme.shape.radius.default,\n      top: 0,\n      touchAction: 'none',\n\n      '&:hover': {\n        opacity: 1,\n      },\n    }),\n    typeIcon: css({\n      marginRight: theme.spacing(1),\n      color: theme.colors.text.secondary,\n    }),\n    noData: css({\n      alignItems: 'center',\n      display: 'flex',\n      height: '100%',\n      justifyContent: 'center',\n      width: '100%',\n    }),\n    expanderCell: css({\n      display: 'flex',\n      flexDirection: 'column',\n      justifyContent: 'center',\n      height: `${rowHeight}px`,\n      cursor: 'pointer',\n    }),\n  };\n}\n\nexport type TableStyles = ReturnType<typeof useTableStyles>;\n\nfunction getCellHeight(theme: GrafanaTheme2, cellHeightOption: TableCellHeight, cellPadding: number) {\n  const bodyFontSize = theme.typography.fontSize;\n  const lineHeight = theme.typography.body.lineHeight;\n\n  switch (cellHeightOption) {\n    case 'md':\n      return 42;\n    case 'lg':\n      return 48;\n    case 'sm':\n    default:\n      return cellPadding * 2 + bodyFontSize * lineHeight;\n  }\n}\n","import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n  useAbsoluteLayout,\n  useExpanded,\n  useFilters,\n  usePagination,\n  useResizeColumns,\n  useSortBy,\n  useTable,\n} from 'react-table';\nimport { VariableSizeList } from 'react-window';\n\nimport { FieldType, ReducerID, getRowUniqueId, getFieldMatcher } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { Trans } from '@grafana/i18n';\nimport { TableCellHeight } from '@grafana/schema';\n\nimport { useTheme2 } from '../../../themes/ThemeContext';\nimport { CustomScrollbar } from '../../CustomScrollbar/CustomScrollbar';\nimport { Pagination } from '../../Pagination/Pagination';\nimport { TableCellInspector } from '../TableCellInspector';\nimport { useFixScrollbarContainer, useResetVariableListSizeCache } from '../hooks';\nimport { getInitialState, useTableStateReducer } from '../reducer';\nimport { FooterItem, GrafanaTableState, InspectCell, TableRTProps as Props } from '../types';\nimport {\n  getColumns,\n  sortCaseInsensitive,\n  sortNumber,\n  getFooterItems,\n  createFooterCalculationValues,\n  guessLongestField,\n} from '../utils';\n\nimport { FooterRow } from './FooterRow';\nimport { HeaderRow } from './HeaderRow';\nimport { RowsList } from './RowsList';\nimport { useTableStyles } from './styles';\n\nconst COLUMN_MIN_WIDTH = 150;\nconst FOOTER_ROW_HEIGHT = 36;\nconst NO_DATA_TEXT = 'No data';\n\nexport const Table = memo((props: Props) => {\n  const {\n    ariaLabel,\n    data,\n    height,\n    onCellFilterAdded,\n    onColumnResize,\n    width,\n    columnMinWidth = COLUMN_MIN_WIDTH,\n    noHeader,\n    resizable = true,\n    initialSortBy,\n    footerOptions,\n    showTypeIcons,\n    footerValues,\n    enablePagination,\n    cellHeight = TableCellHeight.Sm,\n    timeRange,\n    enableSharedCrosshair = false,\n    initialRowIndex = undefined,\n    fieldConfig,\n    getActions,\n    replaceVariables,\n  } = props;\n\n  const listRef = useRef<VariableSizeList>(null);\n  const tableDivRef = useRef<HTMLDivElement>(null);\n  const variableSizeListScrollbarRef = useRef<HTMLDivElement>(null);\n  const theme = useTheme2();\n  const tableStyles = useTableStyles(theme, cellHeight);\n  const headerHeight = noHeader ? 0 : tableStyles.rowHeight;\n  const [footerItems, setFooterItems] = useState<FooterItem[] | undefined>(footerValues);\n  const noValuesDisplayText = fieldConfig?.defaults?.noValue ?? NO_DATA_TEXT;\n  const [inspectCell, setInspectCell] = useState<InspectCell | null>(null);\n\n  const footerHeight = useMemo(() => {\n    const EXTENDED_ROW_HEIGHT = FOOTER_ROW_HEIGHT;\n    let length = 0;\n\n    if (!footerItems) {\n      return 0;\n    }\n\n    for (const fv of footerItems) {\n      if (Array.isArray(fv) && fv.length > length) {\n        length = fv.length;\n      }\n    }\n\n    if (length > 1) {\n      return EXTENDED_ROW_HEIGHT * length;\n    }\n\n    return EXTENDED_ROW_HEIGHT;\n  }, [footerItems]);\n\n  // React table data array. This data acts just like a dummy array to let react-table know how many rows exist.\n  // The cells use the field to look up values, therefore this is simply a length/size placeholder.\n  const memoizedData = useMemo(() => {\n    if (!data.fields.length) {\n      return [];\n    }\n    // As we only use this to fake the length of our data set for react-table we need to make sure we always return an array\n    // filled with values at each index otherwise we'll end up trying to call accessRow for null|undefined value in\n    // https://github.com/tannerlinsley/react-table/blob/7be2fc9d8b5e223fc998af88865ae86a88792fdb/src/hooks/useTable.js#L585\n    return Array(data.length).fill(0);\n  }, [data]);\n\n  // This checks whether `Show table footer` is toggled on, the `Calculation` is set to `Count`, and finally, whether `Count rows` is toggled on.\n  const isCountRowsSet = Boolean(\n    footerOptions?.countRows &&\n      footerOptions.reducer &&\n      footerOptions.reducer.length &&\n      footerOptions.reducer[0] === ReducerID.count\n  );\n\n  const nestedDataField = data.fields.find((f) => f.type === FieldType.nestedFrames);\n  const hasNestedData = nestedDataField !== undefined;\n\n  // React-table column definitions\n  const memoizedColumns = useMemo(\n    () => getColumns(data, width, columnMinWidth, hasNestedData, footerItems, isCountRowsSet),\n    [data, width, columnMinWidth, hasNestedData, footerItems, isCountRowsSet]\n  );\n\n  // we need a ref to later store the `toggleAllRowsExpanded` function, returned by `useTable`.\n  // We cannot simply use a variable because we need to use such function in the initialization of\n  // `useTableStateReducer`, which is needed to construct options for `useTable` (the hook that returns\n  // `toggleAllRowsExpanded`), and if we used a variable, that variable would be undefined at the time\n  // we initialize `useTableStateReducer`.\n  const toggleAllRowsExpandedRef = useRef<(value?: boolean) => void>();\n\n  // Internal react table state reducer\n  const stateReducer = useTableStateReducer({\n    onColumnResize,\n    onSortByChange: (state) => {\n      // Collapse all rows. This prevents a known bug that causes the size of the rows to be incorrect due to\n      // using `VariableSizeList` and `useExpanded` together.\n      toggleAllRowsExpandedRef.current!(false);\n\n      if (props.onSortByChange) {\n        props.onSortByChange(state);\n      }\n    },\n    data,\n  });\n\n  const hasUniqueId = !!data.meta?.uniqueRowIdFields?.length;\n\n  const options: any = useMemo(() => {\n    // This is a bit hard to type with the react-table types here, the reducer does not actually match with the\n    // TableOptions.\n    const options: any = {\n      columns: memoizedColumns,\n      data: memoizedData,\n      disableResizing: !resizable,\n      stateReducer: stateReducer,\n      autoResetPage: false,\n      initialState: getInitialState(initialSortBy, memoizedColumns),\n      autoResetFilters: false,\n      sortTypes: {\n        // the builtin number type on react-table does not handle NaN values\n        number: sortNumber,\n        // should be replaced with the builtin string when react-table is upgraded,\n        // see https://github.com/tannerlinsley/react-table/pull/3235\n        'alphanumeric-insensitive': sortCaseInsensitive,\n      },\n    };\n    if (hasUniqueId) {\n      // row here is just always 0 because here we don't use real data but just a dummy array filled with 0.\n      // See memoizedData variable above.\n      options.getRowId = (row: Record<string, unknown>, relativeIndex: number) => getRowUniqueId(data, relativeIndex);\n\n      // If we have unique field we assume we can count on it as being globally unique, and we don't need to reset when\n      // data changes.\n      options.autoResetExpanded = false;\n    }\n    return options;\n  }, [initialSortBy, memoizedColumns, memoizedData, resizable, stateReducer, hasUniqueId, data]);\n\n  const {\n    getTableProps,\n    headerGroups,\n    footerGroups,\n    rows,\n    prepareRow,\n    totalColumnsWidth,\n    page,\n    state,\n    gotoPage,\n    setPageSize,\n    pageOptions,\n    toggleAllRowsExpanded,\n  } = useTable(options, useFilters, useSortBy, useAbsoluteLayout, useResizeColumns, useExpanded, usePagination);\n\n  const extendedState = state as GrafanaTableState;\n  toggleAllRowsExpandedRef.current = toggleAllRowsExpanded;\n\n  /*\n    Footer value calculation is being moved in the Table component and the footerValues prop will be deprecated.\n    The footerValues prop is still used in the Table component for backwards compatibility. Adding the\n    footerOptions prop will switch the Table component to use the new footer calculation. Using both props will\n    result in the footerValues prop being ignored.\n  */\n  useEffect(() => {\n    if (!footerOptions) {\n      setFooterItems(footerValues);\n    }\n  }, [footerValues, footerOptions]);\n\n  useEffect(() => {\n    if (!footerOptions) {\n      return;\n    }\n\n    if (!footerOptions.show) {\n      setFooterItems(undefined);\n      return;\n    }\n\n    if (isCountRowsSet) {\n      const footerItemsCountRows: FooterItem[] = [];\n      footerItemsCountRows[0] = rows.length.toString() ?? data.length.toString();\n      setFooterItems(footerItemsCountRows);\n      return;\n    }\n\n    const footerItems = getFooterItems(\n      headerGroups[0].headers,\n      createFooterCalculationValues(rows),\n      footerOptions,\n      theme\n    );\n\n    setFooterItems(footerItems);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [footerOptions, theme, state.filters, data]);\n\n  let listHeight = height - (headerHeight + footerHeight);\n\n  if (enablePagination) {\n    listHeight -= tableStyles.cellHeight;\n  }\n\n  const pageSize = Math.round(listHeight / tableStyles.rowHeight) - 1;\n\n  useEffect(() => {\n    // Don't update the page size if it is less than 1\n    if (pageSize <= 0) {\n      return;\n    }\n    setPageSize(pageSize);\n  }, [pageSize, setPageSize]);\n\n  useEffect(() => {\n    // Reset page index when data changes\n    // This is needed because react-table does not do this automatically\n    // autoResetPage is set to false because setting it to true causes the issue described in\n    // https://github.com/grafana/grafana/pull/67477\n    if (data.length / pageSize < state.pageIndex) {\n      gotoPage(0);\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [data]);\n\n  useResetVariableListSizeCache(extendedState, listRef, data, hasUniqueId);\n  useFixScrollbarContainer(variableSizeListScrollbarRef, tableDivRef);\n\n  const onNavigate = useCallback(\n    (toPage: number) => {\n      gotoPage(toPage - 1);\n    },\n    [gotoPage]\n  );\n\n  const itemCount = enablePagination ? page.length : rows.length;\n  let paginationEl = null;\n  if (enablePagination) {\n    const itemsRangeStart = state.pageIndex * state.pageSize + 1;\n    let itemsRangeEnd = itemsRangeStart + state.pageSize - 1;\n    const isSmall = width < 550;\n    if (itemsRangeEnd > data.length) {\n      itemsRangeEnd = data.length;\n    }\n    const numRows = rows.length;\n    const displayedEnd = itemsRangeEnd < rows.length ? itemsRangeEnd : rows.length;\n    paginationEl = (\n      <div className={tableStyles.paginationWrapper}>\n        <Pagination\n          currentPage={state.pageIndex + 1}\n          numberOfPages={pageOptions.length}\n          showSmallVersion={isSmall}\n          onNavigate={onNavigate}\n        />\n        {isSmall ? null : (\n          <div className={tableStyles.paginationSummary}>\n            <Trans i18nKey=\"grafana-ui.table.pagination-summary\">\n              {{ itemsRangeStart }} - {{ displayedEnd }} of {{ numRows }} rows\n            </Trans>\n          </div>\n        )}\n      </div>\n    );\n  }\n\n  // Try to determine the longest field\n  // TODO: do we wrap only one field?\n  // What if there are multiple fields with long text?\n  const longestField = fieldConfig ? guessLongestField(fieldConfig, data) : undefined;\n  let textWrapField = undefined;\n  if (fieldConfig !== undefined) {\n    data.fields.forEach((field) => {\n      fieldConfig.overrides.forEach((override) => {\n        const matcher = getFieldMatcher(override.matcher);\n        if (matcher(field, data, [data])) {\n          for (const property of override.properties) {\n            if (property.id === 'custom.cellOptions' && property.value.wrapText) {\n              textWrapField = field;\n            }\n          }\n        }\n      });\n    });\n  }\n\n  return (\n    <>\n      <div\n        {...getTableProps()}\n        className={tableStyles.table}\n        aria-label={ariaLabel}\n        role=\"table\"\n        ref={tableDivRef}\n        style={{ width, height }}\n      >\n        <CustomScrollbar hideVerticalTrack={true}>\n          <div className={tableStyles.tableContentWrapper(totalColumnsWidth)}>\n            {!noHeader && (\n              <HeaderRow headerGroups={headerGroups} showTypeIcons={showTypeIcons} tableStyles={tableStyles} />\n            )}\n            {itemCount > 0 ? (\n              <div\n                data-testid={selectors.components.Panels.Visualization.Table.body}\n                ref={variableSizeListScrollbarRef}\n              >\n                <RowsList\n                  headerGroups={headerGroups}\n                  data={data}\n                  rows={rows}\n                  width={width}\n                  cellHeight={cellHeight}\n                  headerHeight={headerHeight}\n                  rowHeight={tableStyles.rowHeight}\n                  itemCount={itemCount}\n                  pageIndex={state.pageIndex}\n                  listHeight={listHeight}\n                  listRef={listRef}\n                  tableState={state}\n                  prepareRow={prepareRow}\n                  timeRange={timeRange}\n                  onCellFilterAdded={onCellFilterAdded}\n                  nestedDataField={nestedDataField}\n                  tableStyles={tableStyles}\n                  footerPaginationEnabled={Boolean(enablePagination)}\n                  enableSharedCrosshair={enableSharedCrosshair}\n                  initialRowIndex={initialRowIndex}\n                  longestField={longestField}\n                  textWrapField={textWrapField}\n                  getActions={getActions}\n                  replaceVariables={replaceVariables}\n                  setInspectCell={setInspectCell}\n                />\n              </div>\n            ) : (\n              <div style={{ height: height - headerHeight, width }} className={tableStyles.noData}>\n                {noValuesDisplayText}\n              </div>\n            )}\n            {footerItems && (\n              <FooterRow\n                isPaginationVisible={Boolean(enablePagination)}\n                footerValues={footerItems}\n                footerGroups={footerGroups}\n                totalColumnsWidth={totalColumnsWidth}\n                tableStyles={tableStyles}\n              />\n            )}\n          </div>\n        </CustomScrollbar>\n        {paginationEl}\n      </div>\n\n      {inspectCell !== null && (\n        <TableCellInspector\n          mode={inspectCell.mode}\n          value={inspectCell.value}\n          onDismiss={() => {\n            setInspectCell(null);\n          }}\n        />\n      )}\n    </>\n  );\n});\n\nTable.displayName = 'Table';\n","import { css, cx } from '@emotion/css';\nimport { forwardRef, HTMLProps } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyle, sharedInputStyle } from '../Forms/commonStyles';\n\nexport interface Props extends Omit<HTMLProps<HTMLTextAreaElement>, 'size'> {\n  /** Show an invalid state around the input */\n  invalid?: boolean;\n}\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, Props>(({ invalid, className, ...props }, ref) => {\n  const styles = useStyles2(getTextAreaStyle, invalid);\n\n  return <textarea {...props} className={cx(styles.textarea, className)} ref={ref} />;\n});\n\nconst getTextAreaStyle = (theme: GrafanaTheme2, invalid = false) => ({\n  textarea: cx(\n    sharedInputStyle(theme),\n    getFocusStyle(theme),\n    css({\n      display: 'block',\n      borderRadius: theme.shape.radius.default,\n      padding: `${theme.spacing.gridSize / 4}px ${theme.spacing.gridSize}px`,\n      width: '100%',\n      borderColor: invalid ? theme.colors.error.border : theme.components.input.borderColor,\n    })\n  ),\n});\n\nTextArea.displayName = 'TextArea';\n","import { css } from '@emotion/css';\nimport { debounce } from 'lodash';\nimport { PureComponent } from 'react';\nimport * as React from 'react';\n\nimport { DataFrame, CSVConfig, readCSV, GrafanaTheme2 } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { withTheme2 } from '../../themes/ThemeContext';\nimport { stylesFactory } from '../../themes/stylesFactory';\nimport { Themeable2 } from '../../types/theme';\nimport { Icon } from '../Icon/Icon';\nimport { TextArea } from '../TextArea/TextArea';\n\ninterface Props extends Themeable2 {\n  config?: CSVConfig;\n  text: string;\n  width: string | number;\n  height: string | number;\n  onSeriesParsed: (data: DataFrame[], text: string) => void;\n}\n\ninterface State {\n  text: string;\n  data: DataFrame[];\n}\n\n/**\n * Expects the container div to have size set and will fill it 100%\n */\nexport class UnThemedTableInputCSV extends PureComponent<Props, State> {\n  constructor(props: Props) {\n    super(props);\n\n    const { text, config } = props;\n    this.state = {\n      text,\n      data: readCSV(text, { config }),\n    };\n  }\n\n  readCSV = debounce(() => {\n    const { config } = this.props;\n    const { text } = this.state;\n\n    this.setState({ data: readCSV(text, { config }) });\n  }, 150);\n\n  componentDidUpdate(prevProps: Props, prevState: State) {\n    const { text } = this.state;\n\n    if (text !== prevState.text || this.props.config !== prevProps.config) {\n      this.readCSV();\n    }\n\n    // If the props text has changed, replace our local version\n    if (this.props.text !== prevProps.text && this.props.text !== text) {\n      this.setState({ text: this.props.text });\n    }\n\n    if (this.state.data !== prevState.data) {\n      this.props.onSeriesParsed(this.state.data, this.state.text);\n    }\n  }\n\n  onTextChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n    this.setState({ text: event.target.value });\n  };\n\n  render() {\n    const { width, height, theme } = this.props;\n    const { data } = this.state;\n    const styles = getStyles(theme);\n    return (\n      <div className={styles.tableInputCsv}>\n        <TextArea\n          style={{ width, height }}\n          placeholder={t('grafana-ui.table.csv-placeholder', 'Enter CSV here...')}\n          value={this.state.text}\n          onChange={this.onTextChange}\n          className={styles.textarea}\n        />\n        {data && (\n          <footer className={styles.footer}>\n            {data.map((frame, index) => {\n              const rows = frame.length;\n              const columns = frame.fields.length;\n              return (\n                <span key={index}>\n                  <Trans i18nKey=\"grafana-ui.table.csv-counts\">\n                    Rows:{{ rows }}, Columns:{{ columns }} &nbsp;\n                    <Icon name=\"check-circle\" />\n                  </Trans>\n                </span>\n              );\n            })}\n          </footer>\n        )}\n      </div>\n    );\n  }\n}\n\n/** @deprecated */\nexport const TableInputCSV = withTheme2(UnThemedTableInputCSV);\nTableInputCSV.displayName = 'TableInputCSV';\n\nconst getStyles = stylesFactory((theme: GrafanaTheme2) => {\n  return {\n    tableInputCsv: css({\n      position: 'relative',\n    }),\n    textarea: css({\n      height: '100%',\n      width: '100%',\n    }),\n    footer: css({\n      position: 'absolute',\n      bottom: '15px',\n      right: '15px',\n      border: `1px solid ${theme.colors.success.border}`,\n      background: theme.colors.success.main,\n      color: theme.colors.success.contrastText,\n      padding: `1px ${theme.spacing(0.5)}`,\n      fontSize: '80%',\n    }),\n  };\n});\n","import { css, cx } from '@emotion/css';\nimport { forwardRef } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\n\nimport { Counter } from './Counter';\nimport { TabProps } from './Tab';\n\nexport const VerticalTab = forwardRef<HTMLAnchorElement, TabProps>(\n  ({ label, active, icon, counter, className, suffix: Suffix, onChangeTab, href, ...otherProps }, ref) => {\n    const tabsStyles = useStyles2(getTabStyles);\n    const content = () => (\n      <>\n        {icon && <Icon name={icon} />}\n        {label}\n        {typeof counter === 'number' && <Counter value={counter} />}\n        {Suffix && <Suffix className={tabsStyles.suffix} />}\n      </>\n    );\n\n    const linkClass = cx(tabsStyles.link, active && tabsStyles.activeStyle);\n\n    return (\n      <a\n        href={href}\n        className={linkClass}\n        {...otherProps}\n        onClick={onChangeTab}\n        aria-label={otherProps['aria-label'] || selectors.components.Tab.title(label)}\n        role=\"tab\"\n        aria-selected={active}\n        ref={ref}\n      >\n        {content()}\n      </a>\n    );\n  }\n);\n\nVerticalTab.displayName = 'Tab';\n\nconst getTabStyles = (theme: GrafanaTheme2) => {\n  return {\n    link: css({\n      padding: '6px 12px',\n      display: 'block',\n      height: '100%',\n      cursor: 'pointer',\n      position: 'relative',\n\n      color: theme.colors.text.primary,\n\n      svg: {\n        marginRight: theme.spacing(1),\n      },\n\n      '&:hover, &:focus': {\n        textDecoration: 'underline',\n      },\n    }),\n    activeStyle: css({\n      label: 'activeTabStyle',\n      color: theme.colors.text.maxContrast,\n      overflow: 'hidden',\n\n      '&::before': {\n        display: 'block',\n        content: '\" \"',\n        position: 'absolute',\n        left: 0,\n        width: '4px',\n        bottom: '2px',\n        top: '2px',\n        borderRadius: theme.shape.radius.default,\n        backgroundImage: 'linear-gradient(0deg, #f05a28 30%, #fbca0a 99%)',\n      },\n    }),\n    suffix: css({\n      marginLeft: theme.spacing(1),\n    }),\n  };\n};\n","import { HTMLAttributes, PropsWithChildren } from 'react';\nimport * as React from 'react';\n\nimport { textUtil } from '@grafana/data';\n\nexport interface RenderUserContentAsHTMLProps<T = HTMLSpanElement>\n  extends Omit<HTMLAttributes<T>, 'dangerouslySetInnerHTML'> {\n  component?: keyof React.ReactHTML;\n  content: string;\n}\n\nexport function RenderUserContentAsHTML<T>({\n  component,\n  content,\n  ...rest\n}: PropsWithChildren<RenderUserContentAsHTMLProps<T>>): JSX.Element {\n  return React.createElement(component || 'span', {\n    dangerouslySetInnerHTML: { __html: textUtil.sanitize(content) },\n    ...rest,\n  });\n}\n","import { IconName } from '@grafana/data';\n\nimport { Icon } from '../Icon/Icon';\n\nimport { PercentChangeStyles } from './BigValueLayout';\n\nexport interface Props {\n  percentChange: number;\n  styles: PercentChangeStyles;\n}\n\nexport const PercentChange = ({ percentChange, styles }: Props) => {\n  let percentChangeIcon: IconName | undefined = undefined;\n  if (percentChange > 0) {\n    percentChangeIcon = 'arrow-up';\n  } else if (percentChange < 0) {\n    percentChangeIcon = 'arrow-down';\n  }\n\n  return (\n    <div style={styles.containerStyles}>\n      {percentChangeIcon && (\n        <Icon name={percentChangeIcon} height={styles.iconSize} width={styles.iconSize} viewBox=\"6 6 12 12\" />\n      )}\n      {percentChangeString(percentChange)}\n    </div>\n  );\n};\n\n// percentChange is expected to be a value between 0-100\nexport const percentChangeString = (percentChange: number) => {\n  return (percentChange / 100).toLocaleString(undefined, { style: 'percent', maximumSignificantDigits: 3 });\n};\n","import { CSSProperties } from 'react';\nimport * as React from 'react';\nimport tinycolor from 'tinycolor2';\n\nimport { formattedValueToString, DisplayValue, FieldConfig, FieldType, ThemeVisualizationColors } from '@grafana/data';\nimport { GraphDrawStyle, GraphFieldConfig, PercentChangeColorMode } from '@grafana/schema';\n\nimport { getTextColorForAlphaBackground } from '../../utils/colors';\nimport { calculateFontSize } from '../../utils/measureText';\nimport { Sparkline } from '../Sparkline/Sparkline';\n\nimport { BigValueColorMode, Props, BigValueJustifyMode, BigValueTextMode } from './BigValue';\nimport { percentChangeString } from './PercentChange';\n\nconst LINE_HEIGHT = 1.2;\nconst MAX_TITLE_SIZE = 30;\nconst VALUE_FONT_WEIGHT = 500;\n\nexport abstract class BigValueLayout {\n  titleFontSize: number;\n  valueFontSize: number;\n  percentFontSize: number;\n  chartHeight: number;\n  chartWidth: number;\n  valueColor: string;\n  panelPadding: number;\n  justifyCenter: boolean;\n  titleToAlignTo?: string;\n  valueToAlignTo: string;\n  maxTextWidth: number;\n  maxTextHeight: number;\n  textValues: BigValueTextValues;\n\n  constructor(private props: Props) {\n    const { width, height, value, text } = props;\n\n    this.valueColor = value.color ?? 'gray';\n    this.panelPadding = height > 100 ? 12 : 8;\n    this.textValues = getTextValues(props);\n    this.justifyCenter = shouldJustifyCenter(props.justifyMode, this.textValues.title);\n    this.valueToAlignTo = this.textValues.valueToAlignTo;\n    this.titleToAlignTo = this.textValues.titleToAlignTo;\n    this.titleFontSize = 0;\n    this.valueFontSize = 0;\n    this.percentFontSize = 0;\n    this.chartHeight = 0;\n    this.chartWidth = 0;\n    this.maxTextWidth = width - this.panelPadding * 2;\n    this.maxTextHeight = height - this.panelPadding * 2;\n\n    // Explicit font sizing\n    if (text) {\n      if (text.titleSize) {\n        this.titleFontSize = text.titleSize;\n        this.titleToAlignTo = undefined;\n      }\n      if (text.valueSize) {\n        this.valueFontSize = text.valueSize;\n        this.valueToAlignTo = '';\n      }\n      if (text.percentSize) {\n        this.percentFontSize = text.percentSize;\n      }\n    }\n  }\n\n  getTitleStyles(): CSSProperties {\n    const styles: CSSProperties = {\n      fontSize: `${this.titleFontSize}px`,\n      lineHeight: LINE_HEIGHT,\n    };\n\n    if (\n      this.props.colorMode === BigValueColorMode.Background ||\n      this.props.colorMode === BigValueColorMode.BackgroundSolid\n    ) {\n      styles.color = getTextColorForAlphaBackground(this.valueColor, this.props.theme.isDark);\n    }\n\n    return styles;\n  }\n\n  getValueStyles(): CSSProperties {\n    const styles: CSSProperties = {\n      fontSize: this.valueFontSize,\n      fontWeight: VALUE_FONT_WEIGHT,\n      lineHeight: LINE_HEIGHT,\n      position: 'relative',\n      zIndex: 1,\n    };\n\n    if (this.justifyCenter) {\n      styles.textAlign = 'center';\n    }\n\n    switch (this.props.colorMode) {\n      case BigValueColorMode.Value:\n        styles.color = this.valueColor;\n        break;\n      case BigValueColorMode.Background:\n      case BigValueColorMode.BackgroundSolid:\n        styles.color = getTextColorForAlphaBackground(this.valueColor, this.props.theme.isDark);\n        break;\n      case BigValueColorMode.None:\n        styles.color = this.props.theme.colors.text.primary;\n        break;\n    }\n\n    return styles;\n  }\n\n  getPercentChangeStyles(\n    percentChange: number,\n    percentChangeColorMode: PercentChangeColorMode | undefined,\n    valueStyles: React.CSSProperties\n  ): PercentChangeStyles {\n    const VALUE_TO_PERCENT_CHANGE_RATIO = 2.5;\n    const valueContainerStyles = this.getValueAndTitleContainerStyles();\n    const percentFontSize = this.percentFontSize || Math.max(this.valueFontSize / VALUE_TO_PERCENT_CHANGE_RATIO, 12);\n    let iconSize = this.percentFontSize ? this.percentFontSize - 3 : Math.max(this.valueFontSize / 3, 10);\n    const themeVisualizationColors = this.props.theme.visualization;\n    const color = getPercentChangeColor(percentChange, percentChangeColorMode, valueStyles, themeVisualizationColors);\n\n    const containerStyles: CSSProperties = {\n      fontSize: percentFontSize,\n      fontWeight: VALUE_FONT_WEIGHT,\n      lineHeight: LINE_HEIGHT,\n      position: 'relative',\n      display: 'flex',\n      alignItems: 'center',\n      gap: Math.max(percentFontSize / 3, 4),\n      zIndex: 1,\n      color,\n    };\n\n    if (this.justifyCenter) {\n      containerStyles.textAlign = 'center';\n    }\n\n    if (valueContainerStyles.flexDirection === 'column' && percentFontSize > 12) {\n      containerStyles.marginTop = -(percentFontSize / 4);\n    }\n\n    if (valueContainerStyles.flexDirection === 'row') {\n      containerStyles.alignItems = 'baseline';\n\n      // Center the percent change vertically relative to the value\n      // This approach seems to work the best for all edge cases\n      // Note: the fixed min font size causes this to be off for a few edge cases\n      containerStyles.lineHeight = LINE_HEIGHT * VALUE_TO_PERCENT_CHANGE_RATIO;\n    }\n\n    switch (this.props.colorMode) {\n      case BigValueColorMode.Background:\n      case BigValueColorMode.BackgroundSolid:\n        containerStyles.color = getTextColorForAlphaBackground(this.valueColor, this.props.theme.isDark);\n        break;\n    }\n\n    if (this.props.textMode === BigValueTextMode.None) {\n      containerStyles.fontSize = calculateFontSize(\n        percentChangeString(percentChange),\n        this.maxTextWidth * 0.8,\n        this.maxTextHeight * 0.8,\n        LINE_HEIGHT,\n        undefined,\n        VALUE_FONT_WEIGHT\n      );\n      iconSize = containerStyles.fontSize * 0.8;\n    }\n\n    return {\n      containerStyles,\n      iconSize: iconSize,\n    };\n  }\n\n  getValueAndTitleContainerStyles() {\n    const styles: CSSProperties = {\n      display: 'flex',\n      flexWrap: 'wrap',\n    };\n\n    if (this.justifyCenter) {\n      styles.alignItems = 'center';\n      styles.justifyContent = 'center';\n      styles.flexGrow = 1;\n      styles.gap = '0.75ch';\n    }\n\n    return styles;\n  }\n\n  getPanelStyles(): CSSProperties {\n    const { width, height, theme, colorMode, textMode } = this.props;\n\n    const panelStyles: CSSProperties = {\n      width: `${width}px`,\n      height: `${height}px`,\n      padding: `${textMode === BigValueTextMode.None ? 2 : this.panelPadding}px`,\n      borderRadius: theme.shape.radius.default,\n      position: 'relative',\n      display: 'flex',\n    };\n\n    const themeFactor = theme.isDark ? 1 : -0.7;\n\n    switch (colorMode) {\n      case BigValueColorMode.Background:\n        const bgColor2 = tinycolor(this.valueColor)\n          .darken(15 * themeFactor)\n          .spin(8)\n          .toRgbString();\n        const bgColor3 = tinycolor(this.valueColor)\n          .darken(5 * themeFactor)\n          .spin(-8)\n          .toRgbString();\n        panelStyles.background = `linear-gradient(120deg, ${bgColor2}, ${bgColor3})`;\n        break;\n      case BigValueColorMode.BackgroundSolid:\n        panelStyles.background = tinycolor(this.valueColor).toString();\n        break;\n      case BigValueColorMode.Value:\n        panelStyles.background = `transparent`;\n        break;\n    }\n\n    if (this.justifyCenter) {\n      panelStyles.alignItems = 'center';\n      panelStyles.flexDirection = 'row';\n    }\n\n    return panelStyles;\n  }\n\n  renderChart(): JSX.Element | null {\n    const { sparkline, colorMode } = this.props;\n\n    if (!sparkline || sparkline.y?.type !== FieldType.number) {\n      return null;\n    }\n\n    let fillColor: string;\n    let lineColor: string;\n\n    switch (colorMode) {\n      case BigValueColorMode.Background:\n      case BigValueColorMode.BackgroundSolid:\n        fillColor = 'rgba(255,255,255,0.4)';\n        lineColor = tinycolor(this.valueColor).brighten(40).toRgbString();\n        break;\n      case BigValueColorMode.None:\n      case BigValueColorMode.Value:\n      default:\n        lineColor = this.valueColor;\n        fillColor = tinycolor(this.valueColor).setAlpha(0.2).toRgbString();\n        break;\n    }\n\n    // The graph field configuration applied to Y values\n    const config: FieldConfig<GraphFieldConfig> = {\n      custom: {\n        drawStyle: GraphDrawStyle.Line,\n        lineWidth: 1,\n        fillColor,\n        lineColor,\n      },\n    };\n\n    return (\n      <div style={this.getChartStyles()}>\n        <Sparkline\n          height={this.chartHeight}\n          width={this.chartWidth}\n          sparkline={sparkline}\n          config={config}\n          theme={this.props.theme}\n        />\n      </div>\n    );\n  }\n  getChartStyles(): CSSProperties {\n    return {\n      position: 'absolute',\n      right: 0,\n      bottom: 0,\n    };\n  }\n}\n\nexport class WideNoChartLayout extends BigValueLayout {\n  constructor(props: Props) {\n    super(props);\n\n    const valueWidthPercent = this.titleToAlignTo?.length ? 0.3 : 1.0;\n\n    if (this.valueToAlignTo.length) {\n      // initial value size\n      this.valueFontSize = calculateFontSize(\n        this.valueToAlignTo,\n        this.maxTextWidth * valueWidthPercent,\n        this.maxTextHeight,\n        LINE_HEIGHT,\n        undefined,\n        VALUE_FONT_WEIGHT\n      );\n    }\n\n    if (this.titleToAlignTo?.length) {\n      // How big can we make the title and still have it fit\n      this.titleFontSize = calculateFontSize(\n        this.titleToAlignTo,\n        this.maxTextWidth * 0.6,\n        this.maxTextHeight,\n        LINE_HEIGHT,\n        MAX_TITLE_SIZE\n      );\n\n      // make sure it's a bit smaller than valueFontSize\n      this.titleFontSize = Math.min(this.valueFontSize * 0.7, this.titleFontSize);\n    }\n  }\n\n  getValueAndTitleContainerStyles() {\n    const styles = super.getValueAndTitleContainerStyles();\n    styles.flexDirection = 'row';\n    styles.alignItems = 'center';\n    styles.flexGrow = 1;\n\n    if (!this.justifyCenter) {\n      styles.justifyContent = 'space-between';\n    }\n\n    return styles;\n  }\n\n  renderChart(): JSX.Element | null {\n    return null;\n  }\n\n  getPanelStyles() {\n    const panelStyles = super.getPanelStyles();\n    panelStyles.alignItems = 'center';\n    return panelStyles;\n  }\n}\n\nexport class WideWithChartLayout extends BigValueLayout {\n  constructor(props: Props) {\n    super(props);\n\n    const { width, height } = props;\n\n    const chartHeightPercent = 0.5;\n    const titleWidthPercent = 0.6;\n    const valueWidthPercent = 1 - titleWidthPercent;\n    const textHeightPercent = 0.4;\n\n    this.chartWidth = width;\n    this.chartHeight = height * chartHeightPercent;\n\n    if (this.titleToAlignTo?.length) {\n      this.titleFontSize = calculateFontSize(\n        this.titleToAlignTo,\n        this.maxTextWidth * titleWidthPercent,\n        this.maxTextHeight * textHeightPercent,\n        LINE_HEIGHT,\n        MAX_TITLE_SIZE\n      );\n    }\n\n    if (this.valueToAlignTo.length) {\n      this.valueFontSize = calculateFontSize(\n        this.valueToAlignTo,\n        this.maxTextWidth * valueWidthPercent,\n        this.maxTextHeight * chartHeightPercent,\n        LINE_HEIGHT,\n        undefined,\n        VALUE_FONT_WEIGHT\n      );\n    }\n  }\n\n  getValueAndTitleContainerStyles() {\n    const styles = super.getValueAndTitleContainerStyles();\n    styles.flexDirection = 'row';\n    styles.flexGrow = 1;\n\n    if (!this.justifyCenter) {\n      styles.justifyContent = 'space-between';\n    }\n\n    return styles;\n  }\n\n  getPanelStyles() {\n    const styles = super.getPanelStyles();\n    styles.flexDirection = 'row';\n    styles.justifyContent = 'space-between';\n    return styles;\n  }\n}\n\nexport class StackedWithChartLayout extends BigValueLayout {\n  constructor(props: Props) {\n    super(props);\n\n    const { width, height } = props;\n    const titleHeightPercent = 0.15;\n    const chartHeightPercent = 0.25;\n    let titleHeight = 0;\n\n    this.chartHeight = height * chartHeightPercent;\n    this.chartWidth = width;\n\n    if (this.titleToAlignTo?.length) {\n      this.titleFontSize = calculateFontSize(\n        this.titleToAlignTo,\n        this.maxTextWidth,\n        height * titleHeightPercent,\n        LINE_HEIGHT,\n        MAX_TITLE_SIZE\n      );\n\n      titleHeight = this.titleFontSize * LINE_HEIGHT;\n    }\n\n    if (this.valueToAlignTo.length) {\n      this.valueFontSize = calculateFontSize(\n        this.valueToAlignTo,\n        this.maxTextWidth,\n        this.maxTextHeight - this.chartHeight - titleHeight,\n        LINE_HEIGHT,\n        undefined,\n        VALUE_FONT_WEIGHT\n      );\n    }\n\n    // make title fontsize it's a bit smaller than valueFontSize\n    if (this.titleToAlignTo?.length) {\n      this.titleFontSize = Math.min(this.valueFontSize * 0.7, this.titleFontSize);\n    }\n\n    // make chart take up unused space\n    this.chartHeight = height - this.titleFontSize * LINE_HEIGHT - this.valueFontSize * LINE_HEIGHT;\n  }\n\n  getValueAndTitleContainerStyles() {\n    const styles = super.getValueAndTitleContainerStyles();\n    styles.flexDirection = 'column';\n    styles.justifyContent = 'center';\n    return styles;\n  }\n\n  getPanelStyles() {\n    const styles = super.getPanelStyles();\n    styles.flexDirection = 'column';\n    return styles;\n  }\n}\n\nexport class StackedWithNoChartLayout extends BigValueLayout {\n  constructor(props: Props) {\n    super(props);\n\n    const { height } = props;\n    const titleHeightPercent = 0.15;\n    let titleHeight = 0;\n\n    if (this.titleToAlignTo?.length) {\n      this.titleFontSize = calculateFontSize(\n        this.titleToAlignTo,\n        this.maxTextWidth,\n        height * titleHeightPercent,\n        LINE_HEIGHT,\n        MAX_TITLE_SIZE\n      );\n\n      titleHeight = this.titleFontSize * LINE_HEIGHT;\n    }\n\n    if (this.valueToAlignTo.length) {\n      this.valueFontSize = calculateFontSize(\n        this.valueToAlignTo,\n        this.maxTextWidth,\n        this.maxTextHeight - titleHeight,\n        LINE_HEIGHT,\n        undefined,\n        VALUE_FONT_WEIGHT\n      );\n    }\n\n    if (this.titleToAlignTo?.length) {\n      // make title fontsize it's a bit smaller than valueFontSize\n      this.titleFontSize = Math.min(this.valueFontSize * 0.7, this.titleFontSize);\n    }\n  }\n\n  getValueAndTitleContainerStyles() {\n    const styles = super.getValueAndTitleContainerStyles();\n    styles.flexDirection = 'column';\n    styles.flexGrow = 1;\n    return styles;\n  }\n\n  renderChart(): JSX.Element | null {\n    return null;\n  }\n\n  getPanelStyles() {\n    const styles = super.getPanelStyles();\n    styles.alignItems = 'center';\n    return styles;\n  }\n}\n\nexport function buildLayout(props: Props): BigValueLayout {\n  const { width, height, sparkline } = props;\n  const useWideLayout = width / height > 2.5 && !props.disableWideLayout;\n\n  if (useWideLayout) {\n    if (height > 50 && !!sparkline && sparkline.y.values.length > 1) {\n      return new WideWithChartLayout(props);\n    } else {\n      return new WideNoChartLayout(props);\n    }\n  }\n\n  // stacked layouts\n  if (height > 100 && sparkline && sparkline.y.values.length > 1) {\n    return new StackedWithChartLayout(props);\n  } else {\n    return new StackedWithNoChartLayout(props);\n  }\n}\n\nexport function shouldJustifyCenter(justifyMode?: BigValueJustifyMode, title?: string) {\n  if (justifyMode === BigValueJustifyMode.Center) {\n    return true;\n  }\n\n  return (title ?? '').length === 0;\n}\n\nexport interface BigValueTextValues extends DisplayValue {\n  valueToAlignTo: string;\n  titleToAlignTo?: string;\n  tooltip?: string;\n}\n\nfunction getTextValues(props: Props): BigValueTextValues {\n  const { value, alignmentFactors, count } = props;\n  let { textMode } = props;\n\n  const titleToAlignTo = alignmentFactors ? alignmentFactors.title : value.title;\n  const valueToAlignTo = formattedValueToString(alignmentFactors ? alignmentFactors : value);\n\n  // In the auto case we only show title if this big value is part of more panes (count > 1)\n  if (textMode === BigValueTextMode.Auto && (count ?? 1) === 1) {\n    textMode = BigValueTextMode.Value;\n  }\n\n  switch (textMode) {\n    case BigValueTextMode.Name:\n      return {\n        ...value,\n        title: undefined,\n        prefix: undefined,\n        suffix: undefined,\n        text: value.title || '',\n        titleToAlignTo: undefined,\n        valueToAlignTo: titleToAlignTo ?? '',\n        tooltip: formattedValueToString(value),\n      };\n    case BigValueTextMode.Value:\n      return {\n        ...value,\n        title: undefined,\n        titleToAlignTo: undefined,\n        valueToAlignTo,\n        tooltip: value.title,\n      };\n    case BigValueTextMode.None:\n      return {\n        numeric: value.numeric,\n        color: value.color,\n        title: undefined,\n        text: '',\n        titleToAlignTo: undefined,\n        valueToAlignTo: '1',\n        tooltip: `Name: ${value.title}\\nValue: ${formattedValueToString(value)}`,\n      };\n    case BigValueTextMode.ValueAndName:\n    default:\n      return {\n        ...value,\n        titleToAlignTo,\n        valueToAlignTo,\n      };\n  }\n}\n\nexport interface PercentChangeStyles {\n  containerStyles: CSSProperties;\n  iconSize: number;\n}\n\nexport function getPercentChangeColor(\n  percentChange: number,\n  percentChangeColorMode: PercentChangeColorMode | undefined,\n  valueStyles: CSSProperties,\n  themeVisualizationColors: ThemeVisualizationColors\n): string | undefined {\n  if (percentChangeColorMode === PercentChangeColorMode.SameAsValue) {\n    return valueStyles.color;\n  } else {\n    return percentChange * (percentChangeColorMode === PercentChangeColorMode.Inverted ? -1 : 1) > 0\n      ? themeVisualizationColors.getColorByName('green')\n      : themeVisualizationColors.getColorByName('red');\n  }\n}\n","import { cx } from '@emotion/css';\nimport { PureComponent } from 'react';\nimport * as React from 'react';\n\nimport { DisplayValue, DisplayValueAlignmentFactors, FieldSparkline } from '@grafana/data';\nimport { PercentChangeColorMode, VizTextDisplayOptions } from '@grafana/schema';\n\nimport { Themeable2 } from '../../types/theme';\nimport { clearButtonStyles } from '../Button/Button';\nimport { FormattedValueDisplay } from '../FormattedValueDisplay/FormattedValueDisplay';\n\nimport { buildLayout } from './BigValueLayout';\nimport { PercentChange } from './PercentChange';\n\nexport enum BigValueColorMode {\n  Background = 'background',\n  BackgroundSolid = 'background_solid',\n  None = 'none',\n  Value = 'value',\n}\n\nexport enum BigValueGraphMode {\n  None = 'none',\n  Line = 'line',\n  Area = 'area',\n}\n\nexport enum BigValueJustifyMode {\n  Auto = 'auto',\n  Center = 'center',\n}\n\n/**\n * Options for how the value & title are to be displayed\n */\nexport enum BigValueTextMode {\n  Auto = 'auto',\n  Value = 'value',\n  ValueAndName = 'value_and_name',\n  Name = 'name',\n  None = 'none',\n}\n\nexport interface Props extends Themeable2 {\n  /** Height of the component */\n  height: number;\n  /** Width of the component */\n  width: number;\n  /** Value displayed as Big Value */\n  value: DisplayValue;\n  /** Sparkline values for showing a graph under/behind the value  */\n  sparkline?: FieldSparkline;\n  /** onClick handler for the value */\n  onClick?: React.MouseEventHandler<HTMLElement>;\n  /** Custom styling */\n  className?: string;\n  /** Color mode for coloring the value or the background */\n  colorMode: BigValueColorMode;\n  /** Show a graph behind/under the value */\n  graphMode: BigValueGraphMode;\n  /** Auto justify value and text or center it */\n  justifyMode?: BigValueJustifyMode;\n  /** Factors that should influence the positioning of the text  */\n  alignmentFactors?: DisplayValueAlignmentFactors;\n  /** Explicit font size control */\n  text?: VizTextDisplayOptions;\n  /** Specify which text should be visible in the BigValue */\n  textMode?: BigValueTextMode;\n  /** If true disables the tooltip */\n  hasLinks?: boolean;\n  /** Percent change color mode */\n  percentChangeColorMode?: PercentChangeColorMode;\n\n  /**\n   * If part of a series of stat panes, this is the total number.\n   * Used by BigValueTextMode.Auto text mode.\n   */\n  count?: number;\n\n  /**\n   * Disable the wide layout for the BigValue\n   */\n  disableWideLayout?: boolean;\n}\n\nexport class BigValue extends PureComponent<Props> {\n  static defaultProps: Partial<Props> = {\n    justifyMode: BigValueJustifyMode.Auto,\n  };\n\n  render() {\n    const { onClick, className, hasLinks, theme } = this.props;\n    const layout = buildLayout(this.props);\n    const panelStyles = layout.getPanelStyles();\n    const valueAndTitleContainerStyles = layout.getValueAndTitleContainerStyles();\n    const valueStyles = layout.getValueStyles();\n    const titleStyles = layout.getTitleStyles();\n    const textValues = layout.textValues;\n    const percentChange = this.props.value.percentChange;\n    const percentChangeColorMode = this.props.percentChangeColorMode;\n    const showPercentChange = percentChange != null && !Number.isNaN(percentChange);\n\n    // When there is an outer data link this tooltip will override the outer native tooltip\n    const tooltip = hasLinks ? undefined : textValues.tooltip;\n\n    if (!onClick) {\n      return (\n        <div className={className} style={panelStyles} title={tooltip}>\n          <div style={valueAndTitleContainerStyles}>\n            {textValues.title && <div style={titleStyles}>{textValues.title}</div>}\n            <FormattedValueDisplay value={textValues} style={valueStyles} />\n            {showPercentChange && (\n              <PercentChange\n                percentChange={percentChange}\n                styles={layout.getPercentChangeStyles(percentChange, percentChangeColorMode, valueStyles)}\n              />\n            )}\n          </div>\n          {layout.renderChart()}\n        </div>\n      );\n    }\n\n    return (\n      <button\n        type=\"button\"\n        className={cx(clearButtonStyles(theme), className)}\n        style={panelStyles}\n        onClick={onClick}\n        title={tooltip}\n      >\n        <div style={valueAndTitleContainerStyles}>\n          {textValues.title && <div style={titleStyles}>{textValues.title}</div>}\n          <FormattedValueDisplay value={textValues} style={valueStyles} />\n        </div>\n        {layout.renderChart()}\n      </button>\n    );\n  }\n}\n","import {\n  DisplayValue,\n  FALLBACK_COLOR,\n  FieldColorModeId,\n  FieldConfig,\n  GAUGE_DEFAULT_MAXIMUM,\n  GAUGE_DEFAULT_MINIMUM,\n  getActiveThreshold,\n  GrafanaTheme,\n  GrafanaTheme2,\n  Threshold,\n  ThresholdsConfig,\n  ThresholdsMode,\n} from '@grafana/data';\nimport { VizOrientation } from '@grafana/schema';\n\ninterface GaugeAutoProps {\n  titleFontSize: number;\n  gaugeHeight: number;\n  showLabel: boolean;\n}\n\nexport const DEFAULT_THRESHOLDS: ThresholdsConfig = {\n  mode: ThresholdsMode.Absolute,\n  steps: [\n    { value: -Infinity, color: 'green' },\n    { value: 80, color: 'red' },\n  ],\n};\n\nexport function calculateGaugeAutoProps(\n  width: number,\n  height: number,\n  title: string | undefined,\n  orientation?: VizOrientation\n): GaugeAutoProps {\n  const showLabel = title !== null && title !== undefined;\n  const titleFontSizeDimension = orientation === VizOrientation.Vertical ? height : width;\n  const titleFontSize = Math.min((titleFontSizeDimension * 0.15) / 1.5, 20); // 20% of height * line-height, max 40px\n  const titleHeight = titleFontSize * 1.5;\n  const availableHeight = showLabel ? height - titleHeight : height;\n  const gaugeHeight = Math.min(availableHeight, width);\n\n  return {\n    showLabel,\n    gaugeHeight,\n    titleFontSize,\n  };\n}\n\nexport function getFormattedThresholds(\n  decimals: number,\n  field: FieldConfig,\n  value: DisplayValue,\n  theme: GrafanaTheme | GrafanaTheme2\n): Threshold[] {\n  if (field.color?.mode !== FieldColorModeId.Thresholds) {\n    return [{ value: field.min ?? GAUGE_DEFAULT_MINIMUM, color: value.color ?? FALLBACK_COLOR }];\n  }\n\n  const thresholds = field.thresholds ?? DEFAULT_THRESHOLDS;\n  const isPercent = thresholds.mode === ThresholdsMode.Percentage;\n  const steps = thresholds.steps;\n\n  let min = field.min ?? GAUGE_DEFAULT_MINIMUM;\n  let max = field.max ?? GAUGE_DEFAULT_MAXIMUM;\n\n  if (isPercent) {\n    min = 0;\n    max = 100;\n  }\n\n  const first = getActiveThreshold(min, steps);\n  const last = getActiveThreshold(max, steps);\n  const formatted: Threshold[] = [\n    { value: +min.toFixed(decimals), color: theme.visualization.getColorByName(first.color) },\n  ];\n  let skip = true;\n  for (let i = 0; i < steps.length; i++) {\n    const step = steps[i];\n    if (skip) {\n      if (first === step) {\n        skip = false;\n      }\n      continue;\n    }\n    const prev = steps[i - 1];\n    formatted.push({ value: step.value, color: theme.visualization.getColorByName(prev.color) });\n    if (step === last) {\n      break;\n    }\n  }\n  formatted.push({ value: +max.toFixed(decimals), color: theme.visualization.getColorByName(last.color) });\n  return formatted;\n}\n","import $ from 'jquery';\nimport { PureComponent } from 'react';\nimport * as React from 'react';\n\nimport {\n  DisplayValue,\n  formattedValueToString,\n  FieldConfig,\n  ThresholdsMode,\n  GAUGE_DEFAULT_MAXIMUM,\n  GAUGE_DEFAULT_MINIMUM,\n  GrafanaTheme2,\n} from '@grafana/data';\nimport { VizTextDisplayOptions, VizOrientation } from '@grafana/schema';\n\nimport { calculateFontSize } from '../../utils/measureText';\nimport { clearButtonStyles } from '../Button/Button';\n\nimport { calculateGaugeAutoProps, DEFAULT_THRESHOLDS, getFormattedThresholds } from './utils';\n\nexport interface Props {\n  height: number;\n  field: FieldConfig;\n  showThresholdMarkers: boolean;\n  showThresholdLabels: boolean;\n  width: number;\n  value: DisplayValue;\n  text?: VizTextDisplayOptions;\n  onClick?: React.MouseEventHandler<HTMLElement>;\n  className?: string;\n  theme: GrafanaTheme2;\n  orientation?: VizOrientation;\n}\n\nexport class Gauge extends PureComponent<Props> {\n  canvasElement: HTMLDivElement | null = null;\n\n  static defaultProps: Partial<Props> = {\n    showThresholdMarkers: true,\n    showThresholdLabels: false,\n    field: {\n      min: 0,\n      max: 100,\n      thresholds: DEFAULT_THRESHOLDS,\n    },\n  };\n\n  componentDidMount() {\n    this.draw();\n  }\n\n  componentDidUpdate() {\n    this.draw();\n  }\n\n  draw() {\n    const { field, showThresholdLabels, showThresholdMarkers, width, height, theme, value, orientation } = this.props;\n\n    const autoProps = calculateGaugeAutoProps(width, height, value.title);\n    // If the gauge is in vertical layout, we need to set the width of the gauge to the height of the gauge\n    const calculatedGaugeWidth = orientation === VizOrientation.Vertical ? autoProps.gaugeHeight : width;\n    const dimension = Math.min(calculatedGaugeWidth, autoProps.gaugeHeight);\n    const backgroundColor = theme.colors.background.secondary;\n    const gaugeWidthReduceRatio = showThresholdLabels ? 1.5 : 1;\n    const gaugeWidth = Math.min(dimension / 5.5, 40) / gaugeWidthReduceRatio;\n    const thresholdMarkersWidth = gaugeWidth / 5;\n    const text = formattedValueToString(value);\n    // This not 100% accurate as I am unsure of flot's calculations here\n    const valueWidthBase = Math.min(calculatedGaugeWidth, dimension * 1.3) * 0.9;\n    // remove gauge & marker width (on left and right side)\n    // and 10px is some padding that flot adds to the outer canvas\n    const valueWidth =\n      valueWidthBase -\n      ((gaugeWidth + (showThresholdMarkers ? thresholdMarkersWidth : 0) + (showThresholdLabels ? 10 : 0)) * 2 + 10);\n    const fontSize = this.props.text?.valueSize ?? calculateFontSize(text, valueWidth, dimension, 1, gaugeWidth * 1.7);\n    const thresholdLabelFontSize = Math.max(fontSize / 2.5, 12);\n\n    let min = field.min ?? GAUGE_DEFAULT_MINIMUM;\n    let max = field.max ?? GAUGE_DEFAULT_MAXIMUM;\n    let numeric = value.numeric;\n\n    if (field.thresholds?.mode === ThresholdsMode.Percentage) {\n      min = 0;\n      max = 100;\n      if (value.percent === undefined) {\n        numeric = ((numeric - min) / (max - min)) * 100;\n      } else {\n        numeric = value.percent! * 100;\n      }\n    }\n\n    const decimals = field.decimals === undefined ? 2 : field.decimals!;\n\n    if (showThresholdMarkers) {\n      min = +min.toFixed(decimals);\n      max = +max.toFixed(decimals);\n    }\n\n    const options = {\n      series: {\n        gauges: {\n          gauge: {\n            min,\n            max,\n            neutralValue: field.custom?.neutral,\n            background: { color: backgroundColor },\n            border: { color: null },\n            shadow: { show: false },\n            width: gaugeWidth,\n          },\n          frame: { show: false },\n          label: { show: false },\n          layout: { margin: 0, thresholdWidth: 0, vMargin: 0 },\n          cell: { border: { width: 0 } },\n          threshold: {\n            values: getFormattedThresholds(decimals, field, value, theme),\n            label: {\n              show: showThresholdLabels,\n              margin: thresholdMarkersWidth + 1,\n              font: { size: thresholdLabelFontSize },\n            },\n            show: showThresholdMarkers,\n            width: thresholdMarkersWidth,\n          },\n          value: {\n            color: value.color,\n            formatter: () => {\n              return text;\n            },\n            font: { size: fontSize, family: theme.typography.fontFamily },\n          },\n          show: true,\n        },\n      },\n    };\n\n    const plotSeries = {\n      data: [[0, numeric]],\n      label: value.title,\n    };\n\n    try {\n      if (this.canvasElement) {\n        $.plot(this.canvasElement, [plotSeries], options);\n      }\n    } catch (err) {\n      console.error('Gauge rendering error', err, options, value);\n    }\n  }\n\n  renderVisualization = () => {\n    const { width, value, height, onClick, text, theme, orientation } = this.props;\n    const autoProps = calculateGaugeAutoProps(width, height, value.title, orientation);\n\n    // If the gauge is in vertical layout, we need to set the width of the gauge to the height of the gauge\n    const gaugeWidth = orientation === VizOrientation.Vertical ? `${autoProps.gaugeHeight}px` : '100%';\n\n    const gaugeElement = (\n      <div\n        style={{ height: `${autoProps.gaugeHeight}px`, width: gaugeWidth }}\n        ref={(element) => (this.canvasElement = element)}\n      />\n    );\n\n    return (\n      <>\n        {onClick ? (\n          <button className={clearButtonStyles(theme)} type=\"button\" onClick={onClick}>\n            {gaugeElement}\n          </button>\n        ) : (\n          gaugeElement\n        )}\n        {autoProps.showLabel && (\n          <div\n            style={{\n              textAlign: 'center',\n              fontSize: text?.titleSize ?? autoProps.titleFontSize,\n              overflow: 'hidden',\n              textOverflow: 'ellipsis',\n              whiteSpace: 'nowrap',\n              position: 'relative',\n              width: gaugeWidth,\n              top: '-4px',\n              cursor: 'default',\n            }}\n          >\n            {value.title}\n          </div>\n        )}\n      </>\n    );\n  };\n\n  render() {\n    return (\n      <div\n        style={{\n          width: '100%',\n          height: '100%',\n          display: 'flex',\n          flexDirection: 'column',\n          justifyContent: 'center',\n          overflow: 'hidden',\n        }}\n        className={this.props.className}\n      >\n        {this.renderVisualization()}\n      </div>\n    );\n  }\n}\n","import { LineStyle } from '@grafana/schema';\n\nexport enum ColorIndicator {\n  series = 'series',\n  value = 'value',\n  hexagon = 'hexagon',\n  pie_1_4 = 'pie_1_4',\n  pie_2_4 = 'pie_2_4',\n  pie_3_4 = 'pie_3_4',\n  marker_sm = 'marker_sm',\n  marker_md = 'marker_md',\n  marker_lg = 'marker_lg',\n}\n\nexport enum ColorPlacement {\n  hidden = 'hidden',\n  first = 'first',\n  leading = 'leading',\n  trailing = 'trailing',\n}\n\nexport interface VizTooltipItem {\n  label: string;\n  value: string;\n  color?: string;\n  colorIndicator?: ColorIndicator;\n  colorPlacement?: ColorPlacement;\n  isActive?: boolean;\n  lineStyle?: LineStyle;\n  isHiddenFromViz?: boolean;\n\n  // internal/tmp for sorting\n  numeric?: number;\n}\n\nexport const DEFAULT_COLOR_INDICATOR = ColorIndicator.series;\n","import { FALLBACK_COLOR, Field, FieldType, formattedValueToString, getFieldColorModeForField } from '@grafana/data';\nimport { SortOrder, TooltipDisplayMode } from '@grafana/schema';\n\nimport { ColorIndicatorStyles } from './VizTooltipColorIndicator';\nimport { ColorIndicator, ColorPlacement, VizTooltipItem } from './types';\n\nexport const calculateTooltipPosition = (\n  xPos = 0,\n  yPos = 0,\n  tooltipWidth = 0,\n  tooltipHeight = 0,\n  xOffset = 0,\n  yOffset = 0,\n  windowWidth = 0,\n  windowHeight = 0\n) => {\n  let x = xPos;\n  let y = yPos;\n\n  const overflowRight = Math.max(xPos + xOffset + tooltipWidth - (windowWidth - xOffset), 0);\n  const overflowLeft = Math.abs(Math.min(xPos - xOffset - tooltipWidth - xOffset, 0));\n  const wouldOverflowRight = overflowRight > 0;\n  const wouldOverflowLeft = overflowLeft > 0;\n\n  const overflowBelow = Math.max(yPos + yOffset + tooltipHeight - (windowHeight - yOffset), 0);\n  const overflowAbove = Math.abs(Math.min(yPos - yOffset - tooltipHeight - yOffset, 0));\n  const wouldOverflowBelow = overflowBelow > 0;\n  const wouldOverflowAbove = overflowAbove > 0;\n\n  if (wouldOverflowRight && wouldOverflowLeft) {\n    x = overflowRight > overflowLeft ? xOffset : windowWidth - xOffset - tooltipWidth;\n  } else if (wouldOverflowRight) {\n    x = xPos - xOffset - tooltipWidth;\n  } else {\n    x = xPos + xOffset;\n  }\n\n  if (wouldOverflowBelow && wouldOverflowAbove) {\n    y = overflowBelow > overflowAbove ? yOffset : windowHeight - yOffset - tooltipHeight;\n  } else if (wouldOverflowBelow) {\n    y = yPos - yOffset - tooltipHeight;\n  } else {\n    y = yPos + yOffset;\n  }\n  return { x, y };\n};\n\nexport const getColorIndicatorClass = (colorIndicator: string, styles: ColorIndicatorStyles) => {\n  switch (colorIndicator) {\n    case ColorIndicator.series:\n      return styles.series;\n    case ColorIndicator.value:\n      return styles.value;\n    case ColorIndicator.hexagon:\n      return styles.hexagon;\n    case ColorIndicator.pie_1_4:\n      return styles.pie_1_4;\n    case ColorIndicator.pie_2_4:\n      return styles.pie_2_4;\n    case ColorIndicator.pie_3_4:\n      return styles.pie_3_4;\n    case ColorIndicator.marker_sm:\n      return styles.marker_sm;\n    case ColorIndicator.marker_md:\n      return styles.marker_md;\n    case ColorIndicator.marker_lg:\n      return styles.marker_lg;\n    default:\n      return styles.value;\n  }\n};\n\nconst numberCmp = (a: VizTooltipItem, b: VizTooltipItem) => a.numeric! - b.numeric!;\nconst collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });\nconst stringCmp = (a: VizTooltipItem, b: VizTooltipItem) => collator.compare(`${a.value}`, `${b.value}`);\n\nexport const getContentItems = (\n  fields: Field[],\n  xField: Field,\n  dataIdxs: Array<number | null>,\n  seriesIdx: number | null | undefined,\n  mode: TooltipDisplayMode,\n  sortOrder: SortOrder,\n  fieldFilter = (field: Field) => true,\n  hideZeros = false,\n  _restFields?: Field[]\n): VizTooltipItem[] => {\n  let rows: VizTooltipItem[] = [];\n\n  let allNumeric = true;\n\n  for (let i = 0; i < fields.length; i++) {\n    const field = fields[i];\n\n    if (\n      field === xField ||\n      field.type === FieldType.time ||\n      !fieldFilter(field) ||\n      field.config.custom?.hideFrom?.tooltip\n    ) {\n      continue;\n    }\n\n    // in single mode, skip all but closest field\n    if (mode === TooltipDisplayMode.Single && seriesIdx !== i) {\n      continue;\n    }\n\n    let dataIdx = dataIdxs[i];\n\n    // omit non-hovered\n    if (dataIdx == null) {\n      continue;\n    }\n\n    if (!(field.type === FieldType.number || field.type === FieldType.boolean || field.type === FieldType.enum)) {\n      allNumeric = false;\n    }\n\n    const v = fields[i].values[dataIdx];\n\n    if ((v == null && field.config.noValue == null) || (hideZeros && v === 0)) {\n      continue;\n    }\n\n    const display = field.display!(v); // super expensive :(\n\n    // sort NaN and non-numeric to bottom (regardless of sort order)\n    const numeric = !Number.isNaN(display.numeric)\n      ? display.numeric\n      : sortOrder === SortOrder.Descending\n        ? Number.MIN_SAFE_INTEGER\n        : Number.MAX_SAFE_INTEGER;\n\n    const { colorIndicator, colorPlacement } = getIndicatorAndPlacement(field);\n\n    rows.push({\n      label: field.state?.displayName ?? field.name,\n      value: formattedValueToString(display),\n      color: display.color ?? FALLBACK_COLOR,\n      colorIndicator,\n      colorPlacement,\n      isActive: mode === TooltipDisplayMode.Multi && seriesIdx === i,\n      numeric,\n      lineStyle: field.config.custom?.lineStyle,\n    });\n  }\n\n  _restFields?.forEach((field) => {\n    if (!field.config.custom?.hideFrom?.tooltip) {\n      const { colorIndicator, colorPlacement } = getIndicatorAndPlacement(field);\n      const display = field.display!(field.values[dataIdxs[0]!]);\n\n      rows.push({\n        label: field.state?.displayName ?? field.name,\n        value: formattedValueToString(display),\n        color: FALLBACK_COLOR,\n        colorIndicator,\n        colorPlacement,\n        lineStyle: field.config.custom?.lineStyle,\n        isHiddenFromViz: true,\n      });\n    }\n  });\n\n  if (sortOrder !== SortOrder.None && rows.length > 1) {\n    const cmp = allNumeric ? numberCmp : stringCmp;\n    const mult = sortOrder === SortOrder.Descending ? -1 : 1;\n    rows.sort((a, b) => mult * cmp(a, b));\n  }\n\n  return rows;\n};\n\nconst getIndicatorAndPlacement = (field: Field) => {\n  const colorMode = getFieldColorModeForField(field);\n\n  let colorIndicator = ColorIndicator.series;\n  let colorPlacement = ColorPlacement.first;\n\n  if (colorMode.isByValue) {\n    colorIndicator = ColorIndicator.value;\n    colorPlacement = ColorPlacement.trailing;\n  }\n\n  return { colorIndicator, colorPlacement };\n};\n","import { css, cx } from '@emotion/css';\nimport { useState, HTMLAttributes, useMemo, useRef, useLayoutEffect } from 'react';\nimport * as React from 'react';\nimport { useWindowSize } from 'react-use';\n\nimport { Dimensions2D, GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getTooltipContainerStyles } from '../../themes/mixins';\n\nimport { calculateTooltipPosition } from './utils';\n\n/**\n * @public\n */\nexport interface VizTooltipContainerProps extends HTMLAttributes<HTMLDivElement> {\n  position: { x: number; y: number };\n  offset: { x: number; y: number };\n  children?: React.ReactNode;\n  allowPointerEvents?: boolean;\n}\n\n/**\n * @public\n */\nexport const VizTooltipContainer = ({\n  position: { x: positionX, y: positionY },\n  offset: { x: offsetX, y: offsetY },\n  children,\n  allowPointerEvents = false,\n  className,\n  ...otherProps\n}: VizTooltipContainerProps) => {\n  const tooltipRef = useRef<HTMLDivElement>(null);\n  const [tooltipMeasurement, setTooltipMeasurement] = useState<Dimensions2D>({ width: 0, height: 0 });\n  const { width, height } = useWindowSize();\n  const [placement, setPlacement] = useState({\n    x: positionX + offsetX,\n    y: positionY + offsetY,\n  });\n\n  const resizeObserver = useMemo(\n    () =>\n      // TS has hard time playing games with @types/resize-observer-browser, hence the ignore\n      // @ts-ignore\n      new ResizeObserver((entries) => {\n        for (let entry of entries) {\n          const tW = Math.floor(entry.contentRect.width + 2 * 8); //  adding padding until Safari supports borderBoxSize\n          const tH = Math.floor(entry.contentRect.height + 2 * 8);\n          if (tooltipMeasurement.width !== tW || tooltipMeasurement.height !== tH) {\n            setTooltipMeasurement({\n              width: Math.min(tW, width),\n              height: Math.min(tH, height),\n            });\n          }\n        }\n      }),\n    [tooltipMeasurement, width, height]\n  );\n\n  useLayoutEffect(() => {\n    if (tooltipRef.current) {\n      resizeObserver.observe(tooltipRef.current);\n    }\n\n    return () => {\n      resizeObserver.disconnect();\n    };\n  }, [resizeObserver]);\n\n  // Make sure tooltip does not overflow window\n  useLayoutEffect(() => {\n    if (tooltipRef && tooltipRef.current) {\n      const { x, y } = calculateTooltipPosition(\n        positionX,\n        positionY,\n        tooltipMeasurement.width,\n        tooltipMeasurement.height,\n        offsetX,\n        offsetY,\n        width,\n        height\n      );\n\n      setPlacement({ x, y });\n    }\n  }, [width, height, positionX, offsetX, positionY, offsetY, tooltipMeasurement]);\n\n  const styles = useStyles2(getStyles);\n\n  return (\n    <div\n      ref={tooltipRef}\n      style={{\n        position: 'fixed',\n        left: 0,\n        // disabling pointer-events is to prevent the tooltip from flickering when moving left to right\n        // see e.g. https://github.com/grafana/grafana/pull/33609\n        pointerEvents: allowPointerEvents ? 'auto' : 'none',\n        top: 0,\n        transform: `translate(${placement.x}px, ${placement.y}px)`,\n        transition: 'transform ease-out 0.1s',\n      }}\n      aria-live=\"polite\"\n      aria-atomic=\"true\"\n      {...otherProps}\n      className={cx(styles.wrapper, className)}\n    >\n      {children}\n    </div>\n  );\n};\n\nVizTooltipContainer.displayName = 'VizTooltipContainer';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  wrapper: css(getTooltipContainerStyles(theme)),\n});\n","import { css } from '@emotion/css';\nimport * as React from 'react';\n\nimport { Dimensions, TimeZone } from '@grafana/data';\nimport { TooltipDisplayMode } from '@grafana/schema';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Portal } from '../Portal/Portal';\n\nimport { VizTooltipContainer } from './VizTooltipContainer';\n\nexport interface FlotPosition {\n  pageX: number;\n  pageY: number;\n  x: number;\n  x1: number;\n  y: number;\n  y1: number;\n}\n\n// Describes active dimensions user interacts with\n// It's a key-value pair where:\n// - key is the name of the dimension\n// - value is a tuple addressing which column and row from given dimension is active.\n//   If row is undefined, it means that we are not hovering over a datapoint\nexport type ActiveDimensions<T extends Dimensions = any> = { [key in keyof T]: [number, number | undefined] | null };\n\nexport interface VizTooltipContentProps<T extends Dimensions = any> {\n  // Each dimension is described by array of fields representing it\n  // I.e. for graph there are two dimensions: x and y axis:\n  // { xAxis: [<array of time fields>], yAxis: [<array of value fields>]}\n  // TODO: type this better, no good idea how yet\n  dimensions: T; // Dimension[]\n  activeDimensions?: ActiveDimensions<T>;\n  timeZone?: TimeZone;\n  pos: FlotPosition;\n  mode: TooltipDisplayMode;\n}\n\nexport interface VizTooltipProps {\n  /** Element used as tooltips content */\n  content?: React.ReactElement;\n\n  /** Optional component to be used as a tooltip content */\n  tooltipComponent?: React.ComponentType<React.PropsWithChildren<VizTooltipContentProps>>;\n\n  /** x/y position relative to the window */\n  position?: { x: number; y: number };\n\n  /** x/y offset relative to tooltip origin element, i.e. graph's datapoint */\n  offset?: { x: number; y: number };\n\n  // Mode in which tooltip works\n  // - single - display single series info\n  // - multi - display all series info\n  mode?: TooltipDisplayMode;\n}\n\n/**\n * @public\n */\nexport const VizTooltip = ({ content, position, offset }: VizTooltipProps) => {\n  const styles = useStyles2(getStyles);\n  if (position) {\n    return (\n      <Portal className={styles.portal}>\n        <VizTooltipContainer position={position} offset={offset || { x: 0, y: 0 }}>\n          {content}\n        </VizTooltipContainer>\n      </Portal>\n    );\n  }\n  return null;\n};\n\nVizTooltip.displayName = 'VizTooltip';\n\nconst getStyles = () => {\n  return {\n    portal: css({\n      position: 'absolute',\n      top: 0,\n      left: 0,\n      pointerEvents: 'none',\n      width: '100%',\n      height: '100%',\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { CSSProperties } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, fieldColorModeRegistry } from '@grafana/data';\nimport { LineStyle } from '@grafana/schema';\n\nimport { useTheme2, useStyles2 } from '../../themes/ThemeContext';\n\nexport interface Props extends React.HTMLAttributes<HTMLDivElement> {\n  color?: string;\n  gradient?: string;\n  lineStyle?: LineStyle;\n}\n\nexport const SeriesIcon = React.memo(\n  React.forwardRef<HTMLDivElement, Props>(({ color, className, gradient, lineStyle, ...restProps }, ref) => {\n    const theme = useTheme2();\n    const styles = useStyles2(getStyles);\n\n    let cssColor: string;\n\n    if (gradient) {\n      const colors = fieldColorModeRegistry.get(gradient).getColors?.(theme);\n      if (colors?.length) {\n        cssColor = `linear-gradient(90deg, ${colors.join(', ')})`;\n      } else {\n        // Not sure what to default to, this will return gray, this should not happen though.\n        cssColor = theme.visualization.getColorByName('');\n      }\n    } else {\n      cssColor = color!;\n    }\n\n    let customStyle: CSSProperties;\n\n    if (lineStyle?.fill === 'dot' && !gradient) {\n      // make a circle bg image and repeat it\n      customStyle = {\n        backgroundImage: `radial-gradient(circle at 2px 2px, ${color} 2px, transparent 0)`,\n        backgroundSize: '4px 4px',\n        backgroundRepeat: 'space',\n      };\n    } else if (lineStyle?.fill === 'dash' && !gradient) {\n      // make a rectangle bg image and repeat it\n      customStyle = {\n        backgroundImage: `linear-gradient(to right, ${color} 100%, transparent 0%)`,\n        backgroundSize: '6px 4px',\n        backgroundRepeat: 'space',\n      };\n    } else {\n      customStyle = {\n        background: cssColor,\n        borderRadius: theme.shape.radius.pill,\n      };\n    }\n\n    return (\n      <div\n        data-testid=\"series-icon\"\n        ref={ref}\n        className={cx(className, styles.forcedColors, styles.container)}\n        style={customStyle}\n        {...restProps}\n      />\n    );\n  })\n);\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  container: css({\n    marginRight: '8px',\n    display: 'inline-block',\n    width: '14px',\n    height: '4px',\n  }),\n  forcedColors: css({\n    '@media (forced-colors: active)': {\n      forcedColorAdjust: 'none',\n    },\n  }),\n});\n\nSeriesIcon.displayName = 'SeriesIcon';\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, GraphSeriesValue } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { SeriesIcon } from '../VizLegend/SeriesIcon';\n\n/**\n * @public\n */\nexport interface SeriesTableRowProps {\n  color?: string;\n  label?: React.ReactNode;\n  value?: string | GraphSeriesValue;\n  isActive?: boolean;\n}\n\nconst getSeriesTableRowStyles = (theme: GrafanaTheme2) => {\n  return {\n    icon: css({\n      marginRight: theme.spacing(1),\n      verticalAlign: 'middle',\n    }),\n    seriesTable: css({\n      display: 'table',\n    }),\n    seriesTableRow: css({\n      display: 'table-row',\n      fontSize: theme.typography.bodySmall.fontSize,\n    }),\n    seriesTableCell: css({\n      display: 'table-cell',\n    }),\n    label: css({\n      wordBreak: 'break-all',\n    }),\n    value: css({\n      paddingLeft: theme.spacing(2),\n      textAlign: 'right',\n    }),\n    activeSeries: css({\n      fontWeight: theme.typography.fontWeightBold,\n      color: theme.colors.text.maxContrast,\n    }),\n    timestamp: css({\n      fontWeight: theme.typography.fontWeightBold,\n      fontSize: theme.typography.bodySmall.fontSize,\n    }),\n  };\n};\n\n/**\n * @public\n */\nexport const SeriesTableRow = ({ color, label, value, isActive }: SeriesTableRowProps) => {\n  const styles = useStyles2(getSeriesTableRowStyles);\n\n  return (\n    <div data-testid=\"SeriesTableRow\" className={cx(styles.seriesTableRow, isActive && styles.activeSeries)}>\n      {color && (\n        <div className={styles.seriesTableCell}>\n          <SeriesIcon color={color} className={styles.icon} />\n        </div>\n      )}\n      {label && <div className={cx(styles.seriesTableCell, styles.label)}>{label}</div>}\n      {value && <div className={cx(styles.seriesTableCell, styles.value)}>{value}</div>}\n    </div>\n  );\n};\n\n/**\n * @public\n */\nexport interface SeriesTableProps {\n  timestamp?: string | GraphSeriesValue;\n  series: SeriesTableRowProps[];\n}\n\n/**\n * @public\n */\nexport const SeriesTable = ({ timestamp, series }: SeriesTableProps) => {\n  const styles = useStyles2(getSeriesTableRowStyles);\n\n  return (\n    <>\n      {timestamp && (\n        <div className={styles.timestamp} aria-label={t('grafana-ui.viz-tooltip.timestamp', 'Timestamp')}>\n          {timestamp}\n        </div>\n      )}\n      {series.map((s, i) => {\n        return (\n          <SeriesTableRow\n            isActive={s.isActive}\n            label={s.label}\n            color={s.color}\n            value={s.value}\n            key={`${s.label}-${i}`}\n          />\n        );\n      })}\n    </>\n  );\n};\n","/**\n * This function will calculate how many squares we can fit inside a rectangle.\n * Please have a look at this post for more details about the implementation:\n * https://math.stackexchange.com/questions/466198/algorithm-to-get-the-maximum-size-of-n-squares-that-fit-into-a-rectangle-with-a\n *\n * @param parentWidth width of the parent container\n * @param parentHeight height of the parent container\n * @param numberOfChildren number of children that should fit in the parent container\n */\nexport const calculateGridDimensions = (\n  parentWidth: number,\n  parentHeight: number,\n  itemSpacing: number,\n  numberOfChildren: number\n) => {\n  const vertical = calculateSizeOfChild(parentWidth, parentHeight, numberOfChildren);\n  const horizontal = calculateSizeOfChild(parentHeight, parentWidth, numberOfChildren);\n  const square = Math.max(vertical, horizontal);\n  let xCount = Math.floor(parentWidth / square);\n  let yCount = Math.ceil(numberOfChildren / xCount);\n\n  // after yCount update xCount to make split between rows more even\n  xCount = Math.ceil(numberOfChildren / yCount);\n\n  const itemsOnLastRow = xCount - (xCount * yCount - numberOfChildren);\n  const widthOnLastRow = parentWidth / itemsOnLastRow - itemSpacing + itemSpacing / itemsOnLastRow;\n\n  return {\n    width: parentWidth / xCount - itemSpacing + itemSpacing / xCount,\n    height: parentHeight / yCount - itemSpacing + itemSpacing / yCount,\n    widthOnLastRow,\n    xCount,\n    yCount,\n  };\n};\n\nfunction calculateSizeOfChild(parentWidth: number, parentHeight: number, numberOfChildren: number): number {\n  const parts = Math.ceil(Math.sqrt((numberOfChildren * parentWidth) / parentHeight));\n\n  if (Math.floor((parts * parentHeight) / parentWidth) * parts < numberOfChildren) {\n    return parentHeight / Math.ceil((parts * parentHeight) / parentWidth);\n  }\n\n  return parentWidth / parts;\n}\n","import { clamp } from 'lodash';\nimport { PureComponent, CSSProperties } from 'react';\nimport * as React from 'react';\n\nimport { VizOrientation } from '@grafana/data';\n\nimport { calculateGridDimensions } from '../../utils/squares';\n\ninterface Props<V, D> {\n  /**\n   * Optionally precalculate dimensions to support consistent behavior between repeated\n   * values.  Two typical patterns are:\n   * 1) Calculate raw values like font size etc and pass them to each vis\n   * 2) find the maximum input values and pass that to the vis\n   */\n  getAlignmentFactors?: (values: V[], width: number, height: number) => D;\n\n  /**\n   * Render a single value\n   */\n  renderValue: (props: VizRepeaterRenderValueProps<V, D>) => JSX.Element;\n  height: number;\n  width: number;\n  source: unknown; // If this changes, new values will be requested\n  getValues: () => V[];\n  renderCounter: number; // force update of values & render\n  orientation: VizOrientation;\n  itemSpacing?: number;\n  /** When orientation is set to auto layout items in a grid */\n  autoGrid?: boolean;\n  minVizWidth?: number;\n  minVizHeight?: number;\n  maxVizHeight?: number;\n}\n\nexport interface VizRepeaterRenderValueProps<V, D = {}> {\n  value: V;\n  width: number;\n  height: number;\n  orientation: VizOrientation;\n  alignmentFactors: D;\n  /**\n   * Total number of values being shown in repeater\n   */\n  count: number;\n}\n\ninterface DefaultProps {\n  itemSpacing: number;\n}\n\ntype PropsWithDefaults<V, D> = Props<V, D> & DefaultProps;\n\ninterface State<V> {\n  values: V[];\n}\n\nexport class VizRepeater<V, D = {}> extends PureComponent<PropsWithDefaults<V, D>, State<V>> {\n  static defaultProps: DefaultProps = {\n    itemSpacing: 8,\n  };\n\n  constructor(props: PropsWithDefaults<V, D>) {\n    super(props);\n\n    this.state = {\n      values: props.getValues(),\n    };\n  }\n\n  componentDidUpdate(prevProps: Props<V, D>) {\n    const { renderCounter, source } = this.props;\n    if (renderCounter !== prevProps.renderCounter || source !== prevProps.source) {\n      this.setState({ values: this.props.getValues() });\n    }\n  }\n\n  getOrientation(): VizOrientation {\n    const { orientation, width, height } = this.props;\n\n    if (orientation === VizOrientation.Auto) {\n      if (width > height) {\n        return VizOrientation.Vertical;\n      } else {\n        return VizOrientation.Horizontal;\n      }\n    }\n\n    return orientation;\n  }\n\n  renderGrid() {\n    const { renderValue, height, width, itemSpacing, getAlignmentFactors, orientation } = this.props;\n\n    const { values } = this.state;\n    const grid = calculateGridDimensions(width, height, itemSpacing, values.length);\n    const alignmentFactors = getAlignmentFactors ? getAlignmentFactors(values, grid.width, grid.height) : ({} as D);\n\n    let xGrid = 0;\n    let yGrid = 0;\n    let items: JSX.Element[] = [];\n\n    for (let i = 0; i < values.length; i++) {\n      const value = values[i];\n      const isLastRow = yGrid === grid.yCount - 1;\n\n      const itemWidth = isLastRow ? grid.widthOnLastRow : grid.width;\n      const itemHeight = grid.height;\n\n      const xPos = xGrid * itemWidth + itemSpacing * xGrid;\n      const yPos = yGrid * itemHeight + itemSpacing * yGrid;\n\n      const itemStyles: CSSProperties = {\n        position: 'absolute',\n        left: xPos,\n        top: yPos,\n        width: `${itemWidth}px`,\n        height: `${itemHeight}px`,\n      };\n\n      items.push(\n        <div key={i} style={itemStyles}>\n          {renderValue({\n            value,\n            width: itemWidth,\n            height: itemHeight,\n            alignmentFactors,\n            orientation,\n            count: values.length,\n          })}\n        </div>\n      );\n\n      xGrid++;\n\n      if (xGrid === grid.xCount) {\n        xGrid = 0;\n        yGrid++;\n      }\n    }\n\n    return <div style={{ position: 'relative' }}>{items}</div>;\n  }\n\n  render() {\n    const {\n      renderValue,\n      height,\n      width,\n      itemSpacing,\n      getAlignmentFactors,\n      autoGrid,\n      orientation,\n      maxVizHeight,\n      minVizWidth,\n      minVizHeight,\n    } = this.props;\n    const { values } = this.state;\n\n    if (autoGrid && orientation === VizOrientation.Auto) {\n      return this.renderGrid();\n    }\n\n    const itemStyles: React.CSSProperties = {\n      display: 'flex',\n    };\n\n    const repeaterStyle: React.CSSProperties = {\n      display: 'flex',\n      overflow: `${minVizWidth ? 'auto' : 'hidden'} ${minVizHeight ? 'auto' : 'hidden'}`,\n    };\n\n    let vizHeight = height;\n    let vizWidth = width;\n\n    const resolvedOrientation = this.getOrientation();\n\n    switch (resolvedOrientation) {\n      case VizOrientation.Horizontal:\n        const defaultVizHeight = (height + itemSpacing) / values.length - itemSpacing;\n        repeaterStyle.flexDirection = 'column';\n        repeaterStyle.height = `${height}px`;\n        repeaterStyle.overflowX = 'hidden';\n        repeaterStyle.scrollbarWidth = 'thin';\n        itemStyles.marginBottom = `${itemSpacing}px`;\n        vizWidth = width;\n        vizHeight = clamp(defaultVizHeight, minVizHeight ?? 0, maxVizHeight ?? defaultVizHeight);\n        break;\n      case VizOrientation.Vertical:\n        repeaterStyle.flexDirection = 'row';\n        repeaterStyle.justifyContent = 'space-between';\n        repeaterStyle.overflowY = 'hidden';\n        itemStyles.marginRight = `${itemSpacing}px`;\n        vizHeight = height;\n        vizWidth = Math.max(width / values.length - itemSpacing + itemSpacing / values.length, minVizWidth ?? 0);\n    }\n\n    itemStyles.width = `${vizWidth}px`;\n    itemStyles.height = `${vizHeight}px`;\n\n    const alignmentFactors = getAlignmentFactors ? getAlignmentFactors(values, vizWidth, vizHeight) : ({} as D);\n\n    return (\n      <div style={repeaterStyle}>\n        {values.map((value, index) => {\n          return (\n            <div key={index} style={getItemStylesForIndex(itemStyles, index, values.length)}>\n              {renderValue({\n                value,\n                width: vizWidth,\n                height: vizHeight,\n                alignmentFactors,\n                orientation: resolvedOrientation,\n                count: values.length,\n              })}\n            </div>\n          );\n        })}\n      </div>\n    );\n  }\n}\n\n/*\n * Removes any padding on the last item\n */\nfunction getItemStylesForIndex(itemStyles: CSSProperties, index: number, length: number): CSSProperties {\n  if (index === length - 1) {\n    return {\n      ...itemStyles,\n      marginRight: 0,\n      marginBottom: 0,\n    };\n  }\n  return itemStyles;\n}\n","import { css } from '@emotion/css';\nimport { FC, CSSProperties, ComponentType } from 'react';\nimport * as React from 'react';\nimport { useMeasure } from 'react-use';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { LegendPlacement } from '@grafana/schema';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { ScrollContainer } from '../ScrollContainer/ScrollContainer';\n\n/**\n * @beta\n */\nexport interface VizLayoutProps {\n  width: number;\n  height: number;\n  legend?: React.ReactElement<VizLayoutLegendProps> | null;\n  children: (width: number, height: number) => React.ReactNode;\n}\n\n/**\n * @beta\n */\nexport interface VizLayoutComponentType extends FC<VizLayoutProps> {\n  Legend: ComponentType<VizLayoutLegendProps>;\n}\n\n/**\n * @beta\n */\nexport const VizLayout: VizLayoutComponentType = ({ width, height, legend, children }) => {\n  const theme = useTheme2();\n  const styles = useStyles2(getVizStyles);\n  const containerStyle: CSSProperties = {\n    display: 'flex',\n    width: `${width}px`,\n    height: `${height}px`,\n  };\n  const [legendRef, legendMeasure] = useMeasure<HTMLDivElement>();\n\n  if (!legend) {\n    return (\n      <>\n        <div style={containerStyle} className={styles.viz}>\n          {children(width, height)}\n        </div>\n      </>\n    );\n  }\n\n  let { placement, maxHeight = '35%', maxWidth = '60%' } = legend.props;\n\n  if (document.body.clientWidth < theme.breakpoints.values.lg) {\n    placement = 'bottom';\n  }\n\n  let size: VizSize | null = null;\n\n  const legendStyle: CSSProperties = {};\n\n  switch (placement) {\n    case 'bottom':\n      containerStyle.flexDirection = 'column';\n      legendStyle.maxHeight = maxHeight;\n\n      if (legendMeasure.height) {\n        size = { width, height: height - legendMeasure.height };\n      }\n      break;\n    case 'right':\n      containerStyle.flexDirection = 'row';\n      legendStyle.maxWidth = maxWidth;\n\n      if (legendMeasure.width) {\n        size = { width: width - legendMeasure.width, height };\n      }\n\n      if (legend.props.width) {\n        legendStyle.width = legend.props.width;\n        size = { width: width - legend.props.width, height };\n      }\n      break;\n  }\n\n  // This happens when position is switched from bottom to right\n  // Then we preserve old with for one render cycle until legend is measured in it's new position\n  if (size?.width === 0) {\n    size.width = width;\n  }\n\n  if (size?.height === 0) {\n    size.height = height;\n  }\n\n  return (\n    <div style={containerStyle}>\n      <div className={styles.viz}>{size && children(size.width, size.height)}</div>\n      <div style={legendStyle} ref={legendRef}>\n        <ScrollContainer>{legend}</ScrollContainer>\n      </div>\n    </div>\n  );\n};\n\nexport const getVizStyles = (theme: GrafanaTheme2) => {\n  return {\n    viz: css({\n      flexGrow: 2,\n      borderRadius: theme.shape.radius.default,\n      '&:focus-visible': getFocusStyles(theme),\n    }),\n  };\n};\ninterface VizSize {\n  width: number;\n  height: number;\n}\n\n/**\n * @beta\n */\nexport interface VizLayoutLegendProps {\n  placement: LegendPlacement;\n  children: React.ReactNode;\n  maxHeight?: string;\n  maxWidth?: string;\n  width?: number;\n}\n\n/**\n * @beta\n */\nexport const VizLayoutLegend: FC<VizLayoutLegendProps> = ({ children }) => {\n  return <>{children}</>;\n};\n\nVizLayout.Legend = VizLayoutLegend;\n","import * as React from 'react';\n\nimport { DataFrameFieldIndex, DisplayValue } from '@grafana/data';\nimport { LegendDisplayMode, LegendPlacement, LineStyle } from '@grafana/schema';\n\nexport enum SeriesVisibilityChangeBehavior {\n  Isolate,\n  Hide,\n}\n\nexport interface VizLegendBaseProps<T> {\n  placement: LegendPlacement;\n  className?: string;\n  items: Array<VizLegendItem<T>>;\n  thresholdItems?: Array<VizLegendItem<T>>;\n  mappingItems?: Array<VizLegendItem<T>>;\n  seriesVisibilityChangeBehavior?: SeriesVisibilityChangeBehavior;\n  onLabelClick?: (item: VizLegendItem<T>, event: React.MouseEvent<HTMLButtonElement>) => void;\n  itemRenderer?: (item: VizLegendItem<T>, index: number) => JSX.Element;\n  onLabelMouseOver?: (\n    item: VizLegendItem,\n    event: React.MouseEvent<HTMLButtonElement> | React.FocusEvent<HTMLButtonElement>\n  ) => void;\n  onLabelMouseOut?: (\n    item: VizLegendItem,\n    event: React.MouseEvent<HTMLButtonElement> | React.FocusEvent<HTMLButtonElement>\n  ) => void;\n  readonly?: boolean;\n}\n\nexport interface VizLegendTableProps<T> extends VizLegendBaseProps<T> {\n  sortBy?: string;\n  sortDesc?: boolean;\n  onToggleSort?: (sortBy: string) => void;\n  isSortable?: boolean;\n}\n\nexport interface LegendProps<T = any> extends VizLegendBaseProps<T>, VizLegendTableProps<T> {\n  displayMode: LegendDisplayMode;\n}\n\nexport interface VizLegendItem<T = any> {\n  getItemKey?: () => string;\n  label: string;\n  color?: string;\n  gradient?: string;\n  yAxis: number;\n  disabled?: boolean;\n  // displayValues?: DisplayValue[];\n  getDisplayValues?: () => DisplayValue[];\n  fieldIndex?: DataFrameFieldIndex;\n  fieldName?: string;\n  data?: T;\n  lineStyle?: LineStyle;\n}\n","import { PureComponent } from 'react';\n\nimport { ListProps, AbstractList } from './AbstractList';\n\n/** @deprecated Use ul/li/arr.map directly instead */\nexport class InlineList<T> extends PureComponent<ListProps<T>> {\n  render() {\n    return <AbstractList inline {...this.props} />;\n  }\n}\n","import { memo, useCallback } from 'react';\n\nimport { LineStyle } from '@grafana/schema';\n\nimport { SeriesColorPicker } from '../ColorPicker/ColorPicker';\nimport { usePanelContext } from '../PanelChrome';\n\nimport { SeriesIcon } from './SeriesIcon';\n\ninterface Props {\n  seriesName: string;\n  color?: string;\n  gradient?: string;\n  readonly?: boolean;\n  lineStyle?: LineStyle;\n}\n\n/**\n * @internal\n */\nexport const VizLegendSeriesIcon = memo(({ seriesName, color, gradient, readonly, lineStyle }: Props) => {\n  const { onSeriesColorChange } = usePanelContext();\n  const onChange = useCallback(\n    (color: string) => {\n      return onSeriesColorChange!(seriesName, color);\n    },\n    [seriesName, onSeriesColorChange]\n  );\n\n  if (seriesName && onSeriesColorChange && color && !readonly) {\n    return (\n      <SeriesColorPicker color={color} onChange={onChange} enableNamedColors>\n        {({ ref, showColorPicker, hideColorPicker }) => (\n          <SeriesIcon\n            color={color}\n            className=\"pointer\"\n            ref={ref}\n            onClick={showColorPicker}\n            onMouseLeave={hideColorPicker}\n            lineStyle={lineStyle}\n          />\n        )}\n      </SeriesColorPicker>\n    );\n  }\n  return <SeriesIcon color={color} gradient={gradient} lineStyle={lineStyle} />;\n});\n\nVizLegendSeriesIcon.displayName = 'VizLegendSeriesIcon';\n","import { css } from '@emotion/css';\nimport { capitalize } from 'lodash';\n\nimport { DisplayValue, formattedValueToString } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { InlineList } from '../List/InlineList';\n\ninterface Props {\n  stats: DisplayValue[];\n}\n\n/**\n * @internal\n */\nexport const VizLegendStatsList = ({ stats }: Props) => {\n  const styles = useStyles2(getStyles);\n\n  if (stats.length === 0) {\n    return null;\n  }\n\n  return (\n    <InlineList\n      className={styles.list}\n      items={stats}\n      renderItem={(stat) => (\n        <div className={styles.item} title={stat.description}>\n          {stat.title && `${capitalize(stat.title)}:`} {formattedValueToString(stat)}\n        </div>\n      )}\n    />\n  );\n};\n\nconst getStyles = () => ({\n  list: css({\n    flexGrow: 1,\n    textAlign: 'right',\n  }),\n  item: css({\n    marginLeft: '8px',\n  }),\n});\n\nVizLegendStatsList.displayName = 'VizLegendStatsList';\n","import { css, cx } from '@emotion/css';\nimport { useCallback } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { VizLegendSeriesIcon } from './VizLegendSeriesIcon';\nimport { VizLegendStatsList } from './VizLegendStatsList';\nimport { VizLegendItem } from './types';\n\nexport interface Props<T> {\n  item: VizLegendItem<T>;\n  className?: string;\n  onLabelClick?: (item: VizLegendItem<T>, event: React.MouseEvent<HTMLButtonElement>) => void;\n  onLabelMouseOver?: (\n    item: VizLegendItem,\n    event: React.MouseEvent<HTMLButtonElement> | React.FocusEvent<HTMLButtonElement>\n  ) => void;\n  onLabelMouseOut?: (\n    item: VizLegendItem,\n    event: React.MouseEvent<HTMLButtonElement> | React.FocusEvent<HTMLButtonElement>\n  ) => void;\n  readonly?: boolean;\n}\n\n/**\n * @internal\n */\nexport const VizLegendListItem = <T = unknown,>({\n  item,\n  onLabelClick,\n  onLabelMouseOver,\n  onLabelMouseOut,\n  className,\n  readonly,\n}: Props<T>) => {\n  const styles = useStyles2(getStyles);\n\n  const onMouseOver = useCallback(\n    (event: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.FocusEvent<HTMLButtonElement>) => {\n      if (onLabelMouseOver) {\n        onLabelMouseOver(item, event);\n      }\n    },\n    [item, onLabelMouseOver]\n  );\n\n  const onMouseOut = useCallback(\n    (event: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.FocusEvent<HTMLButtonElement>) => {\n      if (onLabelMouseOut) {\n        onLabelMouseOut(item, event);\n      }\n    },\n    [item, onLabelMouseOut]\n  );\n\n  const onClick = useCallback(\n    (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n      if (onLabelClick) {\n        onLabelClick(item, event);\n      }\n    },\n    [item, onLabelClick]\n  );\n\n  return (\n    <div\n      className={cx(styles.itemWrapper, item.disabled && styles.itemDisabled, className)}\n      data-testid={selectors.components.VizLegend.seriesName(item.label)}\n    >\n      <VizLegendSeriesIcon\n        seriesName={item.fieldName ?? item.label}\n        color={item.color}\n        gradient={item.gradient}\n        readonly={readonly}\n        lineStyle={item.lineStyle}\n      />\n      <button\n        disabled={readonly}\n        type=\"button\"\n        onBlur={onMouseOut}\n        onFocus={onMouseOver}\n        onMouseOver={onMouseOver}\n        onMouseOut={onMouseOut}\n        onClick={onClick}\n        className={styles.label}\n      >\n        {item.label}\n      </button>\n\n      {item.getDisplayValues && <VizLegendStatsList stats={item.getDisplayValues()} />}\n    </div>\n  );\n};\n\nVizLegendListItem.displayName = 'VizLegendListItem';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  label: css({\n    label: 'LegendLabel',\n    whiteSpace: 'nowrap',\n    background: 'none',\n    border: 'none',\n    fontSize: 'inherit',\n    padding: 0,\n    userSelect: 'text',\n  }),\n  itemDisabled: css({\n    label: 'LegendLabelDisabled',\n    color: theme.colors.text.disabled,\n  }),\n  itemWrapper: css({\n    label: 'LegendItemWrapper',\n    display: 'flex',\n    whiteSpace: 'nowrap',\n    alignItems: 'center',\n    flexGrow: 1,\n  }),\n  value: css({\n    textAlign: 'right',\n  }),\n  yAxisLabel: css({\n    color: theme.v1.palette.gray2,\n  }),\n});\n","import { css, cx } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { InlineList } from '../List/InlineList';\nimport { List } from '../List/List';\n\nimport { VizLegendListItem } from './VizLegendListItem';\nimport { VizLegendBaseProps, VizLegendItem } from './types';\n\nexport interface Props<T> extends VizLegendBaseProps<T> {}\n\n/**\n * @internal\n */\nexport const VizLegendList = <T extends unknown>({\n  items,\n  itemRenderer,\n  onLabelMouseOver,\n  onLabelMouseOut,\n  onLabelClick,\n  placement,\n  className,\n  readonly,\n}: Props<T>) => {\n  const styles = useStyles2(getStyles);\n\n  if (!itemRenderer) {\n    /* eslint-disable-next-line react/display-name */\n    itemRenderer = (item) => (\n      <VizLegendListItem\n        item={item}\n        onLabelClick={onLabelClick}\n        onLabelMouseOver={onLabelMouseOver}\n        onLabelMouseOut={onLabelMouseOut}\n        readonly={readonly}\n      />\n    );\n  }\n\n  const getItemKey = (item: VizLegendItem<T>) => `${item.getItemKey ? item.getItemKey() : item.label}`;\n\n  switch (placement) {\n    case 'right': {\n      const renderItem = (item: VizLegendItem<T>, index: number) => {\n        return <span className={styles.itemRight}>{itemRenderer!(item, index)}</span>;\n      };\n\n      return (\n        <div className={cx(styles.rightWrapper, className)}>\n          <List items={items} renderItem={renderItem} getItemKey={getItemKey} />\n        </div>\n      );\n    }\n    case 'bottom':\n    default: {\n      const leftItems = items.filter((item) => item.yAxis === 1);\n      const rightItems = items.filter((item) => item.yAxis !== 1);\n\n      const renderItem = (item: VizLegendItem<T>, index: number) => {\n        return <span className={styles.itemBottom}>{itemRenderer!(item, index)}</span>;\n      };\n\n      return (\n        <div className={cx(styles.bottomWrapper, className)}>\n          {leftItems.length > 0 && (\n            <div className={styles.section}>\n              <InlineList items={leftItems} renderItem={renderItem} getItemKey={getItemKey} />\n            </div>\n          )}\n          {rightItems.length > 0 && (\n            <div className={cx(styles.section, styles.sectionRight)}>\n              <InlineList items={rightItems} renderItem={renderItem} getItemKey={getItemKey} />\n            </div>\n          )}\n        </div>\n      );\n    }\n  }\n};\n\nVizLegendList.displayName = 'VizLegendList';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const itemStyles = css({\n    paddingRight: '10px',\n    display: 'flex',\n    fontSize: theme.typography.bodySmall.fontSize,\n    whiteSpace: 'nowrap',\n  });\n\n  return {\n    itemBottom: itemStyles,\n    itemRight: cx(\n      itemStyles,\n      css({\n        marginBottom: theme.spacing(0.5),\n      })\n    ),\n    rightWrapper: css({\n      padding: theme.spacing(0.5),\n    }),\n    bottomWrapper: css({\n      display: 'flex',\n      flexWrap: 'wrap',\n      justifyContent: 'space-between',\n      width: '100%',\n      padding: theme.spacing(0.5),\n      gap: '15px 25px',\n    }),\n    section: css({\n      display: 'flex',\n    }),\n    sectionRight: css({\n      justifyContent: 'flex-end',\n      flexGrow: 1,\n      flexBasis: '50%',\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { useCallback } from 'react';\nimport * as React from 'react';\n\nimport { formattedValueToString, GrafanaTheme2 } from '@grafana/data';\nimport { Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { hoverColor } from '../../themes/mixins';\n\nimport { VizLegendSeriesIcon } from './VizLegendSeriesIcon';\nimport { VizLegendItem } from './types';\n\nexport interface Props {\n  key?: React.Key;\n  item: VizLegendItem;\n  className?: string;\n  onLabelClick?: (item: VizLegendItem, event: React.MouseEvent<HTMLButtonElement>) => void;\n  onLabelMouseOver?: (\n    item: VizLegendItem,\n    event: React.MouseEvent<HTMLButtonElement> | React.FocusEvent<HTMLButtonElement>\n  ) => void;\n  onLabelMouseOut?: (\n    item: VizLegendItem,\n    event: React.MouseEvent<HTMLButtonElement> | React.FocusEvent<HTMLButtonElement>\n  ) => void;\n  readonly?: boolean;\n}\n\n/**\n * @internal\n */\nexport const LegendTableItem = ({\n  item,\n  onLabelClick,\n  onLabelMouseOver,\n  onLabelMouseOut,\n  className,\n  readonly,\n}: Props) => {\n  const styles = useStyles2(getStyles);\n\n  const onMouseOver = useCallback(\n    (event: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.FocusEvent<HTMLButtonElement>) => {\n      if (onLabelMouseOver) {\n        onLabelMouseOver(item, event);\n      }\n    },\n    [item, onLabelMouseOver]\n  );\n\n  const onMouseOut = useCallback(\n    (event: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.FocusEvent<HTMLButtonElement>) => {\n      if (onLabelMouseOut) {\n        onLabelMouseOut(item, event);\n      }\n    },\n    [item, onLabelMouseOut]\n  );\n\n  const onClick = useCallback(\n    (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n      if (onLabelClick) {\n        onLabelClick(item, event);\n      }\n    },\n    [item, onLabelClick]\n  );\n\n  return (\n    <tr className={cx(styles.row, className)}>\n      <td>\n        <span className={styles.itemWrapper}>\n          <VizLegendSeriesIcon\n            color={item.color}\n            seriesName={item.fieldName ?? item.label}\n            readonly={readonly}\n            lineStyle={item.lineStyle}\n          />\n          <button\n            disabled={readonly}\n            type=\"button\"\n            title={item.label}\n            onBlur={onMouseOut}\n            onFocus={onMouseOver}\n            onMouseOver={onMouseOver}\n            onMouseOut={onMouseOut}\n            onClick={!readonly ? onClick : undefined}\n            className={cx(styles.label, item.disabled && styles.labelDisabled)}\n          >\n            {item.label}{' '}\n            {item.yAxis === 2 && (\n              <span className={styles.yAxisLabel}>\n                <Trans i18nKey=\"grafana-ui.viz-legend.right-axis-indicator\">(right y-axis)</Trans>\n              </span>\n            )}\n          </button>\n        </span>\n      </td>\n      {item.getDisplayValues &&\n        item.getDisplayValues().map((stat, index) => {\n          return (\n            <td className={styles.value} key={`${stat.title}-${index}`}>\n              {formattedValueToString(stat)}\n            </td>\n          );\n        })}\n    </tr>\n  );\n};\n\nLegendTableItem.displayName = 'LegendTableItem';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const rowHoverBg = hoverColor(theme.colors.background.primary, theme);\n\n  return {\n    row: css({\n      label: 'LegendRow',\n      fontSize: theme.v1.typography.size.sm,\n      borderBottom: `1px solid ${theme.colors.border.weak}`,\n      td: {\n        padding: theme.spacing(0.25, 1),\n        whiteSpace: 'nowrap',\n      },\n\n      '&:hover': {\n        background: rowHoverBg,\n      },\n    }),\n    label: css({\n      label: 'LegendLabel',\n      whiteSpace: 'nowrap',\n      background: 'none',\n      border: 'none',\n      fontSize: 'inherit',\n      padding: 0,\n      maxWidth: '600px',\n      textOverflow: 'ellipsis',\n      overflow: 'hidden',\n      userSelect: 'text',\n    }),\n    labelDisabled: css({\n      label: 'LegendLabelDisabled',\n      color: theme.colors.text.disabled,\n    }),\n    itemWrapper: css({\n      display: 'flex',\n      whiteSpace: 'nowrap',\n      alignItems: 'center',\n    }),\n    value: css({\n      textAlign: 'right',\n    }),\n    yAxisLabel: css({\n      color: theme.colors.text.secondary,\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\n\nimport { LegendTableItem } from './VizLegendTableItem';\nimport { VizLegendItem, VizLegendTableProps } from './types';\n\nconst nameSortKey = 'Name';\nconst naturalCompare = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' }).compare;\n\n/**\n * @internal\n */\nexport const VizLegendTable = <T extends unknown>({\n  items,\n  sortBy: sortKey,\n  sortDesc,\n  itemRenderer,\n  className,\n  onToggleSort,\n  onLabelClick,\n  onLabelMouseOver,\n  onLabelMouseOut,\n  readonly,\n  isSortable,\n}: VizLegendTableProps<T>): JSX.Element => {\n  const styles = useStyles2(getStyles);\n  const header: Record<string, string> = {};\n\n  if (isSortable) {\n    header[nameSortKey] = '';\n  }\n\n  for (const item of items) {\n    if (item.getDisplayValues) {\n      for (const displayValue of item.getDisplayValues()) {\n        header[displayValue.title ?? '?'] = displayValue.description ?? '';\n      }\n    }\n  }\n\n  if (sortKey != null) {\n    let itemVals = new Map<VizLegendItem, number>();\n\n    items.forEach((item) => {\n      if (sortKey !== nameSortKey && item.getDisplayValues) {\n        const stat = item.getDisplayValues().find((stat) => stat.title === sortKey);\n        const val = stat == null || Number.isNaN(stat.numeric) ? -Infinity : stat.numeric;\n        itemVals.set(item, val);\n      }\n    });\n\n    let sortMult = sortDesc ? -1 : 1;\n\n    if (sortKey === nameSortKey) {\n      // string sort\n      items.sort((a, b) => {\n        return sortMult * naturalCompare(a.label, b.label);\n      });\n    } else {\n      // numeric sort\n      items.sort((a, b) => {\n        const aVal = itemVals.get(a) ?? 0;\n        const bVal = itemVals.get(b) ?? 0;\n\n        return sortMult * (aVal - bVal);\n      });\n    }\n  }\n\n  if (!itemRenderer) {\n    /* eslint-disable-next-line react/display-name */\n    itemRenderer = (item, index) => (\n      <LegendTableItem\n        key={`${item.label}-${index}`}\n        item={item}\n        onLabelClick={onLabelClick}\n        onLabelMouseOver={onLabelMouseOver}\n        onLabelMouseOut={onLabelMouseOut}\n        readonly={readonly}\n      />\n    );\n  }\n\n  return (\n    <table className={cx(styles.table, className)}>\n      <thead>\n        <tr>\n          {!isSortable && <th></th>}\n          {Object.keys(header).map((columnTitle) => (\n            <th\n              title={header[columnTitle]}\n              key={columnTitle}\n              className={cx(styles.header, onToggleSort && styles.headerSortable, isSortable && styles.nameHeader, {\n                [styles.withIcon]: sortKey === columnTitle,\n              })}\n              onClick={() => {\n                if (onToggleSort) {\n                  onToggleSort(columnTitle);\n                }\n              }}\n            >\n              {columnTitle}\n              {sortKey === columnTitle && <Icon size=\"xs\" name={sortDesc ? 'angle-down' : 'angle-up'} />}\n            </th>\n          ))}\n        </tr>\n      </thead>\n      <tbody>{items.map(itemRenderer!)}</tbody>\n    </table>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  table: css({\n    width: '100%',\n    'th:first-child': {\n      width: '100%',\n      borderBottom: `1px solid ${theme.colors.border.weak}`,\n    },\n  }),\n  header: css({\n    color: theme.colors.primary.text,\n    fontWeight: theme.typography.fontWeightMedium,\n    borderBottom: `1px solid ${theme.colors.border.weak}`,\n    padding: theme.spacing(0.25, 1, 0.25, 1),\n    fontSize: theme.typography.bodySmall.fontSize,\n    textAlign: 'right',\n    whiteSpace: 'nowrap',\n  }),\n  nameHeader: css({\n    textAlign: 'left',\n    paddingLeft: '30px',\n  }),\n  // This needs to be padding-right - icon size(xs==12) to avoid jumping\n  withIcon: css({\n    paddingRight: '4px',\n  }),\n  headerSortable: css({\n    cursor: 'pointer',\n  }),\n});\n","import { SeriesVisibilityChangeMode } from '../PanelChrome/types';\n\nexport function mapMouseEventToMode(event: React.MouseEvent): SeriesVisibilityChangeMode {\n  if (event.ctrlKey || event.metaKey || event.shiftKey) {\n    return SeriesVisibilityChangeMode.AppendToSelection;\n  }\n  return SeriesVisibilityChangeMode.ToggleSelection;\n}\n","import { useCallback } from 'react';\nimport * as React from 'react';\n\nimport { DataHoverClearEvent, DataHoverEvent } from '@grafana/data';\nimport { LegendDisplayMode } from '@grafana/schema';\n\nimport { SeriesVisibilityChangeMode, usePanelContext } from '../PanelChrome';\n\nimport { VizLegendList } from './VizLegendList';\nimport { VizLegendTable } from './VizLegendTable';\nimport { LegendProps, SeriesVisibilityChangeBehavior, VizLegendItem } from './types';\nimport { mapMouseEventToMode } from './utils';\n\n/**\n * @public\n */\nexport function VizLegend<T>({\n  items,\n  thresholdItems,\n  mappingItems,\n  displayMode,\n  sortBy: sortKey,\n  seriesVisibilityChangeBehavior = SeriesVisibilityChangeBehavior.Isolate,\n  sortDesc,\n  onLabelClick,\n  onToggleSort,\n  placement,\n  className,\n  itemRenderer,\n  readonly,\n  isSortable,\n}: LegendProps<T>) {\n  const { eventBus, onToggleSeriesVisibility, onToggleLegendSort } = usePanelContext();\n\n  const onMouseOver = useCallback(\n    (\n      item: VizLegendItem,\n      event: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.FocusEvent<HTMLButtonElement>\n    ) => {\n      eventBus?.publish({\n        type: DataHoverEvent.type,\n        payload: {\n          raw: event,\n          x: 0,\n          y: 0,\n          dataId: item.label,\n        },\n      });\n    },\n    [eventBus]\n  );\n\n  const onMouseOut = useCallback(\n    (\n      item: VizLegendItem,\n      event: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.FocusEvent<HTMLButtonElement>\n    ) => {\n      eventBus?.publish({\n        type: DataHoverClearEvent.type,\n        payload: {\n          raw: event,\n          x: 0,\n          y: 0,\n          dataId: item.label,\n        },\n      });\n    },\n    [eventBus]\n  );\n\n  const onLegendLabelClick = useCallback(\n    (item: VizLegendItem, event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n      if (onLabelClick) {\n        onLabelClick(item, event);\n      }\n      if (onToggleSeriesVisibility) {\n        onToggleSeriesVisibility(\n          item.fieldName ?? item.label,\n          seriesVisibilityChangeBehavior === SeriesVisibilityChangeBehavior.Hide\n            ? SeriesVisibilityChangeMode.AppendToSelection\n            : mapMouseEventToMode(event)\n        );\n      }\n    },\n    [onToggleSeriesVisibility, onLabelClick, seriesVisibilityChangeBehavior]\n  );\n\n  const makeVizLegendList = useCallback(\n    (items: VizLegendItem[]) => {\n      return (\n        <VizLegendList<T>\n          className={className}\n          placement={placement}\n          onLabelMouseOver={onMouseOver}\n          onLabelMouseOut={onMouseOut}\n          onLabelClick={onLegendLabelClick}\n          itemRenderer={itemRenderer}\n          readonly={readonly}\n          items={items}\n        />\n      );\n    },\n    [className, placement, onMouseOver, onMouseOut, onLegendLabelClick, itemRenderer, readonly]\n  );\n\n  switch (displayMode) {\n    case LegendDisplayMode.Table:\n      return (\n        <VizLegendTable<T>\n          className={className}\n          items={items}\n          placement={placement}\n          sortBy={sortKey}\n          sortDesc={sortDesc}\n          onLabelClick={onLegendLabelClick}\n          onToggleSort={onToggleSort || onToggleLegendSort}\n          onLabelMouseOver={onMouseOver}\n          onLabelMouseOut={onMouseOut}\n          itemRenderer={itemRenderer}\n          readonly={readonly}\n          isSortable={isSortable}\n        />\n      );\n    case LegendDisplayMode.List:\n      const isThresholdsEnabled = thresholdItems && thresholdItems.length > 1;\n      const isValueMappingEnabled = mappingItems && mappingItems.length > 0;\n      return (\n        <>\n          {/* render items when single series and there is no thresholds and no value mappings\n           * render items when multi series and there is no thresholds\n           */}\n          {!isThresholdsEnabled && (!isValueMappingEnabled || items.length > 1) && makeVizLegendList(items)}\n          {/* render threshold colors if From thresholds scheme selected */}\n          {isThresholdsEnabled && makeVizLegendList(thresholdItems)}\n          {/* render value mapping colors */}\n          {isValueMappingEnabled && makeVizLegendList(mappingItems)}\n        </>\n      );\n    default:\n      return null;\n  }\n}\n\nVizLegend.displayName = 'VizLegend';\n","import { css, cx } from '@emotion/css';\nimport { useState } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { clearButtonStyles } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  collapse: css({\n    label: 'collapse',\n    marginBottom: theme.spacing(1),\n    backgroundColor: theme.colors.background.primary,\n    border: `1px solid ${theme.colors.border.weak}`,\n    position: 'relative',\n    borderRadius: theme.shape.radius.default,\n    width: '100%',\n    display: 'flex',\n    flexDirection: 'column',\n    flex: '1 1 0',\n  }),\n  collapseBody: css({\n    label: 'collapse__body',\n    padding: theme.spacing(theme.components.panel.padding),\n    paddingTop: 0,\n    flex: 1,\n    overflow: 'hidden',\n    display: 'flex',\n    flexDirection: 'column',\n  }),\n  bodyContentWrapper: css({\n    label: 'bodyContentWrapper',\n    flex: 1,\n  }),\n  loader: css({\n    label: 'collapse__loader',\n    height: '2px',\n    position: 'relative',\n    overflow: 'hidden',\n    background: 'none',\n    margin: theme.spacing(0.5),\n  }),\n  loaderActive: css({\n    label: 'collapse__loader_active',\n    '&:after': {\n      content: \"' '\",\n      display: 'block',\n      width: '25%',\n      top: 0,\n      height: '250%',\n      position: 'absolute',\n      animation: 'loader 2s cubic-bezier(0.17, 0.67, 0.83, 0.67) 500ms',\n      animationIterationCount: 100,\n      left: '-25%',\n      background: theme.colors.primary.main,\n    },\n    '@keyframes loader': {\n      from: {\n        left: '-25%',\n        opacity: 0.1,\n      },\n      to: {\n        left: '100%',\n        opacity: 1,\n      },\n    },\n  }),\n  header: css({\n    label: 'collapse__header',\n    padding: theme.spacing(1, 2, 1, 2),\n    display: 'flex',\n  }),\n  headerCollapsed: css({\n    label: 'collapse__header--collapsed',\n    padding: theme.spacing(1, 2, 1, 2),\n  }),\n  headerLabel: css({\n    label: 'collapse__header-label',\n    fontWeight: theme.typography.fontWeightMedium,\n    marginRight: theme.spacing(1),\n    fontSize: theme.typography.size.md,\n    display: 'flex',\n    flex: '0 0 100%',\n  }),\n  icon: css({\n    label: 'collapse__icon',\n    margin: theme.spacing(0.25, 1, 0, -1),\n  }),\n});\n\nexport interface Props {\n  /** Expand or collapse te content */\n  isOpen?: boolean;\n  /** Element or text for the Collapse header */\n  label: React.ReactNode;\n  /** Indicates loading state of the content */\n  loading?: boolean;\n  /** Toggle collapsed header icon */\n  collapsible?: boolean;\n  /** Callback for the toggle functionality */\n  onToggle?: (isOpen: boolean) => void;\n  /** Additional class name for the root element */\n  className?: string;\n}\n\nexport const ControlledCollapse = ({ isOpen, onToggle, ...otherProps }: React.PropsWithChildren<Props>) => {\n  const [open, setOpen] = useState(isOpen);\n  return (\n    <Collapse\n      isOpen={open}\n      collapsible\n      {...otherProps}\n      onToggle={() => {\n        setOpen(!open);\n        if (onToggle) {\n          onToggle(!open);\n        }\n      }}\n    />\n  );\n};\n\nexport const Collapse = ({\n  isOpen,\n  label,\n  loading,\n  collapsible,\n  onToggle,\n  className,\n  children,\n}: React.PropsWithChildren<Props>) => {\n  const buttonStyles = useStyles2(clearButtonStyles);\n  const style = useStyles2(getStyles);\n  const onClickToggle = () => {\n    if (onToggle) {\n      onToggle(!isOpen);\n    }\n  };\n\n  const panelClass = cx([style.collapse, className]);\n  const loaderClass = loading ? cx([style.loader, style.loaderActive]) : cx([style.loader]);\n  const headerClass = collapsible ? cx([style.header]) : cx([style.headerCollapsed]);\n\n  return (\n    <div className={panelClass}>\n      <button type=\"button\" className={cx(buttonStyles, headerClass)} onClick={onClickToggle}>\n        {collapsible && <Icon className={style.icon} name={isOpen ? 'angle-down' : 'angle-right'} />}\n        <div className={cx([style.headerLabel])}>{label}</div>\n      </button>\n      {isOpen && (\n        <div className={cx([style.collapseBody])}>\n          <div className={loaderClass} />\n          <div className={style.bodyContentWrapper}>{children}</div>\n        </div>\n      )}\n    </div>\n  );\n};\n\nCollapse.displayName = 'Collapse';\n","import { css, cx } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { ReactNode, useRef, useState } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { Icon } from '../Icon/Icon';\nimport { Spinner } from '../Spinner/Spinner';\n\nexport interface Props {\n  label: ReactNode;\n  isOpen: boolean;\n  /** Callback for the toggle functionality */\n  onToggle?: (isOpen: boolean) => void;\n  children: ReactNode;\n  className?: string;\n  contentClassName?: string;\n  loading?: boolean;\n  labelId?: string;\n  headerDataTestId?: string;\n  contentDataTestId?: string;\n  unmountContentWhenClosed?: boolean;\n}\n\nexport const CollapsableSection = ({\n  label,\n  isOpen,\n  onToggle,\n  className,\n  contentClassName,\n  children,\n  labelId,\n  loading = false,\n  headerDataTestId,\n  contentDataTestId,\n  unmountContentWhenClosed = true,\n}: Props) => {\n  const [internalOpenState, toggleInternalOpenState] = useState<boolean>(isOpen);\n  const styles = useStyles2(collapsableSectionStyles);\n\n  const isControlled = isOpen !== undefined && onToggle !== undefined;\n  const isSectionOpen = isControlled ? isOpen : internalOpenState;\n\n  const onClick = (e: React.MouseEvent) => {\n    if (e.target instanceof HTMLElement && e.target.tagName === 'A') {\n      return;\n    }\n\n    e.preventDefault();\n    e.stopPropagation();\n\n    onToggle?.(!isOpen);\n\n    if (!isControlled) {\n      toggleInternalOpenState(!internalOpenState);\n    }\n  };\n  const { current: id } = useRef(uniqueId());\n\n  const buttonLabelId = labelId ?? `collapse-label-${id}`;\n\n  const content = (\n    <div\n      id={`collapse-content-${id}`}\n      className={cx(styles.content, contentClassName, {\n        [styles.contentHidden]: !unmountContentWhenClosed && !isSectionOpen,\n      })}\n      data-testid={contentDataTestId}\n    >\n      {children}\n    </div>\n  );\n\n  return (\n    <>\n      {/* disabling the a11y rules here as the button handles keyboard interactions */}\n      {/* this is just to provide a better experience for mouse users */}\n      {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n      <div onClick={onClick} className={cx(styles.header, className)}>\n        <button\n          type=\"button\"\n          id={`collapse-button-${id}`}\n          className={styles.button}\n          onClick={onClick}\n          aria-expanded={isSectionOpen && !loading}\n          aria-controls={`collapse-content-${id}`}\n          aria-labelledby={buttonLabelId}\n        >\n          {loading ? (\n            <Spinner className={styles.spinner} />\n          ) : (\n            <Icon name={isSectionOpen ? 'angle-up' : 'angle-down'} className={styles.icon} />\n          )}\n        </button>\n        <div className={styles.label} id={`collapse-label-${id}`} data-testid={headerDataTestId}>\n          {label}\n        </div>\n      </div>\n      {unmountContentWhenClosed ? isSectionOpen && content : content}\n    </>\n  );\n};\n\nconst collapsableSectionStyles = (theme: GrafanaTheme2) => ({\n  header: css({\n    display: 'flex',\n    cursor: 'pointer',\n    boxSizing: 'border-box',\n    flexDirection: 'row-reverse',\n    position: 'relative',\n    justifyContent: 'space-between',\n    fontSize: theme.typography.size.lg,\n    padding: `${theme.spacing(0.5)} 0`,\n    '&:focus-within': getFocusStyles(theme),\n  }),\n  button: css({\n    all: 'unset',\n    '&:focus-visible': {\n      outline: 'none',\n      outlineOffset: 'unset',\n      transition: 'none',\n      boxShadow: 'none',\n    },\n  }),\n  icon: css({\n    color: theme.colors.text.secondary,\n  }),\n  content: css({\n    padding: `${theme.spacing(2)} 0`,\n  }),\n  contentHidden: css({\n    display: 'none',\n  }),\n  spinner: css({\n    display: 'flex',\n    alignItems: 'center',\n    width: theme.spacing(2),\n  }),\n  label: css({\n    display: 'flex',\n    fontWeight: theme.typography.fontWeightMedium,\n    color: theme.colors.text.maxContrast,\n  }),\n});\n","import { css } from '@emotion/css';\n\nimport { Field, GrafanaTheme2, LinkModel } from '@grafana/data';\nimport { Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\n\nimport { DataLinkButton } from './DataLinkButton';\n\ntype Props = {\n  links: Array<LinkModel<Field>>;\n};\n\n/**\n * @internal\n */\nexport function FieldLinkList({ links }: Props) {\n  const styles = useStyles2(getStyles);\n\n  if (links.length === 1) {\n    return <DataLinkButton link={links[0]} />;\n  }\n\n  const externalLinks = links.filter((link) => link.target === '_blank');\n  const internalLinks = links.filter((link) => link.target === '_self');\n\n  return (\n    <>\n      {internalLinks.map((link, i) => {\n        return <DataLinkButton key={i} link={link} />;\n      })}\n      <div className={styles.wrapper}>\n        <p className={styles.externalLinksHeading}>\n          <Trans i18nKey=\"grafana-ui.field-link-list.external-links-heading\">External links</Trans>\n        </p>\n        {externalLinks.map((link, i) => (\n          <a key={i} href={link.href} target={link.target} className={styles.externalLink}>\n            <Icon name=\"external-link-alt\" />\n            {link.title}\n          </a>\n        ))}\n      </div>\n    </>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  wrapper: css({\n    flexBasis: '150px',\n    width: '100px',\n    marginTop: theme.spacing(1),\n  }),\n  externalLinksHeading: css({\n    color: theme.colors.text.secondary,\n    fontWeight: theme.typography.fontWeightRegular,\n    fontSize: theme.typography.size.sm,\n    margin: 0,\n  }),\n  externalLink: css({\n    color: theme.colors.text.link,\n    fontWeight: theme.typography.fontWeightRegular,\n    display: 'block',\n    whiteSpace: 'nowrap',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n\n    '&:hover': {\n      textDecoration: 'underline',\n    },\n\n    div: {\n      marginRight: theme.spacing(1),\n    },\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport interface Props {\n  className?: string;\n}\n\nexport const FullWidthButtonContainer = ({ className, children }: React.PropsWithChildren<Props>) => {\n  const styles = useStyles2(getStyles);\n\n  return <div className={cx(styles, className)}>{children}</div>;\n};\n\nconst getStyles = () =>\n  css({\n    display: 'flex',\n\n    button: {\n      flexGrow: 1,\n      justifyContent: 'center',\n    },\n\n    '> *': {\n      flexGrow: 1,\n    },\n\n    label: {\n      flexGrow: 1,\n      textAlign: 'center',\n    },\n  });\n","import { cloneDeep, identity, isNumber, omit, pickBy } from 'lodash';\n\nimport {\n  convertOldAngularValueMappings,\n  FieldColorModeId,\n  FieldConfig,\n  fieldReducers,\n  PanelModel,\n  ReduceDataOptions,\n  ReducerID,\n  sortThresholds,\n  Threshold,\n  ThresholdsConfig,\n  ThresholdsMode,\n  validateFieldConfig,\n  ValueMapping,\n  VizOrientation,\n} from '@grafana/data';\nimport { LegendDisplayMode, OptionsWithLegend, OptionsWithTextFormatting } from '@grafana/schema';\n\nexport interface SingleStatBaseOptions extends OptionsWithTextFormatting {\n  reduceOptions: ReduceDataOptions;\n  orientation: VizOrientation;\n}\n\nconst optionsToKeep = ['reduceOptions', 'orientation'];\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function sharedSingleStatPanelChangedHandler(\n  panel: PanelModel<Partial<SingleStatBaseOptions>> | any,\n  prevPluginId: string,\n  prevOptions: any\n) {\n  let options = panel.options;\n\n  panel.fieldConfig = panel.fieldConfig || {\n    defaults: {},\n    overrides: [],\n  };\n\n  // Migrating from angular singlestat\n  if (prevPluginId === 'singlestat' && prevOptions.angular) {\n    return migrateFromAngularSinglestat(panel, prevOptions);\n  } else if (prevPluginId === 'graph') {\n    // Migrating from Graph panel\n    return migrateFromGraphPanel(panel, prevOptions);\n  }\n\n  for (const k of optionsToKeep) {\n    if (prevOptions.hasOwnProperty(k)) {\n      options[k] = cloneDeep(prevOptions[k]);\n    }\n  }\n\n  return options;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction migrateFromGraphPanel(panel: PanelModel<Partial<SingleStatBaseOptions>> | any, prevOptions: any) {\n  const graphOptions: GraphOptions = prevOptions.angular;\n\n  const options: SingleStatBaseOptions & OptionsWithLegend = {\n    orientation: VizOrientation.Auto,\n    reduceOptions: {\n      values: false,\n      calcs: [],\n    },\n    legend: {\n      displayMode: LegendDisplayMode.List,\n      showLegend: true,\n      placement: 'bottom',\n      calcs: [],\n    },\n  };\n\n  if (graphOptions.xaxis?.mode === 'series') {\n    panel.fieldConfig = {\n      ...panel.fieldConfig,\n      defaults: {\n        ...panel.fieldConfig.defaults,\n        color: { mode: 'palette-classic' },\n      },\n    };\n\n    // Value options calculation migration\n    if (graphOptions.xaxis.values) {\n      options.reduceOptions.calcs = getReducerForMigration(graphOptions.xaxis.values);\n    }\n\n    // Legend migration\n    const legendConfig = graphOptions.legend;\n    if (legendConfig) {\n      if (legendConfig.show) {\n        options.legend.displayMode = legendConfig.alignAsTable ? LegendDisplayMode.Table : LegendDisplayMode.List;\n      } else {\n        options.legend.showLegend = false;\n      }\n\n      if (legendConfig.rightSide) {\n        options.legend.placement = 'right';\n      }\n\n      if (legendConfig.values) {\n        const enabledLegendValues = pickBy(legendConfig, identity);\n        options.legend.calcs = getReducersFromLegend(enabledLegendValues);\n      }\n\n      if (legendConfig.sideWidth) {\n        options.legend.width = legendConfig.sideWidth;\n      }\n    }\n  }\n\n  return options;\n}\n\nfunction migrateFromAngularSinglestat(panel: PanelModel<Partial<SingleStatBaseOptions>> | any, prevOptions: any) {\n  const prevPanel = prevOptions.angular;\n  const reducer = fieldReducers.getIfExists(prevPanel.valueName);\n  const options: SingleStatBaseOptions = {\n    reduceOptions: {\n      calcs: [reducer ? reducer.id : ReducerID.mean],\n    },\n    orientation: VizOrientation.Horizontal,\n  };\n\n  const defaults: FieldConfig = {};\n\n  if (prevPanel.format) {\n    defaults.unit = prevPanel.format;\n  }\n\n  if (prevPanel.tableColumn) {\n    options.reduceOptions.fields = `/^${prevPanel.tableColumn}$/`;\n  }\n\n  if (prevPanel.nullPointMode) {\n    defaults.nullValueMode = prevPanel.nullPointMode;\n  }\n\n  if (prevPanel.nullText) {\n    defaults.noValue = prevPanel.nullText;\n  }\n\n  if (prevPanel.decimals || prevPanel.decimals === 0) {\n    defaults.decimals = prevPanel.decimals;\n  }\n\n  // Convert thresholds and color values\n  if (prevPanel.thresholds && prevPanel.colors) {\n    const levels = prevPanel.thresholds.split(',').map((strVale: string) => {\n      return Number(strVale.trim());\n    });\n\n    // One more color than threshold\n    const thresholds: Threshold[] = [];\n    for (const color of prevPanel.colors) {\n      const idx = thresholds.length - 1;\n      if (idx >= 0) {\n        thresholds.push({ value: levels[idx], color });\n      } else {\n        thresholds.push({ value: -Infinity, color });\n      }\n    }\n\n    defaults.thresholds = {\n      mode: ThresholdsMode.Absolute,\n      steps: thresholds,\n    };\n  }\n\n  // Convert value mappings\n  const mappings = convertOldAngularValueMappings(prevPanel, defaults.thresholds);\n  if (mappings && mappings.length) {\n    defaults.mappings = mappings;\n  }\n\n  if (prevPanel.gauge && prevPanel.gauge.show) {\n    defaults.min = prevPanel.gauge.minValue;\n    defaults.max = prevPanel.gauge.maxValue;\n  }\n\n  panel.fieldConfig.defaults = defaults;\n\n  return options;\n}\n\nexport function sharedSingleStatMigrationHandler(panel: PanelModel<SingleStatBaseOptions>): SingleStatBaseOptions {\n  if (!panel.options) {\n    // This happens on the first load or when migrating from angular\n    return {\n      reduceOptions: {\n        calcs: [ReducerID.mean],\n      },\n      orientation: VizOrientation.Horizontal,\n    };\n  }\n\n  const previousVersion = parseFloat(panel.pluginVersion || '6.1');\n  let options = panel.options as any;\n\n  if (previousVersion < 6.2) {\n    options = migrateFromValueOptions(options);\n  }\n\n  if (previousVersion < 6.3) {\n    options = moveThresholdsAndMappingsToField(options);\n  }\n\n  const { fieldOptions } = options;\n\n  if (previousVersion < 6.6 && fieldOptions) {\n    // discard the old `override` options and enter an empty array\n    if (fieldOptions && fieldOptions.override) {\n      const { override, ...rest } = options.fieldOptions;\n      options = {\n        ...options,\n        fieldOptions: {\n          ...rest,\n          overrides: [],\n        },\n      };\n    }\n\n    // Move thresholds to steps\n    let thresholds = fieldOptions?.defaults?.thresholds;\n    if (thresholds) {\n      delete fieldOptions.defaults.thresholds;\n    } else {\n      thresholds = fieldOptions?.thresholds;\n      delete fieldOptions.thresholds;\n    }\n\n    if (thresholds) {\n      fieldOptions.defaults.thresholds = {\n        mode: ThresholdsMode.Absolute,\n        steps: thresholds,\n      };\n    }\n\n    // Migrate color from simple string to a mode\n    const { defaults } = fieldOptions;\n    if (defaults.color && typeof defaults.color === 'string') {\n      defaults.color = {\n        mode: FieldColorModeId.Fixed,\n        fixedColor: defaults.color,\n      };\n    }\n\n    validateFieldConfig(defaults);\n  }\n\n  if (previousVersion < 7.0) {\n    panel.fieldConfig = panel.fieldConfig || { defaults: {}, overrides: [] };\n    panel.fieldConfig = {\n      defaults:\n        fieldOptions && fieldOptions.defaults\n          ? { ...panel.fieldConfig.defaults, ...fieldOptions.defaults }\n          : panel.fieldConfig.defaults,\n      overrides:\n        fieldOptions && fieldOptions.overrides\n          ? [...panel.fieldConfig.overrides, ...fieldOptions.overrides]\n          : panel.fieldConfig.overrides,\n    };\n\n    if (fieldOptions) {\n      options.reduceOptions = {\n        values: fieldOptions.values,\n        limit: fieldOptions.limit,\n        calcs: fieldOptions.calcs,\n      };\n    }\n\n    delete options.fieldOptions;\n  }\n\n  if (previousVersion < 7.1) {\n    // move title to displayName\n    const oldTitle = (panel.fieldConfig.defaults as any).title;\n    if (oldTitle !== undefined && oldTitle !== null) {\n      panel.fieldConfig.defaults.displayName = oldTitle;\n      delete (panel.fieldConfig.defaults as any).title;\n    }\n  }\n\n  if (previousVersion < 8.0) {\n    // Explicit min/max was removed for percent/percentunit in 8.0\n    const config = panel.fieldConfig?.defaults;\n    let unit = config?.unit;\n    if (unit === 'percent') {\n      if (!isNumber(config.min)) {\n        config.min = 0;\n      }\n      if (!isNumber(config.max)) {\n        config.max = 100;\n      }\n    } else if (unit === 'percentunit') {\n      if (!isNumber(config.min)) {\n        config.min = 0;\n      }\n      if (!isNumber(config.max)) {\n        config.max = 1;\n      }\n    }\n  }\n\n  return options;\n}\n\nexport function moveThresholdsAndMappingsToField(old: any) {\n  const { fieldOptions } = old;\n\n  if (!fieldOptions) {\n    return old;\n  }\n\n  const { mappings, ...rest } = old.fieldOptions;\n\n  let thresholds: ThresholdsConfig | undefined = undefined;\n  if (old.thresholds) {\n    thresholds = {\n      mode: ThresholdsMode.Absolute,\n      steps: migrateOldThresholds(old.thresholds)!,\n    };\n  }\n\n  return {\n    ...old,\n    fieldOptions: {\n      ...rest,\n      defaults: {\n        ...fieldOptions.defaults,\n        mappings,\n        thresholds,\n      },\n    },\n  };\n}\n\n/*\n * Moves valueMappings and thresholds from root to new fieldOptions object\n * Renames valueOptions to to defaults and moves it under fieldOptions\n */\nexport function migrateFromValueOptions(old: any) {\n  const { valueOptions } = old;\n  if (!valueOptions) {\n    return old;\n  }\n\n  const fieldOptions: any = {};\n  const fieldDefaults: any = {};\n\n  fieldOptions.mappings = old.valueMappings;\n  fieldOptions.thresholds = old.thresholds;\n  fieldOptions.defaults = fieldDefaults;\n\n  fieldDefaults.unit = valueOptions.unit;\n  fieldDefaults.decimals = valueOptions.decimals;\n\n  // Make sure the stats have a valid name\n  if (valueOptions.stat) {\n    const reducer = fieldReducers.get(valueOptions.stat);\n    if (reducer) {\n      fieldOptions.calcs = [reducer.id];\n    }\n  }\n\n  fieldDefaults.min = old.minValue;\n  fieldDefaults.max = old.maxValue;\n\n  const newOptions = {\n    ...old,\n    fieldOptions,\n  };\n\n  return omit(newOptions, 'valueMappings', 'thresholds', 'valueOptions', 'minValue', 'maxValue');\n}\n\nexport function migrateOldThresholds(thresholds?: any[]): Threshold[] | undefined {\n  if (!thresholds || !thresholds.length) {\n    return undefined;\n  }\n  const copy = thresholds.map((t) => {\n    return {\n      // Drops 'index'\n      value: t.value === null ? -Infinity : t.value,\n      color: t.color,\n    };\n  });\n  sortThresholds(copy);\n  copy[0].value = -Infinity;\n  return copy;\n}\n\n/**\n * @deprecated use convertOldAngularValueMappings instead\n * Convert the angular single stat mapping to new react style\n */\nexport function convertOldAngularValueMapping(panel: any): ValueMapping[] {\n  return convertOldAngularValueMappings(panel);\n}\n\ninterface GraphOptions {\n  xaxis: {\n    mode: 'series' | 'time' | 'histogram';\n    values?: string[];\n  };\n  legend: {\n    show: boolean;\n    alignAsTable: boolean;\n    rightSide: boolean;\n    values: boolean;\n    min?: boolean;\n    max?: boolean;\n    avg?: boolean;\n    current?: boolean;\n    total?: boolean;\n    sideWidth?: number;\n  };\n}\n\nfunction getReducersFromLegend(obj: Record<string, unknown>): string[] {\n  const ids: string[] = [];\n  for (const key in obj) {\n    const reducer = fieldReducers.getIfExists(key);\n    if (reducer) {\n      ids.push(reducer.id);\n    }\n  }\n  return ids;\n}\n\n// same as public/app/plugins/panel/barchart/migrations.ts\nfunction getReducerForMigration(reducers: string[] | undefined) {\n  const transformReducers: string[] = [];\n\n  reducers?.forEach((reducer) => {\n    // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n    if (!Object.values(ReducerID).includes(reducer as ReducerID)) {\n      if (reducer === 'current') {\n        transformReducers.push(ReducerID.lastNotNull);\n      } else if (reducer === 'total') {\n        transformReducers.push(ReducerID.sum);\n      } else if (reducer === 'avg') {\n        transformReducers.push(ReducerID.mean);\n      }\n    } else {\n      transformReducers.push(reducer);\n    }\n  });\n\n  return reducers ? transformReducers : [ReducerID.sum];\n}\n","import { css, cx } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport interface CallToActionCardProps {\n  message?: string | JSX.Element;\n  callToActionElement: JSX.Element;\n  footer?: string | JSX.Element;\n  className?: string;\n}\n\n/** @deprecated Use <EmptyState variant=\"call-to-action\" /> instead */\nexport const CallToActionCard = ({ message, callToActionElement, footer, className }: CallToActionCardProps) => {\n  const css = useStyles2(getStyles);\n\n  return (\n    <div className={cx([css.wrapper, className])}>\n      {message && <div className={css.message}>{message}</div>}\n      {callToActionElement}\n      {footer && <div className={css.footer}>{footer}</div>}\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  wrapper: css({\n    label: 'call-to-action-card',\n    background: theme.colors.background.secondary,\n    borderRadius: theme.shape.radius.default,\n    display: 'flex',\n    flexDirection: 'column',\n    alignItems: 'center',\n    justifyContent: 'center',\n    flexGrow: 1,\n    padding: theme.spacing(3),\n    [theme.breakpoints.down('sm')]: {\n      padding: theme.spacing(3, 1),\n    },\n  }),\n  message: css({\n    marginBottom: theme.spacing(3),\n    fontStyle: 'italic',\n  }),\n  footer: css({\n    marginTop: theme.spacing(3),\n  }),\n});\n","import { useRef, useState, useLayoutEffect } from 'react';\nimport * as React from 'react';\nimport { useClickAway } from 'react-use';\n\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { Menu } from '../Menu/Menu';\nimport { Portal } from '../Portal/Portal';\n\nexport interface ContextMenuProps {\n  /** Starting horizontal position for the menu */\n  x: number;\n  /** Starting vertical position for the menu */\n  y: number;\n  /** Callback for closing the menu */\n  onClose?: () => void;\n  /** On menu open focus the first element */\n  focusOnOpen?: boolean;\n  /** RenderProp function that returns menu items to display */\n  renderMenuItems?: () => React.ReactNode;\n  /** A function that returns header element */\n  renderHeader?: () => React.ReactNode;\n}\n\nexport const ContextMenu = React.memo(\n  ({ x, y, onClose, focusOnOpen = true, renderMenuItems, renderHeader }: ContextMenuProps) => {\n    const menuRef = useRef<HTMLDivElement>(null);\n    const [positionStyles, setPositionStyles] = useState({});\n\n    useLayoutEffect(() => {\n      const menuElement = menuRef.current;\n      if (menuElement) {\n        const rect = menuElement.getBoundingClientRect();\n        const OFFSET = 5;\n        const collisions = {\n          right: window.innerWidth < x + rect.width,\n          bottom: window.innerHeight < y + rect.height + OFFSET,\n        };\n\n        setPositionStyles({\n          position: 'fixed',\n          left: collisions.right ? x - rect.width - OFFSET : x - OFFSET,\n          top: Math.max(0, collisions.bottom ? y - rect.height - OFFSET : y + OFFSET),\n        });\n      }\n    }, [x, y]);\n\n    useClickAway(menuRef, () => {\n      onClose?.();\n    });\n    const header = renderHeader?.();\n    const menuItems = renderMenuItems?.();\n    const onOpen = (setFocusedItem: (a: number) => void) => {\n      if (focusOnOpen) {\n        setFocusedItem(0);\n      }\n    };\n    const onKeyDown = (e: React.KeyboardEvent) => {\n      if (e.key === 'Escape') {\n        e.preventDefault();\n        e.stopPropagation();\n        onClose?.();\n      }\n    };\n\n    return (\n      <Portal>\n        <Menu\n          header={header}\n          ref={menuRef}\n          style={positionStyles}\n          ariaLabel={selectors.components.Menu.MenuComponent('Context')}\n          onOpen={onOpen}\n          onClick={onClose}\n          onKeyDown={onKeyDown}\n        >\n          {menuItems}\n        </Menu>\n      </Portal>\n    );\n  }\n);\n\nContextMenu.displayName = 'ContextMenu';\n","import { useState } from 'react';\nimport * as React from 'react';\n\nimport { ContextMenu } from '../ContextMenu/ContextMenu';\n\nexport interface WithContextMenuProps {\n  /** Menu item trigger that accepts openMenu prop */\n  children: (props: { openMenu: React.MouseEventHandler<HTMLElement> }) => JSX.Element;\n  /** A function that returns an array of menu items */\n  renderMenuItems: () => React.ReactNode;\n  /** On menu open focus the first element */\n  focusOnOpen?: boolean;\n}\n\nexport const WithContextMenu = ({ children, renderMenuItems, focusOnOpen = true }: WithContextMenuProps) => {\n  const [isMenuOpen, setIsMenuOpen] = useState(false);\n  const [menuPosition, setMenuPosition] = useState({ x: 0, y: 0 });\n  return (\n    <>\n      {children({\n        openMenu: (e) => {\n          setIsMenuOpen(true);\n          setMenuPosition({\n            x: e.pageX,\n            y: e.pageY - window.scrollY,\n          });\n        },\n      })}\n\n      {isMenuOpen && (\n        <ContextMenu\n          onClose={() => setIsMenuOpen(false)}\n          x={menuPosition.x}\n          y={menuPosition.y}\n          renderMenuItems={renderMenuItems}\n          focusOnOpen={focusOnOpen}\n        />\n      )}\n    </>\n  );\n};\n","import { Record } from 'immutable';\nimport * as React from 'react';\nimport { Mark, Node, Decoration } from 'slate';\nimport { Editor } from 'slate-react';\n\nimport TOKEN_MARK from './TOKEN_MARK';\n\nexport interface OptionsFormat {\n  // Determine which node should be highlighted\n  onlyIn?: (node: Node) => boolean;\n  // Returns the syntax for a node that should be highlighted\n  getSyntax?: (node: Node) => string;\n  // Render a highlighting mark in a highlighted node\n  renderMark?: ({ mark, children }: { mark: Mark; children: React.ReactNode }) => void | React.ReactNode;\n}\n\n/**\n * Default filter for code blocks\n */\nfunction defaultOnlyIn(node: Node): boolean {\n  return node.object === 'block' && node.type === 'code_block';\n}\n\n/**\n * Default getter for syntax\n */\nfunction defaultGetSyntax(node: Node): string {\n  return 'javascript';\n}\n\n/**\n * Default rendering for decorations\n */\nfunction defaultRenderDecoration(\n  props: { children: React.ReactNode; decoration: Decoration },\n  editor: Editor,\n  next: () => any\n): void | React.ReactNode {\n  const { decoration } = props;\n  if (decoration.type !== TOKEN_MARK) {\n    return next();\n  }\n\n  const className = decoration.data.get('className');\n  return <span className={className}>{props.children}</span>;\n}\n\n/**\n * The plugin options\n */\nclass Options\n  extends Record({\n    onlyIn: defaultOnlyIn,\n    getSyntax: defaultGetSyntax,\n    renderDecoration: defaultRenderDecoration,\n  })\n  implements OptionsFormat\n{\n  declare readonly onlyIn: (node: Node) => boolean;\n  declare readonly getSyntax: (node: Node) => string;\n  declare readonly renderDecoration: (\n    {\n      decoration,\n      children,\n    }: {\n      decoration: Decoration;\n      children: React.ReactNode;\n    },\n    editor: Editor,\n    next: () => any\n  ) => void | React.ReactNode;\n\n  constructor(props: OptionsFormat) {\n    super(props);\n  }\n}\n\nexport default Options;\n","import Prism, { LanguageMap } from 'prismjs';\nimport { Block, Text, Decoration } from 'slate';\nimport { Plugin } from 'slate-react';\n\nimport TOKEN_MARK from './TOKEN_MARK';\nimport Options, { OptionsFormat } from './options';\n\nexport interface Token {\n  content: string;\n  offsets?: {\n    start: number;\n    end: number;\n  };\n  types: string[];\n  aliases: string[];\n  prev?: Token | null;\n  next?: Token | null;\n}\n\n/**\n * A Slate plugin to highlight code syntax.\n */\nexport function SlatePrism(optsParam: OptionsFormat = {}, prismLanguages = Prism.languages as LanguageMap): Plugin {\n  const opts: Options = new Options(optsParam);\n\n  return {\n    decorateNode: (node, editor, next) => {\n      if (!opts.onlyIn(node)) {\n        return next();\n      }\n\n      const block = Block.create(node as Block);\n      const grammarName = opts.getSyntax(block);\n      const grammar = prismLanguages[grammarName];\n\n      if (!grammar) {\n        // Grammar not loaded\n        return [];\n      }\n\n      // Tokenize the whole block text\n      const texts = block.getTexts();\n      const blockText = texts.map((text) => text && text.getText()).join('\\n');\n      const tokens = Prism.tokenize(blockText, grammar);\n      const flattened = flattenTokens(tokens);\n\n      const newData = editor.value.data.set('tokens', flattened);\n      editor.setData(newData);\n      return decorateNode(opts, tokens, block);\n    },\n\n    renderDecoration: (props, editor, next) =>\n      opts.renderDecoration(\n        {\n          children: props.children,\n          decoration: props.decoration,\n        },\n        editor,\n        next\n      ),\n  };\n}\n\n/**\n * Returns the decoration for a node\n */\nfunction decorateNode(opts: Options, tokens: Array<string | Prism.Token>, block: Block) {\n  const texts = block.getTexts();\n\n  // The list of decorations to return\n  const decorations: Decoration[] = [];\n  let textStart = 0;\n  let textEnd = 0;\n\n  texts.forEach((text) => {\n    textEnd = textStart + text!.getText().length;\n\n    let offset = 0;\n    function processToken(token: string | Prism.Token, accu?: string | number) {\n      if (typeof token === 'string') {\n        if (accu) {\n          const decoration = createDecoration({\n            text: text!,\n            textStart,\n            textEnd,\n            start: offset,\n            end: offset + token.length,\n            className: `prism-token token ${accu}`,\n            block,\n          });\n\n          if (decoration) {\n            decorations.push(decoration);\n          }\n        }\n        offset += token.length;\n      } else {\n        accu = `${accu} ${token.type}`;\n        if (token.alias) {\n          accu += ' ' + token.alias;\n        }\n\n        if (typeof token.content === 'string') {\n          const decoration = createDecoration({\n            text: text!,\n            textStart,\n            textEnd,\n            start: offset,\n            end: offset + token.content.length,\n            className: `prism-token token ${accu}`,\n            block,\n          });\n\n          if (decoration) {\n            decorations.push(decoration);\n          }\n\n          offset += token.content.length;\n        } else {\n          // When using token.content instead of token.matchedStr, token can be deep\n          for (let i = 0; i < token.content.length; i += 1) {\n            // @ts-ignore\n            processToken(token.content[i], accu);\n          }\n        }\n      }\n    }\n\n    tokens.forEach(processToken);\n    textStart = textEnd + 1; // account for added `\\n`\n  });\n\n  return decorations;\n}\n\n/**\n * Return a decoration range for the given text.\n */\nfunction createDecoration({\n  text,\n  textStart,\n  textEnd,\n  start,\n  end,\n  className,\n  block,\n}: {\n  text: Text; // The text being decorated\n  textStart: number; // Its start position in the whole text\n  textEnd: number; // Its end position in the whole text\n  start: number; // The position in the whole text where the token starts\n  end: number; // The position in the whole text where the token ends\n  className: string; // The prism token classname\n  block: Block;\n}): Decoration | null {\n  if (start >= textEnd || end <= textStart) {\n    // Ignore, the token is not in the text\n    return null;\n  }\n\n  // Shrink to this text boundaries\n  start = Math.max(start, textStart);\n  end = Math.min(end, textEnd);\n\n  // Now shift offsets to be relative to this text\n  start -= textStart;\n  end -= textStart;\n\n  const myDec = block.createDecoration({\n    object: 'decoration',\n    anchor: {\n      key: text.key,\n      offset: start,\n      object: 'point',\n    },\n    focus: {\n      key: text.key,\n      offset: end,\n      object: 'point',\n    },\n    type: TOKEN_MARK,\n    data: { className },\n  });\n\n  return myDec;\n}\n\nfunction flattenToken(token: string | Prism.Token | Array<string | Prism.Token>): Token[] {\n  if (typeof token === 'string') {\n    return [\n      {\n        content: token,\n        types: [],\n        aliases: [],\n      },\n    ];\n  } else if (Array.isArray(token)) {\n    return token.flatMap((t) => flattenToken(t));\n  } else if (token instanceof Prism.Token) {\n    return flattenToken(token.content).flatMap((t) => {\n      let aliases: string[] = [];\n      if (typeof token.alias === 'string') {\n        aliases = [token.alias];\n      } else {\n        aliases = token.alias ?? [];\n      }\n\n      return {\n        content: t.content,\n        types: [token.type, ...t.types],\n        aliases: [...aliases, ...t.aliases],\n      };\n    });\n  }\n\n  return [];\n}\n\nexport function flattenTokens(token: string | Prism.Token | Array<string | Prism.Token>) {\n  const tokens = flattenToken(token);\n\n  if (!tokens.length) {\n    return [];\n  }\n\n  const firstToken = tokens[0];\n  firstToken.prev = null;\n  firstToken.next = tokens.length >= 2 ? tokens[1] : null;\n  firstToken.offsets = {\n    start: 0,\n    end: firstToken.content.length,\n  };\n\n  for (let i = 1; i < tokens.length - 1; i++) {\n    tokens[i].prev = tokens[i - 1];\n    tokens[i].next = tokens[i + 1];\n\n    tokens[i].offsets = {\n      start: tokens[i - 1].offsets!.end,\n      end: tokens[i - 1].offsets!.end + tokens[i].content.length,\n    };\n  }\n\n  const lastToken = tokens[tokens.length - 1];\n  lastToken.prev = tokens.length >= 2 ? tokens[tokens.length - 2] : null;\n  lastToken.next = null;\n  lastToken.offsets = {\n    start: tokens.length >= 2 ? tokens[tokens.length - 2].offsets!.end : 0,\n    end:\n      tokens.length >= 2 ? tokens[tokens.length - 2].offsets!.end + lastToken.content.length : lastToken.content.length,\n  };\n\n  return tokens;\n}\n","import { css, cx } from '@emotion/css';\nimport { groupBy, capitalize } from 'lodash';\nimport { useRef, useMemo } from 'react';\nimport * as React from 'react';\nimport { useClickAway } from 'react-use';\n\nimport { VariableSuggestion, GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { List } from '../List/List';\n\ninterface DataLinkSuggestionsProps {\n  activeRef?: React.RefObject<HTMLDivElement>;\n  suggestions: VariableSuggestion[];\n  activeIndex: number;\n  onSuggestionSelect: (suggestion: VariableSuggestion) => void;\n  onClose?: () => void;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    list: css({\n      borderBottom: `1px solid ${theme.colors.border.weak}`,\n      '&:last-child': {\n        border: 'none',\n      },\n    }),\n    wrapper: css({\n      background: theme.colors.background.primary,\n      width: '250px',\n    }),\n    item: css({\n      background: 'none',\n      padding: '2px 8px',\n      userSelect: 'none',\n      color: theme.colors.text.primary,\n      cursor: 'pointer',\n      '&:hover': {\n        background: theme.colors.action.hover,\n      },\n    }),\n    label: css({\n      color: theme.colors.text.secondary,\n    }),\n    activeItem: css({\n      background: theme.colors.background.secondary,\n      '&:hover': {\n        background: theme.colors.background.secondary,\n      },\n    }),\n    itemValue: css({\n      fontFamily: theme.typography.fontFamilyMonospace,\n      fontSize: theme.typography.size.sm,\n    }),\n  };\n};\n\nexport const DataLinkSuggestions = ({ suggestions, ...otherProps }: DataLinkSuggestionsProps) => {\n  const ref = useRef(null);\n\n  useClickAway(ref, () => {\n    if (otherProps.onClose) {\n      otherProps.onClose();\n    }\n  });\n\n  const groupedSuggestions = useMemo(() => {\n    return groupBy(suggestions, (s) => s.origin);\n  }, [suggestions]);\n\n  const styles = useStyles2(getStyles);\n\n  return (\n    <div role=\"menu\" ref={ref} className={styles.wrapper}>\n      {Object.keys(groupedSuggestions).map((key, i) => {\n        const indexOffset =\n          i === 0\n            ? 0\n            : Object.keys(groupedSuggestions).reduce((acc, current, index) => {\n                if (index >= i) {\n                  return acc;\n                }\n                return acc + groupedSuggestions[current].length;\n              }, 0);\n\n        return (\n          <DataLinkSuggestionsList\n            {...otherProps}\n            suggestions={groupedSuggestions[key]}\n            label={capitalize(key)}\n            activeIndex={otherProps.activeIndex}\n            activeIndexOffset={indexOffset}\n            key={key}\n          />\n        );\n      })}\n    </div>\n  );\n};\n\nDataLinkSuggestions.displayName = 'DataLinkSuggestions';\n\ninterface DataLinkSuggestionsListProps extends DataLinkSuggestionsProps {\n  label: string;\n  activeIndexOffset: number;\n  activeRef?: React.RefObject<HTMLDivElement>;\n}\n\nconst DataLinkSuggestionsList = React.memo(\n  ({\n    activeIndex,\n    activeIndexOffset,\n    label,\n    onClose,\n    onSuggestionSelect,\n    suggestions,\n    activeRef: selectedRef,\n  }: DataLinkSuggestionsListProps) => {\n    const styles = useStyles2(getStyles);\n\n    return (\n      <>\n        <List\n          className={styles.list}\n          items={suggestions}\n          renderItem={(item, index) => {\n            const isActive = index + activeIndexOffset === activeIndex;\n            return (\n              // key events are handled by DataLinkInput\n              // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n              <div\n                role=\"menuitem\"\n                tabIndex={0}\n                className={cx(styles.item, isActive && styles.activeItem)}\n                ref={isActive ? selectedRef : undefined}\n                onClick={() => {\n                  onSuggestionSelect(item);\n                }}\n                title={item.documentation}\n              >\n                <span className={styles.itemValue}>\n                  <span className={styles.label}>{label}</span> {item.label}\n                </span>\n              </div>\n            );\n          }}\n        />\n      </>\n    );\n  }\n);\n\nDataLinkSuggestionsList.displayName = 'DataLinkSuggestionsList';\n","import { VirtualElement } from '@popperjs/core/lib/types';\n\nexport class SelectionReference implements VirtualElement {\n  getBoundingClientRect() {\n    const selection = window.getSelection();\n    const node = selection && selection.anchorNode;\n\n    if (node && node.parentElement) {\n      const rect = node.parentElement.getBoundingClientRect();\n      return rect;\n    }\n\n    const fallbackDOMRect: DOMRect = {\n      top: 0,\n      left: 0,\n      bottom: 0,\n      right: 0,\n      width: 0,\n      height: 0,\n      x: 0,\n      y: 0,\n      toJSON: () => {},\n    };\n    return fallbackDOMRect;\n  }\n\n  get clientWidth() {\n    return this.getBoundingClientRect().width;\n  }\n\n  get clientHeight() {\n    return this.getBoundingClientRect().height;\n  }\n}\n","import { css, cx } from '@emotion/css';\nimport { autoUpdate, flip, offset, shift, useFloating } from '@floating-ui/react';\nimport Prism, { Grammar, LanguageMap } from 'prismjs';\nimport { memo, useEffect, useRef, useState } from 'react';\nimport * as React from 'react';\nimport { usePrevious } from 'react-use';\nimport { Value } from 'slate';\nimport Plain from 'slate-plain-serializer';\nimport { Editor } from 'slate-react';\n\nimport { DataLinkBuiltInVars, GrafanaTheme2, VariableOrigin, VariableSuggestion } from '@grafana/data';\n\nimport { SlatePrism } from '../../slate-plugins/slate-prism';\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { SCHEMA, makeValue } from '../../utils/slate';\nimport { getInputStyles } from '../Input/Input';\nimport { Portal } from '../Portal/Portal';\nimport { ScrollContainer } from '../ScrollContainer/ScrollContainer';\n\nimport { DataLinkSuggestions } from './DataLinkSuggestions';\nimport { SelectionReference } from './SelectionReference';\n\nconst modulo = (a: number, n: number) => a - n * Math.floor(a / n);\n\ninterface DataLinkInputProps {\n  value: string;\n  onChange: (url: string, callback?: () => void) => void;\n  suggestions: VariableSuggestion[];\n  placeholder?: string;\n}\n\nconst datalinksSyntax: Grammar = {\n  builtInVariable: {\n    pattern: /(\\${\\S+?})/,\n  },\n};\n\nconst plugins = [\n  SlatePrism(\n    {\n      onlyIn: (node) => 'type' in node && node.type === 'code_block',\n      getSyntax: () => 'links',\n    },\n    { ...(Prism.languages as LanguageMap), links: datalinksSyntax }\n  ),\n];\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  input: getInputStyles({ theme, invalid: false }).input,\n  editor: css({\n    '.token.builtInVariable': {\n      color: theme.colors.success.text,\n    },\n    '.token.variable': {\n      color: theme.colors.primary.text,\n    },\n  }),\n  suggestionsWrapper: css({\n    boxShadow: theme.shadows.z2,\n  }),\n  // Wrapper with child selector needed.\n  // When classnames are applied to the same element as the wrapper, it causes the suggestions to stop working\n  wrapperOverrides: css({\n    width: '100%',\n    '> .slate-query-field__wrapper': {\n      padding: 0,\n      backgroundColor: 'transparent',\n      border: 'none',\n    },\n  }),\n});\n\n// This memoised also because rerendering the slate editor grabs focus which created problem in some cases this\n// was used and changes to different state were propagated here.\nexport const DataLinkInput = memo(\n  ({\n    value,\n    onChange,\n    suggestions,\n    placeholder = 'http://your-grafana.com/d/000000010/annotations',\n  }: DataLinkInputProps) => {\n    const editorRef = useRef<Editor>(null);\n    const styles = useStyles2(getStyles);\n    const [showingSuggestions, setShowingSuggestions] = useState(false);\n    const [suggestionsIndex, setSuggestionsIndex] = useState(0);\n    const [linkUrl, setLinkUrl] = useState<Value>(makeValue(value));\n    const prevLinkUrl = usePrevious<Value>(linkUrl);\n    const [scrollTop, setScrollTop] = useState(0);\n    const scrollRef = useRef<HTMLDivElement>(null);\n\n    useEffect(() => {\n      scrollRef.current?.scrollTo(0, scrollTop);\n    }, [scrollTop]);\n\n    // the order of middleware is important!\n    const middleware = [\n      offset(({ rects }) => ({\n        alignmentAxis: rects.reference.width,\n      })),\n      flip({\n        fallbackAxisSideDirection: 'start',\n        // see https://floating-ui.com/docs/flip#combining-with-shift\n        crossAxis: false,\n        boundary: document.body,\n      }),\n      shift(),\n    ];\n\n    const { refs, floatingStyles } = useFloating({\n      open: showingSuggestions,\n      placement: 'bottom-start',\n      onOpenChange: setShowingSuggestions,\n      middleware,\n      whileElementsMounted: autoUpdate,\n      strategy: 'fixed',\n    });\n\n    // Workaround for https://github.com/ianstormtaylor/slate/issues/2927\n    const stateRef = useRef({ showingSuggestions, suggestions, suggestionsIndex, linkUrl, onChange });\n    stateRef.current = { showingSuggestions, suggestions, suggestionsIndex, linkUrl, onChange };\n\n    // Used to get the height of the suggestion elements in order to scroll to them.\n    const activeRef = useRef<HTMLDivElement>(null);\n    useEffect(() => {\n      setScrollTop(getElementPosition(activeRef.current, suggestionsIndex));\n    }, [suggestionsIndex]);\n\n    const onKeyDown = React.useCallback((event: React.KeyboardEvent, next: () => void) => {\n      if (!stateRef.current.showingSuggestions) {\n        if (event.key === '=' || event.key === '$' || (event.keyCode === 32 && event.ctrlKey)) {\n          const selectionRef = new SelectionReference();\n          refs.setReference(selectionRef);\n          return setShowingSuggestions(true);\n        }\n        return next();\n      }\n\n      switch (event.key) {\n        case 'Backspace':\n          if (stateRef.current.linkUrl.focusText.getText().length === 1) {\n            next();\n          }\n        case 'Escape':\n          setShowingSuggestions(false);\n          return setSuggestionsIndex(0);\n\n        case 'Enter':\n          event.preventDefault();\n          return onVariableSelect(stateRef.current.suggestions[stateRef.current.suggestionsIndex]);\n\n        case 'ArrowDown':\n        case 'ArrowUp':\n          event.preventDefault();\n          const direction = event.key === 'ArrowDown' ? 1 : -1;\n          return setSuggestionsIndex((index) => modulo(index + direction, stateRef.current.suggestions.length));\n        default:\n          return next();\n      }\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n\n    useEffect(() => {\n      // Update the state of the link in the parent. This is basically done on blur but we need to do it after\n      // our state have been updated. The duplicity of state is done for perf reasons and also because local\n      // state also contains things like selection and formating.\n      if (prevLinkUrl && prevLinkUrl.selection.isFocused && !linkUrl.selection.isFocused) {\n        stateRef.current.onChange(Plain.serialize(linkUrl));\n      }\n    }, [linkUrl, prevLinkUrl]);\n\n    const onUrlChange = React.useCallback(({ value }: { value: Value }) => {\n      setLinkUrl(value);\n    }, []);\n\n    const onVariableSelect = (item: VariableSuggestion, editor = editorRef.current!) => {\n      const precedingChar: string = getCharactersAroundCaret();\n      const precedingDollar = precedingChar === '$';\n      if (item.origin !== VariableOrigin.Template || item.value === DataLinkBuiltInVars.includeVars) {\n        editor.insertText(`${precedingDollar ? '' : '$'}\\{${item.value}}`);\n      } else {\n        editor.insertText(`${precedingDollar ? '' : '$'}\\{${item.value}:queryparam}`);\n      }\n\n      setLinkUrl(editor.value);\n      setShowingSuggestions(false);\n\n      setSuggestionsIndex(0);\n      stateRef.current.onChange(Plain.serialize(editor.value));\n    };\n\n    const getCharactersAroundCaret = () => {\n      const input: HTMLSpanElement | null = document.getElementById('data-link-input')!;\n      let precedingChar = '',\n        sel: Selection | null,\n        range: Range;\n      if (window.getSelection) {\n        sel = window.getSelection();\n        if (sel && sel.rangeCount > 0) {\n          range = sel.getRangeAt(0).cloneRange();\n          // Collapse to the start of the range\n          range.collapse(true);\n          range.setStart(input, 0);\n          precedingChar = range.toString().slice(-1);\n        }\n      }\n      return precedingChar;\n    };\n\n    return (\n      <div className={styles.wrapperOverrides}>\n        <div className=\"slate-query-field__wrapper\">\n          <div id=\"data-link-input\" className=\"slate-query-field\">\n            {showingSuggestions && (\n              <Portal>\n                <div ref={refs.setFloating} style={floatingStyles}>\n                  <ScrollContainer\n                    maxHeight=\"300px\"\n                    ref={scrollRef}\n                    onScroll={(event) => setScrollTop(event.currentTarget.scrollTop)}\n                  >\n                    <DataLinkSuggestions\n                      activeRef={activeRef}\n                      suggestions={stateRef.current.suggestions}\n                      onSuggestionSelect={onVariableSelect}\n                      onClose={() => setShowingSuggestions(false)}\n                      activeIndex={suggestionsIndex}\n                    />\n                  </ScrollContainer>\n                </div>\n              </Portal>\n            )}\n            <Editor\n              schema={SCHEMA}\n              ref={editorRef}\n              placeholder={placeholder}\n              value={stateRef.current.linkUrl}\n              onChange={onUrlChange}\n              onKeyDown={(event, _editor, next) => onKeyDown(event, next)}\n              plugins={plugins}\n              className={cx(\n                styles.editor,\n                styles.input,\n                css({\n                  padding: '3px 8px',\n                })\n              )}\n            />\n          </div>\n        </div>\n      </div>\n    );\n  }\n);\n\nDataLinkInput.displayName = 'DataLinkInput';\n\nfunction getElementPosition(suggestionElement: HTMLElement | null, activeIndex: number) {\n  return (suggestionElement?.clientHeight ?? 0) * activeIndex;\n}\n","import { css } from '@emotion/css';\nimport { memo, ChangeEvent } from 'react';\n\nimport { VariableSuggestion, GrafanaTheme2, DataLink } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Field } from '../Forms/Field';\nimport { Input } from '../Input/Input';\nimport { Switch } from '../Switch/Switch';\n\nimport { DataLinkInput } from './DataLinkInput';\n\ninterface DataLinkEditorProps {\n  index: number;\n  isLast: boolean;\n  value: DataLink;\n  suggestions: VariableSuggestion[];\n  onChange: (index: number, link: DataLink, callback?: () => void) => void;\n  showOneClick?: boolean;\n}\n\nexport const DataLinkEditor = memo(\n  ({ index, value, onChange, suggestions, isLast, showOneClick = false }: DataLinkEditorProps) => {\n    const styles = useStyles2(getStyles);\n\n    const onUrlChange = (url: string, callback?: () => void) => {\n      onChange(index, { ...value, url }, callback);\n    };\n\n    const onTitleChange = (event: ChangeEvent<HTMLInputElement>) => {\n      onChange(index, { ...value, title: event.target.value });\n    };\n\n    const onOpenInNewTabChanged = () => {\n      onChange(index, { ...value, targetBlank: !value.targetBlank });\n    };\n\n    const onOneClickChanged = () => {\n      onChange(index, { ...value, oneClick: !value.oneClick });\n    };\n\n    return (\n      <div className={styles.listItem}>\n        <Field label={t('grafana-ui.data-link-editor.title-label', 'Title')}>\n          <Input\n            id=\"link-title\"\n            value={value.title}\n            onChange={onTitleChange}\n            placeholder={t('grafana-ui.data-link-editor.title-placeholder', 'Show details')}\n          />\n        </Field>\n\n        <Field label={t('grafana-ui.data-link-editor.url-label', 'URL')}>\n          <DataLinkInput value={value.url} onChange={onUrlChange} suggestions={suggestions} />\n        </Field>\n\n        <Field label={t('grafana-ui.data-link-editor.new-tab-label', 'Open in new tab')}>\n          <Switch id=\"new-tab-toggle\" value={value.targetBlank || false} onChange={onOpenInNewTabChanged} />\n        </Field>\n\n        {showOneClick && (\n          <Field\n            label={t('grafana-ui.data-link-inline-editor.one-click', 'One click')}\n            description={t(\n              'grafana-ui.data-link-editor-modal.one-click-description',\n              'Only one link can have one click enabled at a time'\n            )}\n          >\n            <Switch id=\"one-click-toggle\" value={value.oneClick || false} onChange={onOneClickChanged} />\n          </Field>\n        )}\n\n        {isLast && (\n          <Trans i18nKey=\"grafana-ui.data-link-editor.info\" className={styles.infoText}>\n            With data links you can reference data variables like series name, labels and values. Type CMD+Space,\n            CTRL+Space, or $ to open variable suggestions.\n          </Trans>\n        )}\n      </div>\n    );\n  }\n);\n\nDataLinkEditor.displayName = 'DataLinkEditor';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  listItem: css({\n    marginBottom: theme.spacing(),\n  }),\n  infoText: css({\n    paddingBottom: theme.spacing(2),\n    marginLeft: '66px',\n    color: theme.colors.text.secondary,\n  }),\n});\n","import { useState } from 'react';\n\nimport { DataFrame, DataLink, VariableSuggestion } from '@grafana/data';\nimport { Trans } from '@grafana/i18n';\n\nimport { Button } from '../../Button/Button';\nimport { Modal } from '../../Modal/Modal';\nimport { DataLinkEditor } from '../DataLinkEditor';\n\ninterface DataLinkEditorModalContentProps {\n  link: DataLink;\n  index: number;\n  data: DataFrame[];\n  getSuggestions: () => VariableSuggestion[];\n  onSave: (index: number, ink: DataLink) => void;\n  onCancel: (index: number) => void;\n  showOneClick?: boolean;\n}\n\nexport const DataLinkEditorModalContent = ({\n  link,\n  index,\n  onSave,\n  onCancel,\n  getSuggestions,\n  showOneClick,\n}: DataLinkEditorModalContentProps) => {\n  const [dirtyLink, setDirtyLink] = useState(link);\n  return (\n    <>\n      <DataLinkEditor\n        value={dirtyLink}\n        index={index}\n        isLast={false}\n        onChange={(index, link) => {\n          setDirtyLink(link);\n        }}\n        suggestions={getSuggestions()}\n        showOneClick={showOneClick}\n      />\n      <Modal.ButtonRow>\n        <Button variant=\"secondary\" onClick={() => onCancel(index)} fill=\"outline\">\n          <Trans i18nKey=\"grafana-ui.data-link-editor-modal.cancel\">Cancel</Trans>\n        </Button>\n        <Button\n          onClick={() => {\n            onSave(index, dirtyLink);\n          }}\n          disabled={dirtyLink.title.trim() === '' || dirtyLink.url.trim() === ''}\n        >\n          <Trans i18nKey=\"grafana-ui.data-link-editor-modal.save\">Save</Trans>\n        </Button>\n      </Modal.ButtonRow>\n    </>\n  );\n};\n","import { css, cx } from '@emotion/css';\nimport { HTMLAttributes } from 'react';\nimport * as React from 'react';\nimport Skeleton from 'react-loading-skeleton';\nimport tinycolor from 'tinycolor2';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { IconName } from '../../types/icon';\nimport { SkeletonComponent, attachSkeleton } from '../../utils/skeleton';\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip } from '../Tooltip/Tooltip';\nimport { PopoverContent } from '../Tooltip/types';\n\nexport type BadgeColor = 'blue' | 'red' | 'green' | 'orange' | 'purple' | 'darkgrey' | 'brand';\n\nexport interface BadgeProps extends HTMLAttributes<HTMLDivElement> {\n  text?: React.ReactNode;\n  color: BadgeColor;\n  icon?: IconName;\n  tooltip?: PopoverContent;\n}\n\nconst BadgeComponent = React.memo<BadgeProps>(({ icon, color, text, tooltip, className, ...otherProps }) => {\n  const styles = useStyles2(getStyles, color);\n  const badge = (\n    <div className={cx(styles.wrapper, className)} {...otherProps}>\n      {icon && <Icon name={icon} size=\"sm\" />}\n      {text}\n    </div>\n  );\n\n  return tooltip ? (\n    <Tooltip content={tooltip} placement=\"auto\">\n      {badge}\n    </Tooltip>\n  ) : (\n    badge\n  );\n});\nBadgeComponent.displayName = 'Badge';\n\nconst BadgeSkeleton: SkeletonComponent = ({ rootProps }) => {\n  const styles = useStyles2(getSkeletonStyles);\n\n  return <Skeleton width={60} height={22} containerClassName={styles.container} {...rootProps} />;\n};\n\nexport const Badge = attachSkeleton(BadgeComponent, BadgeSkeleton);\n\nconst getSkeletonStyles = () => ({\n  container: css({\n    lineHeight: 1,\n  }),\n});\n\nconst getStyles = (theme: GrafanaTheme2, color: BadgeColor) => {\n  let sourceColor = theme.visualization.getColorByName(color);\n  let borderColor = '';\n  let bgColor = '';\n  let textColor = '';\n\n  if (theme.isDark) {\n    bgColor = tinycolor(sourceColor).setAlpha(0.15).toString();\n    borderColor = tinycolor(sourceColor).setAlpha(0.25).toString();\n    textColor = tinycolor(sourceColor).lighten(15).toString();\n  } else {\n    bgColor = tinycolor(sourceColor).setAlpha(0.15).toString();\n    borderColor = tinycolor(sourceColor).setAlpha(0.25).toString();\n    textColor = tinycolor(sourceColor).darken(20).toString();\n  }\n\n  if (color === 'brand') {\n    bgColor = theme.colors.gradients.brandHorizontal;\n    borderColor = 'transparent';\n    textColor = theme.colors.primary.contrastText;\n  }\n\n  return {\n    wrapper: css({\n      display: 'inline-flex',\n      padding: '1px 4px',\n      borderRadius: theme.shape.radius.default,\n      background: bgColor,\n      border: `1px solid ${borderColor}`,\n      color: textColor,\n      fontWeight: theme.typography.fontWeightRegular,\n      gap: theme.spacing(0.5),\n      fontSize: theme.typography.bodySmall.fontSize,\n      lineHeight: theme.typography.bodySmall.lineHeight,\n      alignItems: 'center',\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { Draggable } from '@hello-pangea/dnd';\n\nimport { Action, DataFrame, DataLink, GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { Badge } from '../../Badge/Badge';\nimport { Icon } from '../../Icon/Icon';\nimport { IconButton } from '../../IconButton/IconButton';\n\nexport interface DataLinksListItemBaseProps<T extends DataLink | Action> {\n  index: number;\n  item: T;\n  data: DataFrame[];\n  onChange: (index: number, item: T) => void;\n  onEdit: () => void;\n  onRemove: () => void;\n  isEditing?: boolean;\n  itemKey: string;\n}\n\n/** @internal */\nexport function DataLinksListItemBase<T extends DataLink | Action>({\n  item,\n  onEdit,\n  onRemove,\n  index,\n  itemKey,\n}: DataLinksListItemBaseProps<T>) {\n  const styles = useStyles2(getDataLinkListItemStyles);\n  const { title = '', oneClick = false } = item;\n\n  const url = ('type' in item ? item[item.type]?.url : item.url) ?? '';\n  const hasTitle = title.trim() !== '';\n  const hasUrl = url.trim() !== '';\n\n  return (\n    <Draggable key={itemKey} draggableId={itemKey} index={index}>\n      {(provided) => (\n        <div\n          className={cx(styles.wrapper, styles.dragRow)}\n          ref={provided.innerRef}\n          {...provided.draggableProps}\n          key={index}\n        >\n          <div className={styles.linkDetails}>\n            <div className={cx(styles.url, !hasTitle && styles.notConfigured)}>\n              {hasTitle ? title : t('grafana-ui.data-links-inline-editor.title-not-provided', 'Title not provided')}\n            </div>\n            <div className={cx(styles.url, !hasUrl && styles.notConfigured)} title={url}>\n              {hasUrl ? url : t('grafana-ui.data-links-inline-editor.url-not-provided', 'Data link url not provided')}\n            </div>\n          </div>\n          <div className={styles.icons}>\n            {oneClick && (\n              <Badge\n                color=\"blue\"\n                text={t('grafana-ui.data-links-inline-editor.one-click', 'One click')}\n                tooltip={t('grafana-ui.data-links-inline-editor.one-click-enabled', 'One click enabled')}\n              />\n            )}\n            <IconButton\n              name=\"pen\"\n              onClick={onEdit}\n              className={styles.icon}\n              tooltip={t('grafana-ui.data-links-inline-editor.tooltip-edit', 'Edit')}\n            />\n            <IconButton\n              name=\"trash-alt\"\n              onClick={onRemove}\n              className={styles.icon}\n              tooltip={t('grafana-ui.data-links-inline-editor.tooltip-remove', 'Remove')}\n            />\n            <div className={styles.dragIcon} {...provided.dragHandleProps}>\n              <Icon name=\"draggabledots\" size=\"lg\" />\n            </div>\n          </div>\n        </div>\n      )}\n    </Draggable>\n  );\n}\n\nconst getDataLinkListItemStyles = (theme: GrafanaTheme2) => {\n  return {\n    wrapper: css({\n      display: 'flex',\n      flexGrow: 1,\n      alignItems: 'center',\n      justifyContent: 'space-between',\n      padding: '5px 0 5px 10px',\n      borderRadius: theme.shape.radius.default,\n      background: theme.colors.background.secondary,\n      gap: 8,\n    }),\n    linkDetails: css({\n      display: 'flex',\n      flexDirection: 'column',\n      flexGrow: 1,\n      maxWidth: `calc(100% - 100px)`,\n    }),\n    errored: css({\n      color: theme.colors.error.text,\n      fontStyle: 'italic',\n    }),\n    notConfigured: css({\n      fontStyle: 'italic',\n    }),\n    title: css({\n      color: theme.colors.text.primary,\n      fontSize: theme.typography.size.sm,\n      fontWeight: theme.typography.fontWeightMedium,\n    }),\n    url: css({\n      color: theme.colors.text.secondary,\n      fontSize: theme.typography.size.sm,\n      whiteSpace: 'nowrap',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n    }),\n    dragRow: css({\n      position: 'relative',\n      margin: '8px',\n    }),\n    icons: css({\n      display: 'flex',\n      padding: 6,\n      alignItems: 'center',\n      gap: 8,\n    }),\n    dragIcon: css({\n      cursor: 'grab',\n      color: theme.colors.text.secondary,\n      margin: theme.spacing(0, 0.5),\n    }),\n    icon: css({\n      color: theme.colors.text.secondary,\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport { DragDropContext, Droppable, DropResult } from '@hello-pangea/dnd';\nimport { cloneDeep } from 'lodash';\nimport { useEffect, useState } from 'react';\n\nimport { Action, DataFrame, DataLink, GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { Button } from '../../Button/Button';\nimport { Modal } from '../../Modal/Modal';\n\nimport { DataLinksListItemBase } from './DataLinksListItemBase';\n\nexport interface DataLinksInlineEditorBaseProps<T extends DataLink | Action> {\n  type: 'link' | 'action';\n  items?: T[];\n  onChange: (items: T[]) => void;\n  data: DataFrame[];\n  children: (\n    item: T,\n    index: number,\n    onSave: (index: number, item: T) => void,\n    onCancel: (index: number) => void\n  ) => React.ReactNode;\n}\n\n/** @internal */\nexport function DataLinksInlineEditorBase<T extends DataLink | Action>({\n  type,\n  items,\n  onChange,\n  data,\n  children,\n}: DataLinksInlineEditorBaseProps<T>) {\n  const [editIndex, setEditIndex] = useState<number | null>(null);\n  const [isNew, setIsNew] = useState(false);\n\n  const [itemsSafe, setItemsSafe] = useState<T[]>([]);\n\n  useEffect(() => {\n    setItemsSafe(items ?? []);\n  }, [items]);\n\n  const styles = useStyles2(getDataLinksInlineEditorStyles);\n  const isEditing = editIndex !== null;\n\n  const _onChange = (index: number, item: T) => {\n    if (isNew) {\n      const title = item.title;\n      // @ts-ignore - https://github.com/microsoft/TypeScript/issues/27808\n      const url = item.url ?? item.fetch?.url ?? '';\n\n      if (title.trim() === '' && url.trim() === '') {\n        setIsNew(false);\n        setEditIndex(null);\n        return;\n      } else {\n        setEditIndex(null);\n        setIsNew(false);\n      }\n    }\n\n    if (item.oneClick === true) {\n      itemsSafe.forEach((item) => {\n        if (item.oneClick) {\n          item.oneClick = false;\n        }\n      });\n    }\n\n    const update = cloneDeep(itemsSafe);\n    update[index] = item;\n    onChange(update);\n    setEditIndex(null);\n  };\n\n  const _onCancel = (index: number) => {\n    if (isNew) {\n      setIsNew(false);\n    }\n    setEditIndex(null);\n  };\n\n  const onDataLinkAdd = () => {\n    let update = cloneDeep(itemsSafe);\n    setEditIndex(update.length);\n    setIsNew(true);\n  };\n\n  const onDataLinkRemove = (index: number) => {\n    const update = cloneDeep(itemsSafe);\n    update.splice(index, 1);\n    onChange(update);\n  };\n\n  const onDragEnd = (result: DropResult) => {\n    if (items == null || result.destination == null) {\n      return;\n    }\n\n    const update = cloneDeep(itemsSafe);\n    const link = update[result.source.index];\n\n    update.splice(result.source.index, 1);\n    update.splice(result.destination.index, 0, link);\n\n    setItemsSafe(update);\n    onChange(update);\n  };\n\n  const getItemText = (action: 'edit' | 'add') => {\n    let text = '';\n    switch (type) {\n      case 'link':\n        text =\n          action === 'edit'\n            ? t('grafana-ui.data-links-inline-editor.edit-link', 'Edit link')\n            : t('grafana-ui.data-links-inline-editor.add-link', 'Add link');\n        break;\n      case 'action':\n        text =\n          action === 'edit'\n            ? t('grafana-ui.action-editor.inline.edit-action', 'Edit action')\n            : t('grafana-ui.action-editor.inline.add-action', 'Add action');\n        break;\n    }\n\n    return text;\n  };\n\n  return (\n    <div className={styles.container}>\n      <DragDropContext onDragEnd={onDragEnd}>\n        <Droppable droppableId=\"sortable-links\" direction=\"vertical\">\n          {(provided) => (\n            <div className={styles.wrapper} ref={provided.innerRef} {...provided.droppableProps}>\n              {itemsSafe.map((item, idx) => {\n                const key = `${item.title}/${idx}`;\n                return (\n                  <DataLinksListItemBase<T>\n                    key={key}\n                    index={idx}\n                    item={item}\n                    onChange={_onChange}\n                    onEdit={() => setEditIndex(idx)}\n                    onRemove={() => onDataLinkRemove(idx)}\n                    data={data}\n                    itemKey={key}\n                  />\n                );\n              })}\n              {provided.placeholder}\n            </div>\n          )}\n        </Droppable>\n      </DragDropContext>\n\n      {isEditing && editIndex !== null && (\n        <Modal\n          title={getItemText(isNew ? 'add' : 'edit')}\n          isOpen={true}\n          closeOnBackdropClick={false}\n          onDismiss={() => {\n            _onCancel(editIndex);\n          }}\n        >\n          {children(itemsSafe[editIndex], editIndex, _onChange, _onCancel)}\n        </Modal>\n      )}\n\n      <Button size=\"sm\" icon=\"plus\" onClick={onDataLinkAdd} variant=\"secondary\" className={styles.button}>\n        {getItemText('add')}\n      </Button>\n    </div>\n  );\n}\n\nconst getDataLinksInlineEditorStyles = (theme: GrafanaTheme2) => ({\n  container: css({\n    position: 'relative',\n  }),\n  wrapper: css({\n    marginBottom: theme.spacing(2),\n    display: 'flex',\n    flexDirection: 'column',\n  }),\n  button: css({\n    marginLeft: theme.spacing(1),\n  }),\n});\n","import { DataLink, VariableSuggestion } from '@grafana/data';\n\nimport { DataLinkEditorModalContent } from './DataLinkEditorModalContent';\nimport { DataLinksInlineEditorBase, DataLinksInlineEditorBaseProps } from './DataLinksInlineEditorBase';\n\ntype DataLinksInlineEditorProps = Omit<DataLinksInlineEditorBaseProps<DataLink>, 'children' | 'type' | 'items'> & {\n  links?: DataLink[];\n  showOneClick?: boolean;\n  getSuggestions: () => VariableSuggestion[];\n};\n\nexport const DataLinksInlineEditor = ({\n  links,\n  getSuggestions,\n  showOneClick = false,\n  ...rest\n}: DataLinksInlineEditorProps) => (\n  <DataLinksInlineEditorBase<DataLink> type=\"link\" items={links} {...rest}>\n    {(item, index, onSave, onCancel) => (\n      <DataLinkEditorModalContent\n        index={index}\n        link={item ?? { title: '', url: '' }}\n        data={rest.data}\n        onSave={onSave}\n        onCancel={onCancel}\n        getSuggestions={getSuggestions}\n        showOneClick={showOneClick}\n      />\n    )}\n  </DataLinksInlineEditorBase>\n);\n","import { LinkModel } from '@grafana/data';\n\nimport { MenuItemProps } from '../components/Menu/MenuItem';\n\n/**\n * Delays creating links until we need to open the ContextMenu\n */\nexport const linkModelToContextMenuItems: (links: () => LinkModel[]) => MenuItemProps[] = (links) => {\n  return links().map((link) => {\n    return {\n      label: link.title,\n      ariaLabel: link.title,\n      // TODO: rename to href\n      url: link.href,\n      target: link.target,\n      icon: `${link.target === '_blank' ? 'external-link-alt' : 'link'}`,\n      onClick: link.onClick,\n    };\n  });\n};\n","import { css } from '@emotion/css';\nimport { CSSProperties } from 'react';\nimport * as React from 'react';\n\nimport { ActionModel, GrafanaTheme2, LinkModel } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { linkModelToContextMenuItems } from '../../utils/dataLinks';\nimport { WithContextMenu } from '../ContextMenu/WithContextMenu';\nimport { MenuGroup, MenuItemsGroup } from '../Menu/MenuGroup';\nimport { MenuItem } from '../Menu/MenuItem';\n\nexport interface DataLinksContextMenuProps {\n  children: (props: DataLinksContextMenuApi) => JSX.Element;\n  links: () => LinkModel[];\n  style?: CSSProperties;\n  /**\n   * @deprecated Will be removed in a future version\n   */\n  actions?: ActionModel[];\n}\n\nexport interface DataLinksContextMenuApi {\n  openMenu?: React.MouseEventHandler<HTMLOrSVGElement>;\n  targetClassName?: string;\n}\n\nexport const DataLinksContextMenu = ({ children, links, style }: DataLinksContextMenuProps) => {\n  const styles = useStyles2(getStyles);\n\n  const itemsGroup: MenuItemsGroup[] = [\n    { items: linkModelToContextMenuItems(links), label: Boolean(links().length) ? 'Data links' : '' },\n  ];\n\n  const linksCounter = itemsGroup[0].items.length;\n  const renderMenuGroupItems = () => {\n    return itemsGroup.map((group, groupIdx) => (\n      <MenuGroup key={`${group.label}${groupIdx}`} label={group.label}>\n        {(group.items || []).map((item, itemIdx) => (\n          <MenuItem\n            key={`${group.label}-${groupIdx}-${itemIdx}}`}\n            url={item.url}\n            label={item.label}\n            target={item.target}\n            icon={item.icon}\n            active={item.active}\n            onClick={item.onClick}\n            className={styles.itemWrapper}\n          />\n        ))}\n      </MenuGroup>\n    ));\n  };\n\n  // Use this class name (exposed via render prop) to add context menu indicator to the click target of the visualization\n  const targetClassName = css({\n    cursor: 'context-menu',\n  });\n\n  if (linksCounter > 1) {\n    return (\n      <WithContextMenu renderMenuItems={renderMenuGroupItems}>\n        {({ openMenu }) => {\n          return children({ openMenu, targetClassName });\n        }}\n      </WithContextMenu>\n    );\n  } else {\n    const linkModel = links()[0];\n    return (\n      <a\n        href={linkModel.href}\n        onClick={linkModel.onClick}\n        target={linkModel.target}\n        title={linkModel.title}\n        style={{ ...style, overflow: 'hidden', display: 'flex' }}\n        data-testid={selectors.components.DataLinksContextMenu.singleLink}\n      >\n        {children({})}\n      </a>\n    );\n  }\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  itemWrapper: css({\n    fontSize: 12,\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Alert, AlertVariant } from '../Alert/Alert';\nimport { Icon } from '../Icon/Icon';\n\nexport interface InfoBoxProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n  children: React.ReactNode;\n  /** Title of the box */\n  title?: string | JSX.Element;\n  /** Url of the read more link */\n  url?: string;\n  /** Text of the read more link */\n  urlTitle?: string;\n  /** Indicates whether or not box should be rendered with Grafana branding background */\n  branded?: boolean;\n  /** Color variant of the box */\n  severity?: AlertVariant;\n  /** Call back to be performed when box is dismissed */\n  onDismiss?: () => void;\n}\n\n/** @deprecated use Alert with severity info */\nexport const InfoBox = React.memo(\n  React.forwardRef<HTMLDivElement, InfoBoxProps>(\n    ({ title, className, children, branded, url, urlTitle, onDismiss, severity = 'info', ...otherProps }, ref) => {\n      const styles = useStyles2(getStyles);\n\n      return (\n        // component is deprecated so no point fixing this\n        // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n        <Alert severity={severity} className={className} {...otherProps} ref={ref} title={title as string}>\n          <div>{children}</div>\n          {url && (\n            <a href={url} className={cx('external-link', styles.docsLink)} target=\"_blank\" rel=\"noreferrer\">\n              <Icon name=\"book\" /> {urlTitle || 'Read more'}\n            </a>\n          )}\n        </Alert>\n      );\n    }\n  )\n);\n\nInfoBox.displayName = 'InfoBox';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  docsLink: css({\n    display: 'inline-block',\n    marginTop: theme.spacing(2),\n  }),\n});\n","import { FeatureState } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { Badge, BadgeProps } from '../Badge/Badge';\n\nexport interface FeatureBadgeProps {\n  featureState: FeatureState;\n  tooltip?: string;\n}\n\nexport const FeatureBadge = ({ featureState, tooltip }: FeatureBadgeProps) => {\n  const display = getPanelStateBadgeDisplayModel(featureState);\n  return <Badge text={display.text} color={display.color} icon={display.icon} tooltip={tooltip} />;\n};\n\nfunction getPanelStateBadgeDisplayModel(featureState: FeatureState): BadgeProps {\n  switch (featureState) {\n    case FeatureState.alpha:\n      return {\n        text: 'Alpha',\n        icon: 'exclamation-triangle',\n        color: 'orange',\n      };\n\n    case FeatureState.beta:\n      return {\n        text: 'Beta',\n        icon: 'rocket',\n        color: 'blue',\n      };\n\n    case FeatureState.experimental:\n      return {\n        text: t('grafana-ui.feature-badge.experimental', 'Experimental'),\n        icon: 'exclamation-triangle',\n        color: 'orange',\n      };\n\n    case FeatureState.preview:\n      return {\n        text: t('grafana-ui.feature-badge.preview', 'Preview'),\n        icon: 'rocket',\n        color: 'blue',\n      };\n\n    case FeatureState.privatePreview:\n      return {\n        text: t('grafana-ui.feature-badge.private-preview', 'Private preview'),\n        icon: 'rocket',\n        color: 'blue',\n      };\n\n    case FeatureState.new:\n      return {\n        text: t('grafana-ui.feature-badge.new', 'New!'),\n        icon: 'rocket',\n        color: 'blue',\n      };\n  }\n}\n","import { css } from '@emotion/css';\nimport { memo, forwardRef } from 'react';\n\nimport { FeatureState, GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { FeatureBadge } from '../FeatureBadge/FeatureBadge';\n\nimport { InfoBox, InfoBoxProps } from './InfoBox';\n\nexport interface FeatureInfoBoxProps extends Omit<InfoBoxProps, 'title' | 'urlTitle'> {\n  title: string;\n  featureState?: FeatureState;\n}\n\n/** @deprecated use Alert with severity info */\nexport const FeatureInfoBox = memo(\n  forwardRef<HTMLDivElement, FeatureInfoBoxProps>(({ title, featureState, ...otherProps }, ref) => {\n    const styles = useStyles2(getFeatureInfoBoxStyles);\n\n    const titleEl = featureState ? (\n      <>\n        <div className={styles.badge}>\n          <FeatureBadge featureState={featureState} />\n        </div>\n        <h3>{title}</h3>\n      </>\n    ) : (\n      <h3>{title}</h3>\n    );\n    return <InfoBox branded title={titleEl} urlTitle=\"Read documentation\" ref={ref} {...otherProps} />;\n  })\n);\n\nFeatureInfoBox.displayName = 'FeatureInfoBox';\n\nconst getFeatureInfoBoxStyles = (theme: GrafanaTheme2) => {\n  return {\n    badge: css({\n      marginBottom: theme.spacing(1),\n    }),\n  };\n};\n","// Based on work https://github.com/mohsen1/json-formatter-js\n// License MIT, Copyright (c) 2015 Mohsen Azimi\n\n/*\n * Escapes `\"` characters from string\n */\nexport function formatString(str: string): string {\n  return str.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n}\n\n/*\n * Determines if a value is an object\n */\nexport function isObject(value: unknown): boolean {\n  const type = typeof value;\n  return !!value && type === 'object';\n}\n\n/*\n * Gets constructor name of an object.\n * From http://stackoverflow.com/a/332429\n *\n */\nexport function getObjectName(object: object): string {\n  if (object === undefined) {\n    return '';\n  }\n  if (object === null) {\n    return 'Object';\n  }\n  if (typeof object === 'object' && !object.constructor) {\n    return 'Object';\n  }\n\n  const funcNameRegex = /function ([^(]*)/;\n  const results = funcNameRegex.exec(object.constructor.toString());\n  if (results && results.length > 1) {\n    return results[1];\n  } else {\n    return '';\n  }\n}\n\n/*\n * Gets type of an object. Returns \"null\" for null objects\n */\nexport function getType(object: object): string {\n  if (object === null) {\n    return 'null';\n  }\n  return typeof object;\n}\n\n/*\n * Generates inline preview for a JavaScript object based on a value\n */\nexport function getValuePreview(object: object, value: string): string {\n  const type = getType(object);\n\n  if (type === 'null' || type === 'undefined') {\n    return type;\n  }\n\n  if (type === 'string') {\n    value = '\"' + formatString(value) + '\"';\n  }\n  if (type === 'function') {\n    // Remove content of the function\n    return (\n      object\n        .toString()\n        .replace(/[\\r\\n]/g, '')\n        .replace(/\\{.*\\}/, '') + '{…}'\n    );\n  }\n  return value;\n}\n\n/*\n * Generates inline preview for a JavaScript object\n */\nlet value = '';\nexport function getPreview(obj: object): string {\n  if (isObject(obj)) {\n    value = getObjectName(obj);\n    if (Array.isArray(obj)) {\n      value += '[' + obj.length + ']';\n    }\n  } else {\n    value = getValuePreview(obj, obj.toString());\n  }\n  return value;\n}\n\n/*\n * Generates a prefixed CSS class name\n */\nexport function cssClass(className: string): string {\n  return `json-formatter-${className}`;\n}\n\n/*\n * Creates a new DOM element with given type and class\n * TODO: move me to helpers\n */\nexport function createElement<T extends keyof HTMLElementTagNameMap>(\n  type: T,\n  className?: string,\n  content?: Element | string\n) {\n  const el = document.createElement(type);\n  if (className) {\n    el.classList.add(cssClass(className));\n  }\n  if (content !== undefined) {\n    if (content instanceof Node) {\n      el.appendChild(content);\n    } else {\n      el.appendChild(document.createTextNode(String(content)));\n    }\n  }\n  return el;\n}\n","// Based on work https://github.com/mohsen1/json-formatter-js\n// License MIT, Copyright (c) 2015 Mohsen Azimi\n\nimport { isNumber } from 'lodash';\n\nimport { isObject, getObjectName, getType, getValuePreview, cssClass, createElement } from './helpers';\n\nconst DATE_STRING_REGEX =\n  /(^\\d{1,4}[\\.|\\\\/|-]\\d{1,2}[\\.|\\\\/|-]\\d{1,4})(\\s*(?:0?[1-9]:[0-5]|1(?=[012])\\d:[0-5])\\d\\s*[ap]m)?$/;\nconst PARTIAL_DATE_REGEX = /\\d{2}:\\d{2}:\\d{2} GMT-\\d{4}/;\nconst JSON_DATE_REGEX = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/;\n\n// When toggling, don't animated removal or addition of more than a few items\nconst MAX_ANIMATED_TOGGLE_ITEMS = 10;\n\nconst requestAnimationFrame =\n  (typeof window !== 'undefined' && window.requestAnimationFrame) ||\n  ((cb: () => void) => {\n    cb();\n    return 0;\n  });\n\nexport interface JsonExplorerConfig {\n  animateOpen?: boolean;\n  animateClose?: boolean;\n  theme?: string;\n}\n\nconst _defaultConfig: JsonExplorerConfig = {\n  animateOpen: true,\n  animateClose: true,\n};\n\n/**\n * @class JsonExplorer\n *\n * JsonExplorer allows you to render JSON objects in HTML with a\n * **collapsible** navigation.\n */\nexport class JsonExplorer {\n  // Hold the open state after the toggler is used\n  private _isOpen: boolean | null = null;\n\n  // A reference to the element that we render to\n  private element: HTMLDivElement | null = null;\n\n  private skipChildren = false;\n\n  /**\n   * @param {object} json The JSON object you want to render. It has to be an\n   * object or array. Do NOT pass raw JSON string.\n   *\n   * @param {number} [open=1] his number indicates up to how many levels the\n   * rendered tree should expand. Set it to `0` to make the whole tree collapsed\n   * or set it to `Infinity` to expand the tree deeply\n   *\n   * @param {object} [config=defaultConfig] -\n   *  defaultConfig = {\n   *   hoverPreviewEnabled: false,\n   *   hoverPreviewArrayCount: 100,\n   *   hoverPreviewFieldCount: 5\n   * }\n   *\n   * Available configurations:\n   *  #####Hover Preview\n   * * `hoverPreviewEnabled`:  enable preview on hover\n   * * `hoverPreviewArrayCount`: number of array items to show in preview Any\n   *    array larger than this number will be shown as `Array[XXX]` where `XXX`\n   *    is length of the array.\n   * * `hoverPreviewFieldCount`: number of object properties to show for object\n   *   preview. Any object with more properties that thin number will be\n   *   truncated.\n   *\n   * @param {string} [key=undefined] The key that this object in its parent\n   * context\n   */\n  constructor(\n    public json: any,\n    private open = 1,\n    private config: JsonExplorerConfig = _defaultConfig,\n    private key?: string\n  ) {}\n\n  /*\n   * is formatter open?\n   */\n  private get isOpen(): boolean {\n    if (this._isOpen !== null) {\n      return this._isOpen;\n    } else {\n      return this.open > 0;\n    }\n  }\n\n  /*\n   * set open state (from toggler)\n   */\n  private set isOpen(value: boolean) {\n    this._isOpen = value;\n  }\n\n  /*\n   * is this a date string?\n   */\n  private get isDate(): boolean {\n    return (\n      this.type === 'string' &&\n      (DATE_STRING_REGEX.test(this.json) || JSON_DATE_REGEX.test(this.json) || PARTIAL_DATE_REGEX.test(this.json))\n    );\n  }\n\n  /*\n   * is this a URL string?\n   */\n  private get isUrl(): boolean {\n    return this.type === 'string' && this.json.indexOf('http') === 0;\n  }\n\n  /*\n   * is this an array?\n   */\n  private get isArray(): boolean {\n    return Array.isArray(this.json);\n  }\n\n  /*\n   * is this an object?\n   * Note: In this context arrays are object as well\n   */\n  private get isObject(): boolean {\n    return isObject(this.json);\n  }\n\n  /*\n   * is this an empty object with no properties?\n   */\n  private get isEmptyObject(): boolean {\n    return !this.keys.length && !this.isArray;\n  }\n\n  /*\n   * is this an empty object or array?\n   */\n  private get isEmpty(): boolean {\n    return this.isEmptyObject || (this.keys && !this.keys.length && this.isArray);\n  }\n\n  /*\n   * did we receive a key argument?\n   * This means that the formatter was called as a sub formatter of a parent formatter\n   */\n  private get hasKey(): boolean {\n    return typeof this.key !== 'undefined';\n  }\n\n  /*\n   * if this is an object, get constructor function name\n   */\n  private get constructorName(): string {\n    return getObjectName(this.json);\n  }\n\n  /*\n   * get type of this value\n   * Possible values: all JavaScript primitive types plus \"array\" and \"null\"\n   */\n  private get type(): string {\n    return getType(this.json);\n  }\n\n  /*\n   * get object keys\n   * If there is an empty key we pad it wit quotes to make it visible\n   */\n  private get keys(): string[] {\n    if (this.isObject) {\n      return Object.keys(this.json).map((key) => (key ? key : '\"\"'));\n    } else {\n      return [];\n    }\n  }\n\n  /**\n   * Toggles `isOpen` state\n   *\n   */\n  toggleOpen() {\n    this.isOpen = !this.isOpen;\n\n    if (this.element) {\n      if (this.isOpen) {\n        this.appendChildren(this.config.animateOpen);\n      } else {\n        this.removeChildren(this.config.animateClose);\n      }\n      this.element.classList.toggle(cssClass('open'));\n    }\n  }\n\n  /**\n   * Open all children up to a certain depth.\n   * Allows actions such as expand all/collapse all\n   *\n   */\n  openAtDepth(depth = 1) {\n    if (depth < 0) {\n      return;\n    }\n\n    this.open = depth;\n    this.isOpen = depth !== 0;\n\n    if (this.element) {\n      this.removeChildren(false);\n\n      if (depth === 0) {\n        this.element.classList.remove(cssClass('open'));\n      } else {\n        this.appendChildren(this.config.animateOpen);\n        this.element.classList.add(cssClass('open'));\n      }\n    }\n  }\n\n  isNumberArray() {\n    return this.json.length > 0 && this.json.length < 4 && (isNumber(this.json[0]) || isNumber(this.json[1]));\n  }\n\n  renderArray() {\n    const arrayWrapperSpan = createElement('span');\n    arrayWrapperSpan.appendChild(createElement('span', 'bracket', '['));\n\n    // some pretty handling of number arrays\n    if (this.isNumberArray()) {\n      this.json.forEach((val: any, index: number) => {\n        if (index > 0) {\n          arrayWrapperSpan.appendChild(createElement('span', 'array-comma', ','));\n        }\n        arrayWrapperSpan.appendChild(createElement('span', 'number', val));\n      });\n      this.skipChildren = true;\n    } else {\n      arrayWrapperSpan.appendChild(createElement('span', 'number', this.json.length));\n    }\n\n    arrayWrapperSpan.appendChild(createElement('span', 'bracket', ']'));\n    return arrayWrapperSpan;\n  }\n\n  /**\n   * Renders an HTML element and installs event listeners\n   *\n   * @returns {HTMLDivElement}\n   */\n  render(skipRoot = false): HTMLDivElement {\n    // construct the root element and assign it to this.element\n    this.element = createElement('div', 'row');\n\n    // construct the toggler link\n    const togglerLink = createElement('a', 'toggler-link');\n    const togglerIcon = createElement('span', 'toggler');\n\n    // if this is an object we need a wrapper span (toggler)\n    if (this.isObject) {\n      togglerLink.appendChild(togglerIcon);\n    }\n\n    // if this is child of a parent formatter we need to append the key\n    if (this.hasKey) {\n      togglerLink.appendChild(createElement('span', 'key', `${this.key}:`));\n    }\n\n    // Value for objects and arrays\n    if (this.isObject) {\n      // construct the value holder element\n      const value = createElement('span', 'value');\n\n      // we need a wrapper span for objects\n      const objectWrapperSpan = createElement('span');\n\n      // get constructor name and append it to wrapper span\n      const constructorName = createElement('span', 'constructor-name', this.constructorName);\n      objectWrapperSpan.appendChild(constructorName);\n\n      // if it's an array append the array specific elements like brackets and length\n      if (this.isArray) {\n        const arrayWrapperSpan = this.renderArray();\n        objectWrapperSpan.appendChild(arrayWrapperSpan);\n      }\n\n      // append object wrapper span to toggler link\n      value.appendChild(objectWrapperSpan);\n      togglerLink.appendChild(value);\n      // Primitive values\n    } else {\n      // make a value holder element\n      const value = this.isUrl ? createElement('a') : createElement('span');\n\n      // add type and other type related CSS classes\n      value.classList.add(cssClass(this.type));\n      if (this.isDate) {\n        value.classList.add(cssClass('date'));\n      }\n      if (this.isUrl) {\n        value.classList.add(cssClass('url'));\n        value.setAttribute('href', this.json);\n      }\n\n      // Append value content to value element\n      const valuePreview = getValuePreview(this.json, this.json);\n      value.appendChild(document.createTextNode(valuePreview));\n\n      // append the value element to toggler link\n      togglerLink.appendChild(value);\n    }\n\n    // construct a children element\n    const children = createElement('div', 'children');\n\n    // set CSS classes for children\n    if (this.isObject) {\n      children.classList.add(cssClass('object'));\n    }\n    if (this.isArray) {\n      children.classList.add(cssClass('array'));\n    }\n    if (this.isEmpty) {\n      children.classList.add(cssClass('empty'));\n    }\n\n    // set CSS classes for root element\n    if (this.config && this.config.theme) {\n      this.element.classList.add(cssClass(this.config.theme));\n    }\n    if (this.isOpen) {\n      this.element.classList.add(cssClass('open'));\n    }\n\n    // append toggler and children elements to root element\n    if (!skipRoot) {\n      this.element.appendChild(togglerLink);\n    }\n\n    if (!this.skipChildren) {\n      this.element.appendChild(children);\n    } else {\n      // remove togglerIcon\n      togglerLink.removeChild(togglerIcon);\n    }\n\n    // if formatter is set to be open call appendChildren\n    if (this.isObject && this.isOpen) {\n      this.appendChildren();\n    }\n\n    // add event listener for toggling\n    if (this.isObject) {\n      togglerLink.addEventListener('click', this.toggleOpen.bind(this));\n    }\n\n    return this.element;\n  }\n\n  /**\n   * Appends all the children to children element\n   * Animated option is used when user triggers this via a click\n   */\n  appendChildren(animated = false) {\n    const children = this.element && this.element.querySelector(`div.${cssClass('children')}`);\n\n    if (!children || this.isEmpty) {\n      return;\n    }\n\n    if (animated) {\n      let index = 0;\n      const addAChild = () => {\n        const key = this.keys[index];\n        const formatter = new JsonExplorer(this.json[key], this.open - 1, this.config, key);\n        children.appendChild(formatter.render());\n\n        index += 1;\n\n        if (index < this.keys.length) {\n          if (index > MAX_ANIMATED_TOGGLE_ITEMS) {\n            addAChild();\n          } else {\n            requestAnimationFrame(addAChild);\n          }\n        }\n      };\n\n      requestAnimationFrame(addAChild);\n    } else {\n      this.keys.forEach((key) => {\n        const formatter = new JsonExplorer(this.json[key], this.open - 1, this.config, key);\n        children.appendChild(formatter.render());\n      });\n    }\n  }\n\n  /**\n   * Removes all the children from children element\n   * Animated option is used when user triggers this via a click\n   */\n  removeChildren(animated = false) {\n    const childrenElement = this.element && this.element.querySelector<HTMLDivElement>(`div.${cssClass('children')}`);\n\n    if (animated) {\n      let childrenRemoved = 0;\n      const removeAChild = () => {\n        if (childrenElement && childrenElement.children.length) {\n          childrenElement.removeChild(childrenElement.children[0]);\n          childrenRemoved += 1;\n          if (childrenRemoved > MAX_ANIMATED_TOGGLE_ITEMS) {\n            removeAChild();\n          } else {\n            requestAnimationFrame(removeAChild);\n          }\n        }\n      };\n      requestAnimationFrame(removeAChild);\n    } else {\n      if (childrenElement) {\n        childrenElement.innerHTML = '';\n      }\n    }\n  }\n}\n","import { PureComponent, createRef } from 'react';\n\nimport { JsonExplorer, JsonExplorerConfig } from './json_explorer/json_explorer'; // We have made some monkey-patching of json-formatter-js so we can't switch right now\n\ninterface Props {\n  className?: string;\n  json: {};\n  config?: JsonExplorerConfig;\n  open?: number;\n  onDidRender?: (formattedJson: {}) => void;\n}\n\nexport class JSONFormatter extends PureComponent<Props> {\n  private wrapperRef = createRef<HTMLDivElement>();\n\n  static defaultProps = {\n    open: 3,\n    config: {\n      animateOpen: true,\n    },\n  };\n\n  componentDidMount() {\n    this.renderJson();\n  }\n\n  componentDidUpdate() {\n    this.renderJson();\n  }\n\n  renderJson = () => {\n    const { json, config, open, onDidRender } = this.props;\n    const wrapperEl = this.wrapperRef.current;\n    const formatter = new JsonExplorer(json, open, config);\n    // @ts-ignore\n    const hasChildren: boolean = wrapperEl.hasChildNodes();\n    if (hasChildren) {\n      // @ts-ignore\n      wrapperEl.replaceChild(formatter.render(), wrapperEl.lastChild);\n    } else {\n      // @ts-ignore\n      wrapperEl.appendChild(formatter.render());\n    }\n\n    if (onDidRender) {\n      onDidRender(formatter.json);\n    }\n  };\n\n  render() {\n    const { className } = this.props;\n    return <div className={className} ref={this.wrapperRef} />;\n  }\n}\n","import { PureComponent, ReactNode, ComponentType, ErrorInfo } from 'react';\n\nimport { faro } from '@grafana/faro-web-sdk';\n\nimport { Alert } from '../Alert/Alert';\n\nimport { ErrorWithStack } from './ErrorWithStack';\n\nexport type { ErrorInfo };\n\nexport interface ErrorBoundaryApi {\n  error: Error | null;\n  errorInfo: ErrorInfo | null;\n}\n\ninterface Props {\n  children: (r: ErrorBoundaryApi) => ReactNode;\n  /** Will re-render children after error if recover values changes */\n  dependencies?: unknown[];\n  /** Callback called on error */\n  onError?: (error: Error) => void;\n  /** Callback error state is cleared due to recover props change */\n  onRecover?: () => void;\n  /** Default error logger - Faro by default */\n  errorLogger?: (error: Error) => void;\n}\n\ninterface State {\n  error: Error | null;\n  errorInfo: ErrorInfo | null;\n}\n\nexport class ErrorBoundary extends PureComponent<Props, State> {\n  readonly state: State = {\n    error: null,\n    errorInfo: null,\n  };\n\n  componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n    const logger = this.props.errorLogger ?? faro?.api?.pushError;\n\n    if (logger) {\n      logger(error);\n    }\n\n    this.setState({ error, errorInfo });\n\n    if (this.props.onError) {\n      this.props.onError(error);\n    }\n  }\n\n  componentDidUpdate(prevProps: Props) {\n    const { dependencies, onRecover } = this.props;\n\n    if (this.state.error) {\n      if (dependencies && prevProps.dependencies) {\n        for (let i = 0; i < dependencies.length; i++) {\n          if (dependencies[i] !== prevProps.dependencies[i]) {\n            this.setState({ error: null, errorInfo: null });\n            if (onRecover) {\n              onRecover();\n            }\n            break;\n          }\n        }\n      }\n    }\n  }\n\n  render() {\n    const { children } = this.props;\n    const { error, errorInfo } = this.state;\n\n    return children({\n      error,\n      errorInfo,\n    });\n  }\n}\n\n/**\n * Props for the ErrorBoundaryAlert component\n *\n * @public\n */\nexport interface ErrorBoundaryAlertProps {\n  /** Title for the error boundary alert */\n  title?: string;\n\n  /** Component to be wrapped with an error boundary */\n  children: ReactNode;\n\n  /** 'page' will render full page error with stacktrace. 'alertbox' will render an <Alert />. Default 'alertbox' */\n  style?: 'page' | 'alertbox';\n\n  /** Will re-render children after error if recover values changes */\n  dependencies?: unknown[];\n  /** Default error logger - Faro by default */\n  errorLogger?: (error: Error) => void;\n}\n\nexport class ErrorBoundaryAlert extends PureComponent<ErrorBoundaryAlertProps> {\n  static defaultProps: Partial<ErrorBoundaryAlertProps> = {\n    title: 'An unexpected error happened',\n    style: 'alertbox',\n  };\n\n  render() {\n    const { title, children, style, dependencies, errorLogger } = this.props;\n\n    return (\n      <ErrorBoundary dependencies={dependencies} errorLogger={errorLogger}>\n        {({ error, errorInfo }) => {\n          if (!errorInfo) {\n            return children;\n          }\n\n          if (style === 'alertbox') {\n            return (\n              <Alert title={title || ''}>\n                <details style={{ whiteSpace: 'pre-wrap' }}>\n                  {error && error.toString()}\n                  <br />\n                  {errorInfo.componentStack}\n                </details>\n              </Alert>\n            );\n          }\n\n          return <ErrorWithStack title={title || ''} error={error} errorInfo={errorInfo} />;\n        }}\n      </ErrorBoundary>\n    );\n  }\n}\n\n/**\n * HOC for wrapping a component in an error boundary.\n *\n * @param Component - the react component to wrap in error boundary\n * @param errorBoundaryProps - error boundary options\n *\n * @public\n */\nexport function withErrorBoundary<P extends {} = {}>(\n  Component: ComponentType<P>,\n  errorBoundaryProps: Omit<ErrorBoundaryAlertProps, 'children'> = {}\n): ComponentType<P> {\n  const comp = (props: P) => (\n    <ErrorBoundaryAlert {...errorBoundaryProps}>\n      <Component {...props} />\n    </ErrorBoundaryAlert>\n  );\n  comp.displayName = 'WithErrorBoundary';\n\n  return comp;\n}\n","import * as React from 'react';\n\nimport { t } from '@grafana/i18n';\n\nimport { InlineField } from '../../components/Forms/InlineField';\nimport { FormField } from '../FormField/FormField';\nimport { SecretFormField } from '../SecretFormField/SecretFormField';\n\nimport { HttpSettingsProps } from './types';\n\nexport const BasicAuthSettings = ({ dataSourceConfig, onChange }: HttpSettingsProps) => {\n  const password = dataSourceConfig.secureJsonData ? dataSourceConfig.secureJsonData.basicAuthPassword : '';\n\n  const onPasswordReset = () => {\n    onChange({\n      ...dataSourceConfig,\n      secureJsonData: {\n        ...dataSourceConfig.secureJsonData,\n        basicAuthPassword: '',\n      },\n      secureJsonFields: {\n        ...dataSourceConfig.secureJsonFields,\n        basicAuthPassword: false,\n      },\n    });\n  };\n\n  const onPasswordChange = (event: React.SyntheticEvent<HTMLInputElement>) => {\n    onChange({\n      ...dataSourceConfig,\n      secureJsonData: {\n        ...dataSourceConfig.secureJsonData,\n        basicAuthPassword: event.currentTarget.value,\n      },\n    });\n  };\n\n  return (\n    <>\n      <InlineField disabled={dataSourceConfig.readOnly}>\n        <FormField\n          label={t('grafana-ui.data-source-basic-auth-settings.user-label', 'User')}\n          labelWidth={10}\n          inputWidth={18}\n          placeholder={t('grafana-ui.data-source-basic-auth-settings.user-placeholder', 'user')}\n          value={dataSourceConfig.basicAuthUser}\n          onChange={(event) => onChange({ ...dataSourceConfig, basicAuthUser: event.currentTarget.value })}\n        />\n      </InlineField>\n      <InlineField disabled={dataSourceConfig.readOnly}>\n        <SecretFormField\n          isConfigured={!!(dataSourceConfig.secureJsonFields && dataSourceConfig.secureJsonFields.basicAuthPassword)}\n          value={password || ''}\n          inputWidth={18}\n          labelWidth={10}\n          onReset={onPasswordReset}\n          onChange={onPasswordChange}\n        />\n      </InlineField>\n    </>\n  );\n};\n","import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { PureComponent } from 'react';\n\nimport { DataSourceSettings } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Button } from '../Button/Button';\nimport { FormField } from '../FormField/FormField';\nimport { Icon } from '../Icon/Icon';\nimport { SecretFormField } from '../SecretFormField/SecretFormField';\n\nexport interface CustomHeader {\n  id: string;\n  name: string;\n  value: string;\n  configured: boolean;\n}\n\nexport type CustomHeaders = CustomHeader[];\n\nexport interface Props {\n  dataSourceConfig: DataSourceSettings<any, any>;\n  onChange: (config: DataSourceSettings) => void;\n}\n\nexport interface State {\n  headers: CustomHeaders;\n}\n\ninterface CustomHeaderRowProps {\n  header: CustomHeader;\n  onReset: (id: string) => void;\n  onRemove: (id: string) => void;\n  onChange: (value: CustomHeader) => void;\n  onBlur: () => void;\n}\n\nconst getCustomHeaderRowStyles = () => ({\n  layout: css({\n    display: 'flex',\n    alignItems: 'center',\n    marginBottom: '4px',\n    '> *': {\n      marginLeft: '4px',\n      marginBottom: 0,\n      height: '100%',\n      '&:first-child, &:last-child': {\n        marginLeft: 0,\n      },\n    },\n  }),\n});\n\nconst CustomHeaderRow = ({ header, onBlur, onChange, onRemove, onReset }: CustomHeaderRowProps) => {\n  const styles = useStyles2(getCustomHeaderRowStyles);\n\n  return (\n    <div className={styles.layout}>\n      <FormField\n        label={t('grafana-ui.data-source-settings.custom-headers-header', 'Header')}\n        name=\"name\"\n        // eslint-disable-next-line @grafana/i18n/no-untranslated-strings\n        placeholder=\"X-Custom-Header\"\n        labelWidth={5}\n        value={header.name || ''}\n        onChange={(e) => onChange({ ...header, name: e.target.value })}\n        onBlur={onBlur}\n      />\n      <SecretFormField\n        label={t('grafana-ui.data-source-settings.custom-headers-header-value', 'Value')}\n        aria-label={t('grafana-ui.data-source-settings.custom-headers-header-value', 'Value')}\n        name=\"value\"\n        isConfigured={header.configured}\n        value={header.value}\n        labelWidth={5}\n        inputWidth={header.configured ? 11 : 12}\n        placeholder={t('grafana-ui.data-source-settings.custom-headers-header-placeholder', 'Header Value')}\n        onReset={() => onReset(header.id)}\n        onChange={(e) => onChange({ ...header, value: e.target.value })}\n        onBlur={onBlur}\n      />\n      <Button\n        type=\"button\"\n        aria-label={t('grafana-ui.data-source-settings.custom-headers-header-remove', 'Remove header')}\n        variant=\"secondary\"\n        size=\"xs\"\n        onClick={(_e) => onRemove(header.id)}\n      >\n        <Icon name=\"trash-alt\" />\n      </Button>\n    </div>\n  );\n};\n\nCustomHeaderRow.displayName = 'CustomHeaderRow';\n\nexport class CustomHeadersSettings extends PureComponent<Props, State> {\n  state: State = {\n    headers: [],\n  };\n\n  constructor(props: Props) {\n    super(props);\n    const { jsonData, secureJsonData, secureJsonFields } = this.props.dataSourceConfig;\n    this.state = {\n      headers: Object.keys(jsonData)\n        .sort()\n        .filter((key) => key.startsWith('httpHeaderName'))\n        .map((key, index) => {\n          return {\n            id: uniqueId(),\n            name: jsonData[key],\n            value: secureJsonData !== undefined ? secureJsonData[key] : '',\n            configured: (secureJsonFields && secureJsonFields[`httpHeaderValue${index + 1}`]) || false,\n          };\n        }),\n    };\n  }\n\n  updateSettings = () => {\n    const { headers } = this.state;\n\n    // we remove every httpHeaderName* field\n    const newJsonData = Object.fromEntries(\n      Object.entries(this.props.dataSourceConfig.jsonData).filter(([key, val]) => !key.startsWith('httpHeaderName'))\n    );\n\n    // we remove every httpHeaderValue* field\n    const newSecureJsonData = Object.fromEntries(\n      Object.entries(this.props.dataSourceConfig.secureJsonData || {}).filter(\n        ([key, val]) => !key.startsWith('httpHeaderValue')\n      )\n    );\n\n    // then we add the current httpHeader-fields\n    for (const [index, header] of headers.entries()) {\n      newJsonData[`httpHeaderName${index + 1}`] = header.name;\n      if (!header.configured) {\n        newSecureJsonData[`httpHeaderValue${index + 1}`] = header.value;\n      }\n    }\n\n    this.props.onChange({\n      ...this.props.dataSourceConfig,\n      jsonData: newJsonData,\n      secureJsonData: newSecureJsonData,\n    });\n  };\n\n  onHeaderAdd = () => {\n    this.setState((prevState) => {\n      return { headers: [...prevState.headers, { id: uniqueId(), name: '', value: '', configured: false }] };\n    });\n  };\n\n  onHeaderChange = (headerIndex: number, value: CustomHeader) => {\n    this.setState(({ headers }) => {\n      return {\n        headers: headers.map((item, index) => {\n          if (headerIndex !== index) {\n            return item;\n          }\n          return { ...value };\n        }),\n      };\n    });\n  };\n\n  onHeaderReset = (headerId: string) => {\n    this.setState(({ headers }) => {\n      return {\n        headers: headers.map((h, i) => {\n          if (h.id !== headerId) {\n            return h;\n          }\n          return {\n            ...h,\n            value: '',\n            configured: false,\n          };\n        }),\n      };\n    });\n  };\n\n  onHeaderRemove = (headerId: string) => {\n    this.setState(\n      ({ headers }) => ({\n        headers: headers.filter((h) => h.id !== headerId),\n      }),\n      this.updateSettings\n    );\n  };\n\n  render() {\n    const { headers } = this.state;\n    const { dataSourceConfig } = this.props;\n\n    return (\n      <div className={'gf-form-group'}>\n        <div className=\"gf-form\">\n          <h6>\n            <Trans i18nKey=\"grafana-ui.data-source-settings.custom-headers-title\">Custom HTTP Headers</Trans>\n          </h6>\n        </div>\n        <div>\n          {headers.map((header, i) => (\n            <CustomHeaderRow\n              key={header.id}\n              header={header}\n              onChange={(h) => {\n                this.onHeaderChange(i, h);\n              }}\n              onBlur={this.updateSettings}\n              onRemove={this.onHeaderRemove}\n              onReset={this.onHeaderReset}\n            />\n          ))}\n        </div>\n        {!dataSourceConfig.readOnly && (\n          <div className=\"gf-form\">\n            <Button\n              variant=\"secondary\"\n              icon=\"plus\"\n              type=\"button\"\n              onClick={(e) => {\n                this.onHeaderAdd();\n              }}\n            >\n              <Trans i18nKey=\"grafana-ui.data-source-settings.custom-headers-add\">Add header</Trans>\n            </Button>\n          </div>\n        )}\n      </div>\n    );\n  }\n}\n\nexport default CustomHeadersSettings;\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { InlineField } from '../Forms/InlineField';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { InlineSwitch } from '../Switch/Switch';\n\nimport { HttpSettingsBaseProps } from './types';\n\nconst LABEL_WIDTH = 26;\n\nexport const HttpProxySettings = ({\n  dataSourceConfig,\n  onChange,\n  showForwardOAuthIdentityOption = true,\n}: HttpSettingsBaseProps) => {\n  const gridLayout = useStyles2(getGridLayout);\n  return (\n    <div className={gridLayout}>\n      <Stack direction=\"row\" gap={0.5}>\n        <InlineField\n          label={t('grafana-ui.data-source-http-proxy-settings.ts-client-auth-label', 'TLS Client Auth')}\n          labelWidth={LABEL_WIDTH}\n          disabled={dataSourceConfig.readOnly}\n        >\n          <InlineSwitch\n            id=\"http-settings-tls-client-auth\"\n            value={dataSourceConfig.jsonData.tlsAuth || false}\n            onChange={(event) => onChange({ ...dataSourceConfig.jsonData, tlsAuth: event!.currentTarget.checked })}\n          />\n        </InlineField>\n        <InlineField\n          label={t('grafana-ui.data-source-http-proxy-settings.with-ca-cert-label', 'With CA Cert')}\n          tooltip={t(\n            'grafana-ui.data-source-http-proxy-settings.with-ca-cert-tooltip',\n            'Needed for verifying self-signed TLS Certs'\n          )}\n          labelWidth={LABEL_WIDTH}\n          disabled={dataSourceConfig.readOnly}\n        >\n          <InlineSwitch\n            id=\"http-settings-ca-cert\"\n            value={dataSourceConfig.jsonData.tlsAuthWithCACert || false}\n            onChange={(event) =>\n              onChange({ ...dataSourceConfig.jsonData, tlsAuthWithCACert: event!.currentTarget.checked })\n            }\n          />\n        </InlineField>\n      </Stack>\n      <InlineField\n        label={t('grafana-ui.data-source-http-proxy-settings.skip-tls-verify-label', 'Skip TLS Verify')}\n        labelWidth={LABEL_WIDTH}\n        disabled={dataSourceConfig.readOnly}\n      >\n        <InlineSwitch\n          id=\"http-settings-skip-tls-verify\"\n          value={dataSourceConfig.jsonData.tlsSkipVerify || false}\n          onChange={(event) => onChange({ ...dataSourceConfig.jsonData, tlsSkipVerify: event!.currentTarget.checked })}\n        />\n      </InlineField>\n      {showForwardOAuthIdentityOption && (\n        <InlineField\n          label={t('grafana-ui.data-source-http-proxy-settings.oauth-identity-label', 'Forward OAuth Identity')}\n          tooltip={t(\n            'grafana-ui.data-source-http-proxy-settings.oauth-identity-tooltip',\n            \"Forward the user's upstream OAuth identity to the data source (Their access token gets passed along).\"\n          )}\n          labelWidth={LABEL_WIDTH}\n          disabled={dataSourceConfig.readOnly}\n        >\n          <InlineSwitch\n            id=\"http-settings-forward-oauth\"\n            value={dataSourceConfig.jsonData.oauthPassThru || false}\n            onChange={(event) =>\n              onChange({ ...dataSourceConfig.jsonData, oauthPassThru: event!.currentTarget.checked })\n            }\n          />\n        </InlineField>\n      )}\n    </div>\n  );\n};\n\nconst getGridLayout = (theme: GrafanaTheme2) =>\n  css({\n    display: 'grid',\n    gridTemplateColumns: 'auto',\n    gap: 0, // Inline field has a margin\n  });\n","import { DataSourceJsonData, DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { InlineSwitch } from '../../components/Switch/Switch';\nimport { InlineField } from '../Forms/InlineField';\n\nexport interface Props<T extends DataSourceJsonData>\n  extends Pick<DataSourcePluginOptionsEditorProps<T>, 'options' | 'onOptionsChange'> {}\n\nexport interface SecureSocksProxyConfig extends DataSourceJsonData {\n  enableSecureSocksProxy?: boolean;\n}\n\nexport function SecureSocksProxySettings<T extends SecureSocksProxyConfig>({\n  options,\n  onOptionsChange,\n}: Props<T>): JSX.Element {\n  return (\n    <div>\n      <h3 className=\"page-heading\">\n        <Trans i18nKey=\"grafana-ui.data-source-settings.secure-socks-heading\">Secure Socks Proxy</Trans>\n      </h3>\n      <div className=\"gf-form-group\">\n        <div className=\"gf-form-inline\">\n          <div className=\"gf-form\">\n            <InlineField\n              labelWidth={26}\n              label={t('grafana-ui.data-source-settings.secure-socks-label', 'Enabled')}\n              tooltip={t(\n                'grafana-ui.data-source-settings.secure-socks-tooltip',\n                'Connect to this datasource via the secure socks proxy.'\n              )}\n            >\n              <InlineSwitch\n                value={options.jsonData.enableSecureSocksProxy ?? false}\n                onChange={(event) =>\n                  onOptionsChange({\n                    ...options,\n                    jsonData: { ...options.jsonData, enableSecureSocksProxy: event!.currentTarget.checked },\n                  })\n                }\n              />\n            </InlineField>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n","import { css, cx } from '@emotion/css';\nimport { HTMLProps, ReactNode } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport interface Props extends Omit<HTMLProps<HTMLDivElement>, 'css'> {\n  children: ReactNode | ReactNode[];\n}\n\nexport const InlineFieldRow = ({ children, className, ...htmlProps }: Props) => {\n  const styles = useStyles2(getStyles);\n  return (\n    <div className={cx(styles.container, className)} {...htmlProps}>\n      {children}\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      label: 'InlineFieldRow',\n      display: 'flex',\n      flexDirection: 'row',\n      flexWrap: 'wrap',\n      alignContent: 'flex-start',\n      rowGap: theme.spacing(0.5),\n    }),\n  };\n};\n","import { ChangeEvent, MouseEvent } from 'react';\n\nimport { Trans } from '@grafana/i18n';\n\nimport { Button } from '../Button/Button';\nimport { InlineField } from '../Forms/InlineField';\nimport { InlineFieldRow } from '../Forms/InlineFieldRow';\nimport { Input } from '../Input/Input';\nimport { TextArea } from '../TextArea/TextArea';\n\ninterface Props {\n  label: string;\n  hasCert: boolean;\n  placeholder: string;\n  useGrow?: boolean;\n\n  onChange: (event: ChangeEvent<HTMLTextAreaElement>) => void;\n  onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport const CertificationKey = ({ hasCert, label, onChange, onClick, placeholder, useGrow }: Props) => {\n  return (\n    <InlineFieldRow>\n      <InlineField label={label} labelWidth={14} disabled={hasCert} grow={useGrow}>\n        {hasCert ? (\n          <Input type=\"text\" value=\"configured\" width={24} />\n        ) : (\n          <TextArea rows={7} onChange={onChange} placeholder={placeholder} required />\n        )}\n      </InlineField>\n      {hasCert && (\n        <Button variant=\"secondary\" onClick={onClick} style={{ marginLeft: 4 }}>\n          <Trans i18nKey=\"grafana-ui.data-source-settings.cert-key-reset\">Reset</Trans>\n        </Button>\n      )}\n    </InlineFieldRow>\n  );\n};\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { KeyValue } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { FormField } from '../FormField/FormField';\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\nimport { CertificationKey } from './CertificationKey';\nimport { HttpSettingsBaseProps } from './types';\n\nexport const TLSAuthSettings = ({ dataSourceConfig, onChange }: HttpSettingsBaseProps) => {\n  const hasTLSCACert = dataSourceConfig.secureJsonFields && dataSourceConfig.secureJsonFields.tlsCACert;\n  const hasTLSClientCert = dataSourceConfig.secureJsonFields && dataSourceConfig.secureJsonFields.tlsClientCert;\n  const hasTLSClientKey = dataSourceConfig.secureJsonFields && dataSourceConfig.secureJsonFields.tlsClientKey;\n  const hasServerName = dataSourceConfig.jsonData && dataSourceConfig.jsonData.serverName;\n\n  const onResetClickFactory = (field: string) => (event: React.MouseEvent<HTMLButtonElement>) => {\n    event.preventDefault();\n    const newSecureJsonFields: KeyValue<boolean> = { ...dataSourceConfig.secureJsonFields };\n    newSecureJsonFields[field] = false;\n    onChange({\n      ...dataSourceConfig,\n      secureJsonFields: newSecureJsonFields,\n    });\n  };\n\n  const onCertificateChangeFactory = (field: string) => (event: React.SyntheticEvent<HTMLTextAreaElement>) => {\n    const newSecureJsonData = { ...dataSourceConfig.secureJsonData };\n    newSecureJsonData[field] = event.currentTarget.value;\n\n    onChange({\n      ...dataSourceConfig,\n      secureJsonData: newSecureJsonData,\n    });\n  };\n\n  const onServerNameLabelChange = (event: React.SyntheticEvent<HTMLInputElement>) => {\n    const newJsonData = {\n      ...dataSourceConfig.jsonData,\n      serverName: event.currentTarget.value,\n    };\n\n    onChange({\n      ...dataSourceConfig,\n      jsonData: newJsonData,\n    });\n  };\n\n  const certificateBeginsWith = '-----BEGIN CERTIFICATE-----';\n  const privateKeyBeginsWith = '-----BEGIN RSA PRIVATE KEY-----';\n\n  return (\n    <div className=\"gf-form-group\">\n      <div\n        className={cx(\n          'gf-form',\n          css({\n            alignItems: 'baseline',\n          })\n        )}\n      >\n        <h6>\n          <Trans i18nKey=\"grafana-ui.data-source-settings.tls-heading\">TLS/SSL Auth Details</Trans>\n        </h6>\n        <Tooltip\n          placement=\"right-end\"\n          content={t(\n            'grafana-ui.data-source-settings.tls-tooltip',\n            'TLS/SSL Certs are encrypted and stored in the Grafana database.'\n          )}\n          theme=\"info\"\n        >\n          <Icon name=\"info-circle\" size=\"xs\" style={{ marginLeft: '10px' }} />\n        </Tooltip>\n      </div>\n      <div>\n        {dataSourceConfig.jsonData.tlsAuthWithCACert && (\n          <CertificationKey\n            hasCert={!!hasTLSCACert}\n            onChange={onCertificateChangeFactory('tlsCACert')}\n            placeholder={t(\n              'grafana-ui.data-source-settings.tls-certification-placeholder',\n              'Begins with {{certificateBeginsWith}}',\n              { certificateBeginsWith }\n            )}\n            label={t('grafana-ui.data-source-settings.tls-certification-label', 'CA Cert')}\n            onClick={onResetClickFactory('tlsCACert')}\n          />\n        )}\n\n        {dataSourceConfig.jsonData.tlsAuth && (\n          <>\n            <div className=\"gf-form\">\n              <FormField\n                label={t('grafana-ui.data-source-settings.tls-server-name-label', 'ServerName')}\n                labelWidth={7}\n                inputWidth={30}\n                // eslint-disable-next-line @grafana/i18n/no-untranslated-strings\n                placeholder=\"domain.example.com\"\n                value={hasServerName && dataSourceConfig.jsonData.serverName}\n                onChange={onServerNameLabelChange}\n              />\n            </div>\n            <CertificationKey\n              hasCert={!!hasTLSClientCert}\n              label={t('grafana-ui.data-source-settings.tls-client-certification-label', 'Client Cert')}\n              onChange={onCertificateChangeFactory('tlsClientCert')}\n              placeholder={t(\n                'grafana-ui.data-source-settings.tls-certification-placeholder',\n                'Begins with {{certificateBeginsWith}}',\n                { certificateBeginsWith }\n              )}\n              onClick={onResetClickFactory('tlsClientCert')}\n            />\n\n            <CertificationKey\n              hasCert={!!hasTLSClientKey}\n              label={t('grafana-ui.data-source-settings.tls-client-key-label', 'Client Key')}\n              placeholder={t(\n                'grafana-ui.data-source-settings.tls-client-key-placeholder',\n                'Begins with {{privateKeyBeginsWith}}',\n                { privateKeyBeginsWith }\n              )}\n              onChange={onCertificateChangeFactory('tlsClientKey')}\n              onClick={onResetClickFactory('tlsClientKey')}\n            />\n          </>\n        )}\n      </div>\n    </div>\n  );\n};\n","import { css } from '@emotion/css';\nimport { useState, useCallback, useId, useMemo } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { Alert } from '../Alert/Alert';\nimport { Button } from '../Button/Button';\nimport { Field } from '../Forms/Field';\nimport { InlineField } from '../Forms/InlineField';\nimport { RadioButtonGroup } from '../Forms/RadioButtonGroup/RadioButtonGroup';\nimport { Icon } from '../Icon/Icon';\nimport { Input } from '../Input/Input';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { InlineSwitch } from '../Switch/Switch';\nimport { TagsInput } from '../TagsInput/TagsInput';\nimport { Text } from '../Text/Text';\n\nimport { BasicAuthSettings } from './BasicAuthSettings';\nimport { CustomHeadersSettings } from './CustomHeadersSettings';\nimport { HttpProxySettings } from './HttpProxySettings';\nimport { SecureSocksProxySettings } from './SecureSocksProxySettings';\nimport { TLSAuthSettings } from './TLSAuthSettings';\nimport { HttpSettingsProps } from './types';\n\nconst ACCESS_HELP_ID = 'grafana-http-access-help';\n\nconst HttpAccessHelp = () => {\n  return (\n    <Alert\n      severity=\"info\"\n      title={t('grafana-ui.data-source-http-settings.access-help-title', 'Access help')}\n      topSpacing={3}\n      id={ACCESS_HELP_ID}\n    >\n      <p>\n        <Trans i18nKey=\"grafana-ui.data-source-http-settings.access-help-details\">\n          Access mode controls how requests to the data source will be handled.\n          <strong>\n            &nbsp;<i>Server</i>\n          </strong>{' '}\n          should be the preferred way if nothing else is stated.\n        </Trans>\n      </p>\n      <Trans i18nKey=\"grafana-ui.data-source-http-settings.server-mode-title\">\n        <Text weight=\"medium\">Server access mode (Default):</Text>\n      </Trans>\n      <p>\n        <Trans i18nKey=\"grafana-ui.data-source-http-settings.server-mode-description\">\n          All requests will be made from the browser to Grafana backend/server which in turn will forward the requests\n          to the data source and by that circumvent possible Cross-Origin Resource Sharing (CORS) requirements. The URL\n          needs to be accessible from the grafana backend/server if you select this access mode.\n        </Trans>\n      </p>\n      <Trans i18nKey=\"grafana-ui.data-source-http-settings.browser-mode-title\">\n        <Text weight=\"medium\">Browser access mode:</Text>\n      </Trans>\n      <p>\n        <Trans i18nKey=\"grafana-ui.data-source-http-settings.browser-mode-description\">\n          All requests will be made from the browser directly to the data source and may be subject to Cross-Origin\n          Resource Sharing (CORS) requirements. The URL needs to be accessible from the browser if you select this\n          access mode.\n        </Trans>\n      </p>\n    </Alert>\n  );\n};\n\nconst LABEL_WIDTH = 26;\n\n/**\n * @deprecated Use components from `@grafana/plugin-ui` instead, according to the [migration guide](https://github.com/grafana/plugin-ui/blob/main/src/components/ConfigEditor/migrating-from-datasource-http-settings.md).\n */\nexport const DataSourceHttpSettings = (props: HttpSettingsProps) => {\n  const {\n    defaultUrl,\n    dataSourceConfig,\n    onChange,\n    showAccessOptions,\n    sigV4AuthToggleEnabled,\n    showForwardOAuthIdentityOption,\n    azureAuthSettings,\n    renderSigV4Editor,\n    secureSocksDSProxyEnabled,\n    urlLabel,\n    urlDocs,\n  } = props;\n\n  const ACCESS_OPTIONS: Array<SelectableValue<string>> = useMemo(\n    () => [\n      {\n        label: t('grafana-ui.data-source-http-settings.server-mode-label', 'Server (default)'),\n        value: 'proxy',\n      },\n      {\n        label: t('grafana-ui.data-source-http-settings.browser-mode-label', 'Browser'),\n        value: 'direct',\n      },\n    ],\n    []\n  );\n\n  const DEFAULT_ACCESS_OPTION = useMemo(() => ACCESS_OPTIONS[0], [ACCESS_OPTIONS]);\n\n  const [isAccessHelpVisible, setIsAccessHelpVisible] = useState(false);\n  const [azureAuthEnabled, setAzureAuthEnabled] = useState(false);\n  const theme = useTheme2();\n  let urlTooltip;\n\n  const onSettingsChange = useCallback(\n    (change: Partial<typeof dataSourceConfig>) => {\n      // Azure Authentication doesn't work correctly when Forward OAuth Identity is enabled.\n      // The Authorization header that has been set by the ApplyAzureAuth middleware gets overwritten\n      // with the Authorization header set by the OAuthTokenMiddleware.\n      const isAzureAuthEnabled =\n        (azureAuthSettings?.azureAuthSupported && azureAuthSettings.getAzureAuthEnabled(dataSourceConfig)) || false;\n      setAzureAuthEnabled(isAzureAuthEnabled);\n      if (isAzureAuthEnabled) {\n        const tmpOauthPassThru =\n          dataSourceConfig.jsonData.oauthPassThru !== undefined ? dataSourceConfig.jsonData.oauthPassThru : false;\n        change = {\n          ...change,\n          jsonData: {\n            ...dataSourceConfig.jsonData,\n            oauthPassThru: isAzureAuthEnabled ? false : tmpOauthPassThru,\n          },\n        };\n      }\n\n      onChange({\n        ...dataSourceConfig,\n        ...change,\n      });\n    },\n    [azureAuthSettings, dataSourceConfig, onChange]\n  );\n\n  switch (dataSourceConfig.access) {\n    case 'direct':\n      urlTooltip = (\n        <>\n          <Trans i18nKey=\"grafana-ui.data-source-http-settings.direct-url-tooltip\">\n            Your access method is <em>Browser</em>, this means the URL needs to be accessible from the browser.\n          </Trans>\n          {urlDocs}\n        </>\n      );\n      break;\n    case 'proxy':\n      urlTooltip = (\n        <>\n          <Trans i18nKey=\"grafana-ui.data-source-http-settings.proxy-url-tooltip\">\n            Your access method is <em>Server</em>, this means the URL needs to be accessible from the grafana\n            backend/server.\n          </Trans>\n          {urlDocs}\n        </>\n      );\n      break;\n    default:\n      urlTooltip = (\n        <>\n          <Trans i18nKey=\"grafana-ui.data-source-http-settings.default-url-tooltip\">\n            Specify a complete HTTP URL (for example http://your_server:8080)\n          </Trans>\n          {urlDocs}\n        </>\n      );\n  }\n\n  const isValidUrl = /^(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?$/.test(\n    dataSourceConfig.url\n  );\n\n  const gridLayout = css({\n    display: 'grid',\n    gridTemplateColumns: 'auto 1fr',\n    gap: theme.spacing(0.5),\n  });\n\n  const fromFieldId = useId();\n\n  return (\n    <Stack direction=\"column\" gap={5}>\n      <section>\n        <h3 className=\"page-heading\">\n          <Trans i18nKey=\"grafana-ui.data-source-http-settings.heading\">HTTP</Trans>\n        </h3>\n\n        <Field\n          label={urlLabel ?? 'URL'}\n          description={urlTooltip}\n          invalid={!isValidUrl}\n          error={!isValidUrl && t('grafana-ui.data-source-http-settings.invalid-url-error', 'Invalid URL')}\n          disabled={dataSourceConfig.readOnly}\n        >\n          <Input\n            id={fromFieldId}\n            width={40}\n            placeholder={defaultUrl}\n            value={dataSourceConfig.url}\n            data-testid={selectors.components.DataSource.DataSourceHttpSettings.urlInput}\n            onChange={(event) => onSettingsChange({ url: event.currentTarget.value })}\n          />\n        </Field>\n\n        {showAccessOptions && (\n          <>\n            <Field\n              label={t('grafana-ui.data-source-http-settings.access-label', 'Access')}\n              disabled={dataSourceConfig.readOnly}\n            >\n              <Stack direction=\"row\" gap={0.5}>\n                <RadioButtonGroup\n                  aria-label={t('grafana-ui.data-source-http-settings.access-label', 'Access')}\n                  options={ACCESS_OPTIONS}\n                  value={\n                    ACCESS_OPTIONS.find((o) => o.value === dataSourceConfig.access)?.value ||\n                    DEFAULT_ACCESS_OPTION.value\n                  }\n                  onChange={(selectedValue) => onSettingsChange({ access: selectedValue })}\n                />\n                <Button\n                  type=\"button\"\n                  variant=\"secondary\"\n                  size=\"md\"\n                  fill=\"outline\"\n                  onClick={() => setIsAccessHelpVisible((isVisible) => !isVisible)}\n                  aria-expanded={isAccessHelpVisible}\n                  aria-controls={ACCESS_HELP_ID}\n                >\n                  <Trans i18nKey=\"grafana-ui.data-source-http-settings.access-help\">\n                    Help&nbsp;\n                    <Icon name={isAccessHelpVisible ? 'angle-down' : 'angle-right'} />\n                  </Trans>\n                </Button>\n              </Stack>\n            </Field>\n\n            {isAccessHelpVisible && <HttpAccessHelp />}\n          </>\n        )}\n        {dataSourceConfig.access === 'proxy' && (\n          <>\n            <Field\n              label={t('grafana-ui.data-source-http-settings.allowed-cookies', 'Allowed cookies')}\n              description={t(\n                'grafana-ui.data-source-http-settings.allowed-cookies-description',\n                'Grafana proxy deletes forwarded cookies by default. Specify cookies by name that should be forwarded to the data source.'\n              )}\n            >\n              <TagsInput\n                tags={dataSourceConfig.jsonData.keepCookies}\n                width={40}\n                onChange={(cookies) =>\n                  onSettingsChange({ jsonData: { ...dataSourceConfig.jsonData, keepCookies: cookies } })\n                }\n                disabled={dataSourceConfig.readOnly}\n              />\n            </Field>\n\n            <Field\n              label={t('grafana-ui.data-source-http-settings.timeout-label', 'Timeout')}\n              description={t(\n                'grafana-ui.data-source-http-settings.timeout-description',\n                'HTTP request timeout in seconds'\n              )}\n              disabled={dataSourceConfig.readOnly}\n            >\n              <Input\n                type=\"number\"\n                width={40}\n                placeholder={t('grafana-ui.data-source-http-settings.timeout-placeholder', 'Timeout in seconds')}\n                value={dataSourceConfig.jsonData.timeout}\n                onChange={(event) => {\n                  onSettingsChange({\n                    jsonData: { ...dataSourceConfig.jsonData, timeout: parseInt(event.currentTarget.value, 10) },\n                  });\n                }}\n              />\n            </Field>\n          </>\n        )}\n      </section>\n\n      <section>\n        <h3 className=\"page-heading\">\n          <Trans i18nKey=\"grafana-ui.data-source-http-settings.auth\">Auth</Trans>\n        </h3>\n        <Stack direction=\"column\" gap={4}>\n          <div>\n            <div className={gridLayout}>\n              <InlineField\n                label={t('grafana-ui.data-source-http-settings.basic-auth-label', 'Basic auth')}\n                labelWidth={LABEL_WIDTH}\n                disabled={dataSourceConfig.readOnly}\n              >\n                <InlineSwitch\n                  id=\"http-settings-basic-auth\"\n                  value={dataSourceConfig.basicAuth}\n                  onChange={(event) => {\n                    onSettingsChange({ basicAuth: event!.currentTarget.checked });\n                  }}\n                />\n              </InlineField>\n\n              <InlineField\n                label={t('grafana-ui.data-source-http-settings.with-credentials-label', 'With Credentials')}\n                tooltip={t(\n                  'grafana-ui.data-source-http-settings.with-credentials-tooltip',\n                  'Whether credentials such as cookies or auth headers should be sent with cross-site requests.'\n                )}\n                labelWidth={LABEL_WIDTH}\n                disabled={dataSourceConfig.readOnly}\n              >\n                <InlineSwitch\n                  id=\"http-settings-with-credentials\"\n                  value={dataSourceConfig.withCredentials}\n                  onChange={(event) => {\n                    onSettingsChange({ withCredentials: event!.currentTarget.checked });\n                  }}\n                />\n              </InlineField>\n\n              {azureAuthSettings?.azureAuthSupported && (\n                <InlineField\n                  label={t('grafana-ui.data-source-http-settings.azure-auth-label', 'Azure Authentication')}\n                  tooltip={t(\n                    'grafana-ui.data-source-http-settings.azure-auth-tooltip',\n                    'Use Azure authentication for Azure endpoint.'\n                  )}\n                  labelWidth={LABEL_WIDTH}\n                  disabled={dataSourceConfig.readOnly}\n                >\n                  <InlineSwitch\n                    id=\"http-settings-azure-auth\"\n                    value={azureAuthEnabled}\n                    onChange={(event) => {\n                      onSettingsChange(\n                        azureAuthSettings.setAzureAuthEnabled(dataSourceConfig, event!.currentTarget.checked)\n                      );\n                    }}\n                  />\n                </InlineField>\n              )}\n\n              {sigV4AuthToggleEnabled && (\n                <InlineField\n                  label={t('grafana-ui.data-source-http-settings.sigv4-auth-label', 'SigV4 auth')}\n                  labelWidth={LABEL_WIDTH}\n                  disabled={dataSourceConfig.readOnly}\n                >\n                  <InlineSwitch\n                    id=\"http-settings-sigv4-auth\"\n                    value={dataSourceConfig.jsonData.sigV4Auth || false}\n                    onChange={(event) => {\n                      onSettingsChange({\n                        jsonData: { ...dataSourceConfig.jsonData, sigV4Auth: event!.currentTarget.checked },\n                      });\n                    }}\n                  />\n                </InlineField>\n              )}\n            </div>\n\n            {dataSourceConfig.access === 'proxy' && (\n              <HttpProxySettings\n                dataSourceConfig={dataSourceConfig}\n                onChange={(jsonData) => onSettingsChange({ jsonData })}\n                showForwardOAuthIdentityOption={azureAuthEnabled ? false : showForwardOAuthIdentityOption}\n              />\n            )}\n          </div>\n\n          {dataSourceConfig.basicAuth && (\n            <section>\n              <Text variant=\"h6\" element=\"h4\">\n                <Trans i18nKey=\"grafana-ui.data-source-http-settings.basic-auth\">Basic Auth Details</Trans>\n              </Text>\n\n              <BasicAuthSettings {...props} />\n            </section>\n          )}\n\n          {azureAuthSettings?.azureAuthSupported && azureAuthEnabled && azureAuthSettings.azureSettingsUI && (\n            <azureAuthSettings.azureSettingsUI dataSourceConfig={dataSourceConfig} onChange={onChange} />\n          )}\n\n          {dataSourceConfig.jsonData.sigV4Auth && sigV4AuthToggleEnabled && renderSigV4Editor}\n          {(dataSourceConfig.jsonData.tlsAuth || dataSourceConfig.jsonData.tlsAuthWithCACert) && (\n            <TLSAuthSettings dataSourceConfig={dataSourceConfig} onChange={onChange} />\n          )}\n\n          {dataSourceConfig.access === 'proxy' && (\n            <CustomHeadersSettings dataSourceConfig={dataSourceConfig} onChange={onChange} />\n          )}\n        </Stack>\n      </section>\n      {secureSocksDSProxyEnabled && <SecureSocksProxySettings options={dataSourceConfig} onOptionsChange={onChange} />}\n    </Stack>\n  );\n};\n","import { DataSourceJsonData, DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { InlineSwitch } from '../../components/Switch/Switch';\nimport { InlineField } from '../Forms/InlineField';\n\nexport interface Props<T extends DataSourceJsonData>\n  extends Pick<DataSourcePluginOptionsEditorProps<T>, 'options' | 'onOptionsChange'> {}\n\nexport interface AlertingConfig extends DataSourceJsonData {\n  manageAlerts?: boolean;\n}\n\nexport function AlertingSettings<T extends AlertingConfig>({ options, onOptionsChange }: Props<T>): JSX.Element {\n  return (\n    <>\n      <h3 className=\"page-heading\">\n        <Trans i18nKey=\"grafana-ui.data-source-settings.alerting-settings-heading\">Alerting</Trans>\n      </h3>\n      <div className=\"gf-form-group\">\n        <div className=\"gf-form-inline\">\n          <div className=\"gf-form\">\n            <InlineField\n              labelWidth={29}\n              label={t('grafana-ui.data-source-settings.alerting-settings-label', 'Manage alert rules in Alerting UI')}\n              disabled={options.readOnly}\n              tooltip={t(\n                'grafana-ui.data-source-settings.alerting-settings-tooltip',\n                'Manage alert rules for this data source. To manage other alerting resources, add an Alertmanager data source.'\n              )}\n            >\n              <InlineSwitch\n                value={options.jsonData.manageAlerts !== false}\n                onChange={(event) =>\n                  onOptionsChange({\n                    ...options,\n                    jsonData: { ...options.jsonData, manageAlerts: event!.currentTarget.checked },\n                  })\n                }\n              />\n            </InlineField>\n          </div>\n        </div>\n      </div>\n    </>\n  );\n}\n","import { HTMLProps, useRef } from 'react';\nimport * as React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { AsyncSelect, Select } from '../Select/Select';\n\n/** @internal\n * Should be used only internally by Segment/SegmentAsync which can guarantee that SegmentSelect is hidden\n * when a value is selected. See comment below on closeMenuOnSelect()\n */\nexport interface Props<T> extends Omit<HTMLProps<HTMLDivElement>, 'value' | 'onChange'> {\n  value?: T | SelectableValue<T>;\n  options: Array<SelectableValue<T>>;\n  onChange: (item: SelectableValue<T>) => void;\n  /**\n   * If provided - AsyncSelect will be used allowing to reload options when the value in the input changes\n   */\n  loadOptions?: (inputValue: string) => Promise<Array<SelectableValue<T>>>;\n  onClickOutside: () => void;\n  width: number;\n  noOptionsMessage?: string;\n  allowCustomValue?: boolean;\n  /**\n   * If true, empty value will be passed to onChange callback otherwise using empty value\n   * will work as canceling and using the previous value\n   */\n  allowEmptyValue?: boolean;\n  placeholder?: string;\n}\n\n/** @internal */\nexport function SegmentSelect<T>({\n  value,\n  placeholder = '',\n  options = [],\n  onChange,\n  onClickOutside,\n  loadOptions = undefined,\n  width: widthPixels,\n  noOptionsMessage = '',\n  allowCustomValue = false,\n  allowEmptyValue = false,\n  ...rest\n}: React.PropsWithChildren<Props<T>>) {\n  const ref = useRef<HTMLDivElement>(null);\n  const theme = useTheme2();\n\n  let width = widthPixels > 0 ? widthPixels / theme.spacing.gridSize : undefined;\n\n  let Component;\n  let asyncOptions = {};\n  if (loadOptions) {\n    Component = AsyncSelect;\n    asyncOptions = { loadOptions, defaultOptions: true };\n  } else {\n    Component = Select;\n  }\n\n  return (\n    <div {...rest} ref={ref}>\n      <Component\n        width={width}\n        noOptionsMessage={noOptionsMessage}\n        placeholder={placeholder}\n        autoFocus={true}\n        isOpen={true}\n        onChange={onChange}\n        options={options}\n        value={value}\n        // Disable \"close menu on select\" option to avoid calling onChange() in onCloseMenu() when a value is selected.\n        // Once the value is selected the Select component (with the menu) will be hidden anyway by the parent component:\n        // Segment or SegmentAsync - hence setting this option has no UX effect.\n        closeMenuOnSelect={false}\n        onCloseMenu={() => {\n          if (ref && ref.current) {\n            // https://github.com/JedWatson/react-select/issues/188#issuecomment-279240292\n            // Unfortunately there's no other way of retrieving the value (not yet) created new option\n            const input = ref.current.querySelector<HTMLInputElement>('input[id^=\"react-select-\"]');\n            if (input && (input.value || allowEmptyValue)) {\n              onChange({ value: input.value as T, label: input.value });\n            } else {\n              onClickOutside();\n            }\n          }\n        }}\n        allowCustomValue={allowCustomValue}\n        {...asyncOptions}\n      />\n    </div>\n  );\n}\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport const getSegmentStyles = (theme: GrafanaTheme2) => {\n  return {\n    segment: css({\n      cursor: 'pointer',\n      width: 'auto',\n    }),\n\n    queryPlaceholder: css({\n      color: theme.colors.text.disabled,\n    }),\n\n    disabled: css({\n      cursor: 'not-allowed',\n      opacity: 0.65,\n      boxShadow: 'none',\n    }),\n  };\n};\n","import { useState, useRef, ReactElement } from 'react';\nimport * as React from 'react';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { clearButtonStyles } from '../Button/Button';\n\ninterface LabelProps {\n  Component: ReactElement;\n  onClick?: () => void;\n  disabled?: boolean;\n}\n\nexport const useExpandableLabel = (\n  initialExpanded: boolean,\n  onExpandedChange?: (expanded: boolean) => void\n): [React.ComponentType<LabelProps>, number, boolean, (expanded: boolean) => void] => {\n  const ref = useRef<HTMLButtonElement>(null);\n  const buttonStyles = useStyles2(clearButtonStyles);\n  const [expanded, setExpanded] = useState<boolean>(initialExpanded);\n  const [width, setWidth] = useState(0);\n\n  const setExpandedWrapper = (expanded: boolean) => {\n    setExpanded(expanded);\n    if (onExpandedChange) {\n      onExpandedChange(expanded);\n    }\n  };\n\n  const Label = ({ Component, onClick, disabled }: LabelProps) => (\n    <button\n      type=\"button\"\n      className={buttonStyles}\n      ref={ref}\n      disabled={disabled}\n      onClick={() => {\n        setExpandedWrapper(true);\n        if (ref && ref.current) {\n          setWidth(ref.current.clientWidth * 1.25);\n        }\n        onClick?.();\n      }}\n    >\n      {Component}\n    </button>\n  );\n\n  return [Label, width, expanded, setExpandedWrapper];\n};\n","import { cx } from '@emotion/css';\nimport { isObject } from 'lodash';\nimport { HTMLProps } from 'react';\nimport * as React from 'react';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { InlineLabel } from '../Forms/InlineLabel';\n\nimport { SegmentSelect } from './SegmentSelect';\nimport { getSegmentStyles } from './styles';\nimport { SegmentProps } from './types';\nimport { useExpandableLabel } from './useExpandableLabel';\n\nexport interface SegmentSyncProps<T> extends SegmentProps, Omit<HTMLProps<HTMLDivElement>, 'value' | 'onChange'> {\n  value?: T | SelectableValue<T>;\n  onChange: (item: SelectableValue<T>) => void;\n  options: Array<SelectableValue<T>>;\n  inputMinWidth?: number;\n}\n\nexport function Segment<T>({\n  options,\n  value,\n  onChange,\n  Component,\n  className,\n  allowCustomValue,\n  allowEmptyValue,\n  placeholder,\n  disabled,\n  inputMinWidth,\n  inputPlaceholder,\n  onExpandedChange,\n  autofocus = false,\n  ...rest\n}: React.PropsWithChildren<SegmentSyncProps<T>>) {\n  const [Label, labelWidth, expanded, setExpanded] = useExpandableLabel(autofocus, onExpandedChange);\n  const width = inputMinWidth ? Math.max(inputMinWidth, labelWidth) : labelWidth;\n  const styles = useStyles2(getSegmentStyles);\n\n  if (!expanded) {\n    const label = isObject(value) ? value.label : value;\n    const labelAsString = label != null ? String(label) : undefined;\n\n    return (\n      <Label\n        disabled={disabled}\n        Component={\n          Component || (\n            <InlineLabel\n              className={cx(\n                styles.segment,\n                {\n                  [styles.queryPlaceholder]: placeholder !== undefined && !value,\n                  [styles.disabled]: disabled,\n                },\n                className\n              )}\n            >\n              {labelAsString || placeholder}\n            </InlineLabel>\n          )\n        }\n      />\n    );\n  }\n\n  return (\n    <SegmentSelect\n      {...rest}\n      value={value && !isObject(value) ? { value } : value}\n      placeholder={inputPlaceholder}\n      options={options}\n      width={width}\n      onClickOutside={() => setExpanded(false)}\n      allowCustomValue={allowCustomValue}\n      allowEmptyValue={allowEmptyValue}\n      onChange={(item) => {\n        setExpanded(false);\n        onChange(item);\n      }}\n    />\n  );\n}\n","import { cx } from '@emotion/css';\nimport { isObject } from 'lodash';\nimport { HTMLProps } from 'react';\nimport * as React from 'react';\nimport { useAsyncFn } from 'react-use';\nimport { type AsyncState } from 'react-use/lib/useAsync';\n\nimport { SelectableValue } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { InlineLabel } from '../Forms/InlineLabel';\n\nimport { SegmentSelect } from './SegmentSelect';\nimport { getSegmentStyles } from './styles';\nimport { SegmentProps } from './types';\nimport { useExpandableLabel } from './useExpandableLabel';\n\nexport interface SegmentAsyncProps<T> extends SegmentProps, Omit<HTMLProps<HTMLDivElement>, 'value' | 'onChange'> {\n  value?: T | SelectableValue<T>;\n  loadOptions: (query?: string) => Promise<Array<SelectableValue<T>>>;\n  /**\n   *  If true options will be reloaded when user changes the value in the input,\n   *  otherwise, options will be loaded when the segment is clicked\n   */\n  reloadOptionsOnChange?: boolean;\n  onChange: (item: SelectableValue<T>) => void;\n  noOptionMessageHandler?: (state: AsyncState<Array<SelectableValue<T>>>) => string;\n  inputMinWidth?: number;\n}\n\nexport function SegmentAsync<T>({\n  value,\n  onChange,\n  loadOptions,\n  reloadOptionsOnChange = false,\n  Component,\n  className,\n  allowCustomValue,\n  allowEmptyValue,\n  disabled,\n  placeholder,\n  inputMinWidth,\n  inputPlaceholder,\n  autofocus = false,\n  onExpandedChange,\n  noOptionMessageHandler = mapStateToNoOptionsMessage,\n  ...rest\n}: React.PropsWithChildren<SegmentAsyncProps<T>>) {\n  const [state, fetchOptions] = useAsyncFn(loadOptions, [loadOptions]);\n  const [Label, labelWidth, expanded, setExpanded] = useExpandableLabel(autofocus, onExpandedChange);\n  const width = inputMinWidth ? Math.max(inputMinWidth, labelWidth) : labelWidth;\n  const styles = useStyles2(getSegmentStyles);\n\n  if (!expanded) {\n    const label = isObject(value) ? value.label : value;\n    const labelAsString = label != null ? String(label) : undefined;\n\n    return (\n      <Label\n        onClick={reloadOptionsOnChange ? undefined : fetchOptions}\n        disabled={disabled}\n        Component={\n          Component || (\n            <InlineLabel\n              className={cx(\n                styles.segment,\n                {\n                  [styles.queryPlaceholder]: placeholder !== undefined && !value,\n                  [styles.disabled]: disabled,\n                },\n                className\n              )}\n            >\n              {labelAsString || placeholder}\n            </InlineLabel>\n          )\n        }\n      />\n    );\n  }\n\n  return (\n    <SegmentSelect\n      {...rest}\n      value={value && !isObject(value) ? { value } : value}\n      placeholder={inputPlaceholder}\n      options={state.value ?? []}\n      loadOptions={reloadOptionsOnChange ? fetchOptions : undefined}\n      width={width}\n      noOptionsMessage={noOptionMessageHandler(state)}\n      allowCustomValue={allowCustomValue}\n      allowEmptyValue={allowEmptyValue}\n      onClickOutside={() => {\n        setExpanded(false);\n      }}\n      onChange={(item) => {\n        setExpanded(false);\n        onChange(item);\n      }}\n    />\n  );\n}\n\nfunction mapStateToNoOptionsMessage<T>(state: AsyncState<Array<SelectableValue<T>>>): string {\n  if (state.loading) {\n    return t('grafana-ui.segment-async.loading', 'Loading options...');\n  }\n\n  if (state.error) {\n    return t('grafana-ui.segment-async.error', 'Failed to load options');\n  }\n\n  return t('grafana-ui.segment-async.no-options', 'No options found');\n}\n","import { cx, css } from '@emotion/css';\nimport { HTMLProps, useRef, useState } from 'react';\nimport * as React from 'react';\nimport { useClickAway } from 'react-use';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { measureText } from '../../utils/measureText';\nimport { InlineLabel } from '../Forms/InlineLabel';\n\nimport { getSegmentStyles } from './styles';\nimport { SegmentProps } from './types';\nimport { useExpandableLabel } from './useExpandableLabel';\n\nexport interface SegmentInputProps\n  extends Omit<SegmentProps, 'allowCustomValue' | 'allowEmptyValue'>,\n    Omit<HTMLProps<HTMLInputElement>, 'value' | 'onChange'> {\n  value: string | number;\n  onChange: (text: string | number) => void;\n}\n\nconst FONT_SIZE = 14;\n\nexport function SegmentInput({\n  value: initialValue,\n  onChange,\n  Component,\n  className,\n  placeholder,\n  inputPlaceholder,\n  disabled,\n  autofocus = false,\n  onExpandedChange,\n  ...rest\n}: React.PropsWithChildren<SegmentInputProps>) {\n  const ref = useRef<HTMLInputElement>(null);\n  const [value, setValue] = useState<number | string>(initialValue);\n  const [inputWidth, setInputWidth] = useState<number>(measureText((initialValue || '').toString(), FONT_SIZE).width);\n  const [Label, , expanded, setExpanded] = useExpandableLabel(autofocus, onExpandedChange);\n  const styles = useStyles2(getSegmentStyles);\n\n  useClickAway(ref, () => {\n    setExpanded(false);\n    onChange(value);\n  });\n\n  if (!expanded) {\n    return (\n      <Label\n        disabled={disabled}\n        Component={\n          Component || (\n            <InlineLabel\n              className={cx(\n                styles.segment,\n                {\n                  [styles.queryPlaceholder]: placeholder !== undefined && !value,\n                  [styles.disabled]: disabled,\n                },\n                className\n              )}\n            >\n              {initialValue || placeholder}\n            </InlineLabel>\n          )\n        }\n      />\n    );\n  }\n\n  const inputWidthStyle = css({\n    width: `${Math.max(inputWidth + 20, 32)}px`,\n  });\n\n  return (\n    <input\n      {...rest}\n      ref={ref}\n      // this needs to autofocus, but it's ok as it's only rendered by choice\n      // eslint-disable-next-line jsx-a11y/no-autofocus\n      autoFocus\n      className={cx(`gf-form gf-form-input`, inputWidthStyle)}\n      value={value}\n      placeholder={inputPlaceholder}\n      onChange={(item) => {\n        const { width } = measureText(item.target.value, FONT_SIZE);\n        setInputWidth(width);\n        setValue(item.target.value);\n      }}\n      onBlur={() => {\n        setExpanded(false);\n        onChange(value);\n      }}\n      onKeyDown={(e) => {\n        if ([13, 27].includes(e.keyCode)) {\n          setExpanded(false);\n          onChange(value);\n        }\n      }}\n    />\n  );\n}\n","import { css } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { InlineFieldRow } from '../Forms/InlineFieldRow';\nimport { InlineLabel } from '../Forms/InlineLabel';\n\n/**\n * Horizontal section for editor components.\n *\n * @alpha\n */\nexport const SegmentSection = ({\n  label,\n  htmlFor,\n  children,\n  fill,\n}: {\n  // Name of the section\n  label: string;\n  // htmlFor for the label\n  htmlFor?: string;\n  // List of components in the section\n  children: React.ReactNode;\n  // Fill the space at the end\n  fill?: boolean;\n}) => {\n  const styles = useStyles2(getStyles);\n  return (\n    <>\n      <InlineFieldRow>\n        <InlineLabel htmlFor={htmlFor} width={12} className={styles.label}>\n          {label}\n        </InlineLabel>\n        {children}\n        {fill && (\n          <div className={styles.fill}>\n            <InlineLabel>{''}</InlineLabel>\n          </div>\n        )}\n      </InlineFieldRow>\n    </>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  label: css({\n    color: theme.colors.primary.text,\n  }),\n  fill: css({\n    flexGrow: 1,\n    marginBottom: theme.spacing(0.5),\n  }),\n});\n","import { css } from '@emotion/css';\nimport { css as cssCore } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport 'rc-slider/assets/index.css';\n\nexport const getStyles = (theme: GrafanaTheme2, isHorizontal: boolean, hasMarks = false) => {\n  const { spacing } = theme;\n  const railColor = theme.colors.border.strong;\n  const trackColor = theme.colors.primary.main;\n  const handleColor = theme.colors.primary.main;\n  const blueOpacity = theme.colors.primary.transparent;\n  const hoverStyle = `box-shadow: 0px 0px 0px 6px ${blueOpacity}`;\n\n  return {\n    container: css({\n      width: '100%',\n      margin: isHorizontal ? 'inherit' : spacing(1, 3, 1, 1),\n      paddingBottom: isHorizontal && hasMarks ? theme.spacing(1) : 'inherit',\n      height: isHorizontal ? 'auto' : '100%',\n    }),\n    // can't write this as an object since it needs to overwrite rc-slider styles\n    // object syntax doesn't support kebab case keys\n    // eslint-disable-next-line @emotion/syntax-preference\n    slider: css`\n      .rc-slider {\n        display: flex;\n        flex-grow: 1;\n        margin-left: 7px; // half the size of the handle to align handle to the left on 0 value\n      }\n      .rc-slider-mark {\n        top: ${theme.spacing(1.75)};\n      }\n      .rc-slider-mark-text {\n        color: ${theme.colors.text.disabled};\n        font-size: ${theme.typography.bodySmall.fontSize};\n      }\n      .rc-slider-mark-text-active {\n        color: ${theme.colors.text.primary};\n      }\n      .rc-slider-handle {\n        border: none;\n        background-color: ${handleColor};\n        box-shadow: ${theme.shadows.z1};\n        cursor: pointer;\n        opacity: 1;\n      }\n\n      .rc-slider-handle:hover,\n      .rc-slider-handle:active,\n      .rc-slider-handle-click-focused:focus {\n        ${hoverStyle};\n      }\n\n      // The triple class names is needed because that's the specificity used in the source css :(\n      .rc-slider-handle-dragging.rc-slider-handle-dragging.rc-slider-handle-dragging,\n      .rc-slider-handle:focus-visible {\n        box-shadow: 0 0 0 5px ${theme.colors.text.primary};\n      }\n\n      .rc-slider-dot,\n      .rc-slider-dot-active {\n        background-color: ${theme.colors.text.primary};\n        border-color: ${theme.colors.text.primary};\n      }\n\n      .rc-slider-track {\n        background-color: ${trackColor};\n      }\n      .rc-slider-rail {\n        background-color: ${railColor};\n        cursor: pointer;\n      }\n    `,\n    /** Global component from @emotion/core doesn't accept computed classname string returned from css from emotion.\n     * It accepts object containing the computed name and flattened styles returned from css from @emotion/core\n     * */\n    tooltip: cssCore`\n      body {\n        .rc-slider-tooltip {\n          cursor: grab;\n          user-select: none;\n          z-index: ${theme.zIndex.tooltip};\n        }\n\n        .rc-slider-tooltip-inner {\n          color: ${theme.colors.text.primary};\n          background-color: transparent !important;\n          border-radius: 0;\n          box-shadow: none;\n        }\n\n        .rc-slider-tooltip-placement-top .rc-slider-tooltip-arrow {\n          display: none;\n        }\n\n        .rc-slider-tooltip-placement-top {\n          padding: 0;\n        }\n      }\n    `,\n    sliderInput: css({\n      display: 'flex',\n      flexDirection: 'row',\n      alignItems: 'center',\n      width: '100%',\n    }),\n    sliderInputVertical: css({\n      flexDirection: 'column',\n      height: '100%',\n\n      '.rc-slider': {\n        margin: 0,\n        order: 2,\n      },\n    }),\n    sliderInputField: css({\n      marginLeft: theme.spacing(3),\n      input: {\n        textAlign: 'center',\n      },\n    }),\n    sliderInputFieldVertical: css({\n      margin: `0 0 ${theme.spacing(3)} 0`,\n      order: 1,\n    }),\n  };\n};\n","import { cx } from '@emotion/css';\nimport { Global } from '@emotion/react';\nimport SliderComponent from 'rc-slider';\nimport { useState, useCallback, ChangeEvent, FocusEvent } from 'react';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Input } from '../Input/Input';\n\nimport { getStyles } from './styles';\nimport { SliderProps } from './types';\n\n/**\n * @public\n */\nexport const Slider = ({\n  min,\n  max,\n  onChange,\n  onAfterChange,\n  orientation = 'horizontal',\n  reverse,\n  step,\n  value,\n  ariaLabelForHandle,\n  marks,\n  included,\n}: SliderProps) => {\n  const isHorizontal = orientation === 'horizontal';\n  const styles = useStyles2(getStyles, isHorizontal, Boolean(marks));\n  const SliderWithTooltip = SliderComponent;\n  const [sliderValue, setSliderValue] = useState<number>(value ?? min);\n\n  const onSliderChange = useCallback(\n    (v: number | number[]) => {\n      const value = typeof v === 'number' ? v : v[0];\n\n      setSliderValue(value);\n      onChange?.(value);\n    },\n    [setSliderValue, onChange]\n  );\n\n  const onSliderInputChange = useCallback(\n    (e: ChangeEvent<HTMLInputElement>) => {\n      let v = +e.target.value;\n\n      if (Number.isNaN(v)) {\n        v = 0;\n      }\n\n      setSliderValue(v);\n\n      if (onChange) {\n        onChange(v);\n      }\n\n      if (onAfterChange) {\n        onAfterChange(v);\n      }\n    },\n    [onChange, onAfterChange]\n  );\n\n  // Check for min/max on input blur so user is able to enter\n  // custom values that might seem above/below min/max on first keystroke\n  const onSliderInputBlur = useCallback(\n    (e: FocusEvent<HTMLInputElement>) => {\n      const v = +e.target.value;\n\n      if (v > max) {\n        setSliderValue(max);\n      } else if (v < min) {\n        setSliderValue(min);\n      }\n    },\n    [max, min]\n  );\n\n  const handleChangeComplete = useCallback(\n    (v: number | number[]) => {\n      const value = typeof v === 'number' ? v : v[0];\n      onAfterChange?.(value);\n    },\n    [onAfterChange]\n  );\n\n  const sliderInputClassNames = !isHorizontal ? [styles.sliderInputVertical] : [];\n  const sliderInputFieldClassNames = !isHorizontal ? [styles.sliderInputFieldVertical] : [];\n\n  return (\n    <div className={cx(styles.container, styles.slider)}>\n      {/** Slider tooltip's parent component is body and therefore we need Global component to do css overrides for it. */}\n      <Global styles={styles.tooltip} />\n      <div className={cx(styles.sliderInput, ...sliderInputClassNames)}>\n        <SliderWithTooltip\n          min={min}\n          max={max}\n          step={step}\n          defaultValue={value}\n          value={sliderValue}\n          onChange={onSliderChange}\n          onChangeComplete={handleChangeComplete}\n          vertical={!isHorizontal}\n          reverse={reverse}\n          ariaLabelForHandle={ariaLabelForHandle}\n          marks={marks}\n          included={included}\n        />\n\n        <Input\n          type=\"text\"\n          width={7.5}\n          className={cx(styles.sliderInputField, ...sliderInputFieldClassNames)}\n          value={sliderValue}\n          onChange={onSliderInputChange}\n          onBlur={onSliderInputBlur}\n          min={min}\n          max={max}\n        />\n      </div>\n    </div>\n  );\n};\n\nSlider.displayName = 'Slider';\n","import { css } from '@emotion/css';\nimport Tooltip, { TooltipRef } from 'rc-tooltip';\nimport { useEffect, useRef } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nconst HandleTooltip = (props: {\n  value: number;\n  children: React.ReactElement;\n  visible: boolean;\n  placement: 'top' | 'right';\n  tipFormatter?: () => React.ReactNode;\n}) => {\n  const { value, children, visible, placement, tipFormatter, ...restProps } = props;\n\n  const tooltipRef = useRef<TooltipRef>(null);\n  const rafRef = useRef<number | null>(null);\n  const styles = useStyles2(tooltipStyles);\n\n  function cancelKeepAlign() {\n    if (rafRef.current !== null) {\n      cancelAnimationFrame(rafRef.current);\n    }\n  }\n\n  function keepAlign() {\n    rafRef.current = requestAnimationFrame(() => {\n      tooltipRef.current?.forceAlign();\n    });\n  }\n\n  useEffect(() => {\n    if (visible) {\n      keepAlign();\n    } else {\n      cancelKeepAlign();\n    }\n\n    return cancelKeepAlign;\n  }, [value, visible]);\n\n  return (\n    <Tooltip\n      overlayClassName={styles.tooltip}\n      placement={placement}\n      overlay={tipFormatter ?? value}\n      overlayInnerStyle={{ minHeight: 'auto' }}\n      ref={tooltipRef}\n      visible={visible}\n      {...restProps}\n    >\n      {children}\n    </Tooltip>\n  );\n};\n\nconst tooltipStyles = (theme: GrafanaTheme2) => {\n  return {\n    tooltip: css({\n      position: 'absolute',\n      display: 'block',\n      visibility: 'visible',\n      fontSize: theme.typography.bodySmall.fontSize,\n      opacity: 0.9,\n      padding: 3,\n      zIndex: theme.zIndex.tooltip,\n    }),\n  };\n};\n\nexport default HandleTooltip;\n","import { cx } from '@emotion/css';\nimport { Global } from '@emotion/react';\nimport Slider, { SliderProps } from 'rc-slider';\nimport { useCallback } from 'react';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport HandleTooltip from './HandleTooltip';\nimport { getStyles } from './styles';\nimport { RangeSliderProps } from './types';\n\n/**\n * @public\n *\n * RichHistoryQueriesTab uses this Range Component\n */\nexport const RangeSlider = ({\n  min,\n  max,\n  onChange,\n  onAfterChange,\n  orientation = 'horizontal',\n  reverse,\n  step,\n  formatTooltipResult,\n  value,\n  tooltipAlwaysVisible = true,\n}: RangeSliderProps) => {\n  const handleChange = useCallback(\n    (v: number | number[]) => {\n      const value = typeof v === 'number' ? [v, v] : v;\n      onChange?.(value);\n    },\n    [onChange]\n  );\n\n  const handleChangeComplete = useCallback(\n    (v: number | number[]) => {\n      const value = typeof v === 'number' ? [v, v] : v;\n      onAfterChange?.(value);\n    },\n    [onAfterChange]\n  );\n\n  const isHorizontal = orientation === 'horizontal';\n  const styles = useStyles2(getStyles, isHorizontal);\n\n  const tipHandleRender: SliderProps['handleRender'] = (node, handleProps) => {\n    return (\n      <HandleTooltip\n        value={handleProps.value}\n        visible={tooltipAlwaysVisible || handleProps.dragging}\n        tipFormatter={formatTooltipResult ? () => formatTooltipResult(handleProps.value) : undefined}\n        placement={isHorizontal ? 'top' : 'right'}\n      >\n        {node}\n      </HandleTooltip>\n    );\n  };\n\n  return (\n    <div className={cx(styles.container, styles.slider)}>\n      {/** Slider tooltip's parent component is body and therefore we need Global component to do css overrides for it. */}\n      <Global styles={styles.tooltip} />\n      <Slider\n        min={min}\n        max={max}\n        step={step}\n        defaultValue={value}\n        range={true}\n        onChange={handleChange}\n        onChangeComplete={handleChangeComplete}\n        vertical={!isHorizontal}\n        reverse={reverse}\n        handleRender={tipHandleRender}\n      />\n    </div>\n  );\n};\n\nRangeSlider.displayName = 'RangeSlider';\n","import { css } from '@emotion/css';\nimport { HTMLProps, useEffect } from 'react';\nimport * as React from 'react';\nimport { useForm, Mode, DefaultValues, SubmitHandler, FieldValues } from 'react-hook-form';\n\nimport { FormAPI } from '../../types/forms';\n\ninterface FormProps<T extends FieldValues> extends Omit<HTMLProps<HTMLFormElement>, 'onSubmit' | 'children'> {\n  validateOn?: Mode;\n  validateOnMount?: boolean;\n  validateFieldsOnMount?: string | string[];\n  defaultValues?: DefaultValues<T>;\n  onSubmit: SubmitHandler<T>;\n  children: (api: FormAPI<T>) => React.ReactNode;\n  /** Sets max-width for container. Use it instead of setting individual widths on inputs.*/\n  maxWidth?: number | 'none';\n}\n\n/**\n * @deprecated use the `useForm` hook from react-hook-form instead\n */\nexport function Form<T extends FieldValues>({\n  defaultValues,\n  onSubmit,\n  validateOnMount = false,\n  validateFieldsOnMount,\n  children,\n  validateOn = 'onSubmit',\n  maxWidth = 600,\n  ...htmlProps\n}: FormProps<T>) {\n  const { handleSubmit, trigger, formState, ...rest } = useForm<T>({\n    mode: validateOn,\n    defaultValues,\n  });\n\n  useEffect(() => {\n    if (validateOnMount) {\n      //@ts-expect-error\n      trigger(validateFieldsOnMount);\n    }\n  }, [trigger, validateFieldsOnMount, validateOnMount]);\n\n  return (\n    <form\n      className={css({\n        maxWidth: maxWidth !== 'none' ? maxWidth + 'px' : maxWidth,\n        width: '100%',\n      })}\n      onSubmit={handleSubmit(onSubmit)}\n      {...htmlProps}\n    >\n      {children({ errors: formState.errors, formState, trigger, ...rest })}\n    </form>\n  );\n}\n","/**\n * Rollup does not support renamed exports so do not change this to export { Controller as InputControl } ...\n */\nimport { Controller } from 'react-hook-form';\n\n/**\n * @deprecated use the `Controller` component from react-hook-form instead\n */\nexport const InputControl = Controller;\n","import { useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { IconName } from '../../types/icon';\nimport { ComponentSize } from '../../types/size';\nimport { Button, ButtonFill, ButtonVariant } from '../Button/Button';\nimport { Select } from '../Select/Select';\n\nexport interface ValuePickerProps<T> {\n  /** Aria label applied to the input field */\n  ['aria-label']?: string;\n  /** Label to display on the picker button */\n  label: string;\n  /** Icon to display on the picker button */\n  icon?: IconName;\n  /** ValuePicker options  */\n  options: Array<SelectableValue<T>>;\n  /** Callback to handle selected option */\n  onChange: (value: SelectableValue<T>) => void;\n  /** Which ButtonVariant to render */\n  variant?: ButtonVariant;\n  /** Size of button  */\n  size?: ComponentSize;\n  /** Min width for select in grid units */\n  minWidth?: number;\n  /** Should the picker cover the full width of its parent */\n  isFullWidth?: boolean;\n  /** Control where the menu is rendered */\n  menuPlacement?: 'auto' | 'bottom' | 'top';\n  /** Which ButtonFill to use */\n  fill?: ButtonFill;\n\n  /** custom css applied to the button */\n  buttonCss?: string;\n}\n\nexport function ValuePicker<T>({\n  'aria-label': ariaLabel,\n  label,\n  icon,\n  options,\n  onChange,\n  variant,\n  minWidth = 16,\n  size = 'sm',\n  isFullWidth = true,\n  menuPlacement,\n  fill,\n  buttonCss,\n}: ValuePickerProps<T>) {\n  const [isPicking, setIsPicking] = useState(false);\n  const theme = useTheme2();\n\n  return (\n    <>\n      {!isPicking && (\n        <Button\n          size={size || 'sm'}\n          className={buttonCss}\n          icon={icon || 'plus'}\n          onClick={() => setIsPicking(true)}\n          variant={variant}\n          fill={fill}\n          fullWidth={isFullWidth}\n          data-testid={selectors.components.ValuePicker.button(ariaLabel ?? label)}\n        >\n          {label}\n        </Button>\n      )}\n\n      {isPicking && (\n        <span style={{ minWidth: theme.spacing(minWidth), flexGrow: isFullWidth ? 1 : undefined }}>\n          <Select\n            placeholder={label}\n            options={options}\n            aria-label={selectors.components.ValuePicker.select(ariaLabel ?? label)}\n            isOpen\n            onCloseMenu={() => setIsPicking(false)}\n            autoFocus={true}\n            onChange={(value) => {\n              setIsPicking(false);\n              onChange(value);\n            }}\n            menuPlacement={menuPlacement}\n          />\n        </span>\n      )}\n    </>\n  );\n}\n","import { memo, useCallback } from 'react';\nimport * as React from 'react';\n\nimport { FieldMatcherID, fieldMatchers } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { Input } from '../Input/Input';\n\nimport { MatcherUIProps, FieldMatcherUIRegistryItem } from './types';\n\nexport const FieldNameByRegexMatcherEditor = memo<MatcherUIProps<string>>((props) => {\n  const { options, onChange } = props;\n\n  const onBlur = useCallback(\n    (e: React.FocusEvent<HTMLInputElement>) => {\n      return onChange(e.target.value);\n    },\n    [onChange]\n  );\n\n  return (\n    <Input\n      placeholder={t('grafana-ui.field-name-by-regex-matcher.input-placeholder', 'Enter regular expression')}\n      defaultValue={options}\n      onBlur={onBlur}\n    />\n  );\n});\nFieldNameByRegexMatcherEditor.displayName = 'FieldNameByRegexMatcherEditor';\n\nexport const getFieldNameByRegexMatcherItem: () => FieldMatcherUIRegistryItem<string> = () => ({\n  id: FieldMatcherID.byRegexp,\n  component: FieldNameByRegexMatcherEditor,\n  matcher: fieldMatchers.get(FieldMatcherID.byRegexp),\n  name: t('grafana-ui.matchers-ui.name-field-name-by-regex-matcher', 'Fields with name matching regex'),\n  description: t(\n    'grafana-ui.matchers-ui.description-field-name-by-regex-matcher',\n    'Set properties for fields with names matching a regex'\n  ),\n  optionsToLabel: (options) => options,\n});\n","import { useMemo } from 'react';\n\nimport { DataFrame, Field, getFieldDisplayName, SelectableValue, FieldNamePickerBaseNameMode } from '@grafana/data';\n\nimport { getFieldTypeIcon } from '../../types/icon';\n\n/**\n * @internal\n */\nexport interface FrameFieldsDisplayNames {\n  // The display names\n  display: Set<string>;\n\n  // raw field names (that are explicitly not visible)\n  raw: Set<string>;\n\n  // Field mappings (duplicates are not supported)\n  fields: Map<string, Field>;\n}\n\n/**\n * @internal\n */\nexport function frameHasName(name: string | undefined, names: FrameFieldsDisplayNames) {\n  if (!name) {\n    return false;\n  }\n  return names.display.has(name) || names.raw.has(name);\n}\n\n/**\n * Returns the distinct names in a set of frames\n */\nexport function getFrameFieldsDisplayNames(\n  data: DataFrame[],\n  filter?: (field: Field) => boolean\n): FrameFieldsDisplayNames {\n  const names: FrameFieldsDisplayNames = {\n    display: new Set<string>(),\n    raw: new Set<string>(),\n    fields: new Map<string, Field>(),\n  };\n\n  for (const frame of data) {\n    for (const field of frame.fields) {\n      if (filter && !filter(field)) {\n        continue;\n      }\n      const disp = getFieldDisplayName(field, frame, data);\n      names.display.add(disp);\n      names.fields.set(disp, field);\n      if (field.name && disp !== field.name) {\n        names.raw.add(field.name);\n        names.fields.set(field.name, field);\n      }\n    }\n  }\n  return names;\n}\n\n/**\n * @internal\n */\nexport function useFieldDisplayNames(data: DataFrame[], filter?: (field: Field) => boolean): FrameFieldsDisplayNames {\n  return useMemo(() => {\n    return getFrameFieldsDisplayNames(data, filter);\n  }, [data, filter]);\n}\n\n/**\n * @internal\n */\nexport function useSelectOptions(\n  displayNames: FrameFieldsDisplayNames,\n  currentName?: string,\n  firstItem?: SelectableValue<string>,\n  fieldType?: string,\n  baseNameMode?: FieldNamePickerBaseNameMode\n): Array<SelectableValue<string>> {\n  return useMemo(() => {\n    let found = false;\n    const options: Array<SelectableValue<string>> = [];\n    if (firstItem) {\n      options.push(firstItem);\n    }\n    if (baseNameMode === FieldNamePickerBaseNameMode.OnlyBaseNames) {\n      for (const name of displayNames.raw) {\n        if (!found && name === currentName) {\n          found = true;\n        }\n        options.push({\n          value: name,\n          label: `${name} (base field name)`,\n        });\n      }\n    } else {\n      for (const name of displayNames.display) {\n        if (!found && name === currentName) {\n          found = true;\n        }\n        const field = displayNames.fields.get(name);\n        if (!fieldType || fieldType === field?.type) {\n          options.push({\n            value: name,\n            label: name,\n            icon: field ? getFieldTypeIcon(field) : undefined,\n          });\n        }\n      }\n\n      if (baseNameMode !== FieldNamePickerBaseNameMode.ExcludeBaseNames) {\n        for (const name of displayNames.raw) {\n          if (!displayNames.display.has(name)) {\n            if (!found && name === currentName) {\n              found = true;\n            }\n            options.push({\n              value: name,\n              label: `${name} (base field name)`,\n            });\n          }\n        }\n      }\n    }\n\n    if (currentName && !found) {\n      options.push({\n        value: currentName,\n        label: `${currentName} (not found)`,\n      });\n    }\n    return options;\n  }, [displayNames, currentName, firstItem, fieldType, baseNameMode]);\n}\n","import { memo, useCallback } from 'react';\n\nimport { FieldMatcherID, fieldMatchers, SelectableValue } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { Select } from '../Select/Select';\n\nimport { MatcherUIProps, FieldMatcherUIRegistryItem } from './types';\nimport { useFieldDisplayNames, useSelectOptions, frameHasName } from './utils';\n\nexport const FieldNameMatcherEditor = memo<MatcherUIProps<string>>((props) => {\n  const { data, options, onChange: onChangeFromProps, id } = props;\n  const names = useFieldDisplayNames(data);\n  const selectOptions = useSelectOptions(names, options);\n\n  const onChange = useCallback(\n    (selection: SelectableValue<string>) => {\n      if (!frameHasName(selection.value, names)) {\n        return;\n      }\n      return onChangeFromProps(selection.value!);\n    },\n    [names, onChangeFromProps]\n  );\n\n  const selectedOption = selectOptions.find((v) => v.value === options);\n  return <Select value={selectedOption} options={selectOptions} onChange={onChange} inputId={id} />;\n});\nFieldNameMatcherEditor.displayName = 'FieldNameMatcherEditor';\n\nexport const getFieldNameMatcherItem: () => FieldMatcherUIRegistryItem<string> = () => ({\n  id: FieldMatcherID.byName,\n  component: FieldNameMatcherEditor,\n  matcher: fieldMatchers.get(FieldMatcherID.byName),\n  name: t('grafana-ui.matchers-ui.name-fields-with-name', 'Fields with name'),\n  description: t('grafana-ui.matchers-ui.description-fields-with-name', 'Set properties for a specific field'),\n  optionsToLabel: (options) => options,\n});\n","import { memo, useCallback } from 'react';\n\nimport { FieldMatcherID, fieldMatchers, SelectableValue, ByNamesMatcherOptions } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { Input } from '../Input/Input';\nimport { MultiSelect } from '../Select/Select';\n\nimport { MatcherUIProps, FieldMatcherUIRegistryItem } from './types';\nimport { useFieldDisplayNames, useSelectOptions, frameHasName } from './utils';\n\nexport const FieldNamesMatcherEditor = memo<MatcherUIProps<ByNamesMatcherOptions>>((props) => {\n  const { data, options, onChange: onChangeFromProps } = props;\n  const { readOnly, prefix } = options;\n  const names = useFieldDisplayNames(data);\n  const selectOptions = useSelectOptions(names, undefined);\n\n  const onChange = useCallback(\n    (selections: Array<SelectableValue<string>>) => {\n      if (!Array.isArray(selections)) {\n        return;\n      }\n\n      return onChangeFromProps({\n        ...options,\n        names: selections.reduce((all: string[], current) => {\n          if (!frameHasName(current.value, names)) {\n            return all;\n          }\n          all.push(current.value!);\n          return all;\n        }, []),\n      });\n    },\n    [names, onChangeFromProps, options]\n  );\n\n  if (readOnly) {\n    const displayNames = (options.names ?? []).join(', ');\n    return <Input value={displayNames} readOnly={true} disabled={true} prefix={prefix} />;\n  }\n\n  return <MultiSelect value={options.names} options={selectOptions} onChange={onChange} />;\n});\nFieldNamesMatcherEditor.displayName = 'FieldNameMatcherEditor';\n\nexport const getFieldNamesMatcherItem: () => FieldMatcherUIRegistryItem<ByNamesMatcherOptions> = () => ({\n  id: FieldMatcherID.byNames,\n  component: FieldNamesMatcherEditor,\n  matcher: fieldMatchers.get(FieldMatcherID.byNames),\n  name: t('grafana-ui.matchers-ui.name-fields-with-name', 'Fields with name'),\n  description: t('grafana-ui.matchers-ui.description-fields-with-name', 'Set properties for a specific field'),\n  optionsToLabel: (options) => (options.names ?? []).join(', '),\n  excludeFromPicker: true,\n});\n","import { memo, useMemo, useCallback } from 'react';\n\nimport { FieldMatcherID, fieldMatchers, SelectableValue, FieldType, DataFrame } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { getFieldTypeIconName } from '../../types/icon';\nimport { Select } from '../Select/Select';\n\nimport { MatcherUIProps, FieldMatcherUIRegistryItem } from './types';\n\nexport const FieldTypeMatcherEditor = memo<MatcherUIProps<string>>((props) => {\n  const { data, options, onChange: onChangeFromProps, id } = props;\n  const counts = useFieldCounts(data);\n  const selectOptions = useSelectOptions(counts, options);\n\n  const onChange = useCallback(\n    (selection: SelectableValue<string>) => {\n      return onChangeFromProps(selection.value!);\n    },\n    [onChangeFromProps]\n  );\n\n  const selectedOption = selectOptions.find((v) => v.value === options);\n  return <Select inputId={id} value={selectedOption} options={selectOptions} onChange={onChange} />;\n});\nFieldTypeMatcherEditor.displayName = 'FieldTypeMatcherEditor';\n\n// Select options for all field types.\n// This is not eported to the published package, but used internally\nexport const getAllFieldTypeIconOptions: () => Array<SelectableValue<FieldType>> = () => [\n  {\n    value: FieldType.number,\n    label: t('grafana-ui.matchers-ui.get-all-field-type-icon-options.label-number', 'Number'),\n    icon: getFieldTypeIconName(FieldType.number),\n  },\n  {\n    value: FieldType.string,\n    label: t('grafana-ui.matchers-ui.get-all-field-type-icon-options.label-string', 'String'),\n    icon: getFieldTypeIconName(FieldType.string),\n  },\n  {\n    value: FieldType.time,\n    label: t('grafana-ui.matchers-ui.get-all-field-type-icon-options.label-time', 'Time'),\n    icon: getFieldTypeIconName(FieldType.time),\n  },\n  {\n    value: FieldType.boolean,\n    label: t('grafana-ui.matchers-ui.get-all-field-type-icon-options.label-boolean', 'Boolean'),\n    icon: getFieldTypeIconName(FieldType.boolean),\n  },\n  {\n    value: FieldType.trace,\n    label: t('grafana-ui.matchers-ui.get-all-field-type-icon-options.label-traces', 'Traces'),\n    icon: getFieldTypeIconName(FieldType.trace),\n  },\n  {\n    value: FieldType.enum,\n    label: t('grafana-ui.matchers-ui.get-all-field-type-icon-options.label-enum', 'Enum'),\n    icon: getFieldTypeIconName(FieldType.enum),\n  },\n  {\n    value: FieldType.other,\n    label: t('grafana-ui.matchers-ui.get-all-field-type-icon-options.label-other', 'Other'),\n    icon: getFieldTypeIconName(FieldType.other),\n  },\n];\n\nconst useFieldCounts = (data: DataFrame[]): Map<FieldType, number> => {\n  return useMemo(() => {\n    const counts: Map<FieldType, number> = new Map();\n    for (const t of getAllFieldTypeIconOptions()) {\n      counts.set(t.value!, 0);\n    }\n    for (const frame of data) {\n      for (const field of frame.fields) {\n        const key = field.type || FieldType.other;\n        let v = counts.get(key);\n        if (!v) {\n          v = 0;\n        }\n        counts.set(key, v + 1);\n      }\n    }\n    return counts;\n  }, [data]);\n};\n\nconst useSelectOptions = (counts: Map<string, number>, opt?: string): Array<SelectableValue<string>> => {\n  return useMemo(() => {\n    let found = false;\n    const options: Array<SelectableValue<string>> = [];\n    for (const t of getAllFieldTypeIconOptions()) {\n      const count = counts.get(t.value!);\n      const match = opt === t.value;\n      if (count || match) {\n        options.push({\n          ...t,\n          label: `${t.label} (${counts.get(t.value!)})`,\n        });\n      }\n      if (match) {\n        found = true;\n      }\n    }\n    if (opt && !found) {\n      options.push({\n        value: opt,\n        label: `${opt} (No matches)`,\n      });\n    }\n    return options;\n  }, [counts, opt]);\n};\n\nexport const getFieldTypeMatcherItem: () => FieldMatcherUIRegistryItem<string> = () => ({\n  id: FieldMatcherID.byType,\n  component: FieldTypeMatcherEditor,\n  matcher: fieldMatchers.get(FieldMatcherID.byType),\n  name: t('grafana-ui.matchers-ui.name-fields-with-type', 'Fields with type'),\n  description: t(\n    'grafana-ui.matchers-ui.description-fields-with-type',\n    'Set properties for fields of a specific type (number, string, boolean)'\n  ),\n  optionsToLabel: (options) => options,\n});\n","import { css } from '@emotion/css';\nimport { useMemo, useCallback } from 'react';\nimport * as React from 'react';\n\nimport {\n  FieldMatcherID,\n  fieldMatchers,\n  FieldValueMatcherConfig,\n  fieldReducers,\n  ReducerID,\n  SelectableValue,\n  GrafanaTheme2,\n} from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { ComparisonOperation } from '@grafana/schema';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Input } from '../Input/Input';\nimport { Select } from '../Select/Select';\n\nimport { MatcherUIProps, FieldMatcherUIRegistryItem } from './types';\n\ntype Props = MatcherUIProps<FieldValueMatcherConfig>;\n\nexport const comparisonOperationOptions = [\n  { label: '==', value: ComparisonOperation.EQ },\n  { label: '!=', value: ComparisonOperation.NEQ },\n  { label: '>', value: ComparisonOperation.GT },\n  { label: '>=', value: ComparisonOperation.GTE },\n  { label: '<', value: ComparisonOperation.LT },\n  { label: '<=', value: ComparisonOperation.LTE },\n];\n\n// This should move to a utility function on the reducer registry\nfunction isBooleanReducer(r: ReducerID) {\n  return r === ReducerID.allIsNull || r === ReducerID.allIsZero;\n}\n\nexport const FieldValueMatcherEditor = ({ options, onChange }: Props) => {\n  const styles = useStyles2(getStyles);\n  const reducer = useMemo(() => fieldReducers.selectOptions([options?.reducer]), [options?.reducer]);\n\n  const onSetReducer = useCallback(\n    (selection: SelectableValue<string>) => {\n      return onChange({ ...options, reducer: selection.value! as ReducerID });\n    },\n    [options, onChange]\n  );\n\n  const onChangeOp = useCallback(\n    (v: SelectableValue<ComparisonOperation>) => {\n      return onChange({ ...options, op: v.value! });\n    },\n    [options, onChange]\n  );\n\n  const onChangeValue = useCallback(\n    (e: React.FormEvent<HTMLInputElement>) => {\n      const value = e.currentTarget.valueAsNumber;\n      return onChange({ ...options, value });\n    },\n    [options, onChange]\n  );\n\n  const opts = options ?? {};\n  const isBool = isBooleanReducer(opts.reducer);\n\n  return (\n    <div className={styles.spot}>\n      <Select\n        value={reducer.current}\n        options={reducer.options}\n        onChange={onSetReducer}\n        placeholder={t('grafana-ui.field-value-matcher.select-field-placeholder', 'Select field reducer')}\n      />\n      {opts.reducer && !isBool && (\n        <>\n          <Select\n            value={comparisonOperationOptions.find((v) => v.value === opts.op)}\n            options={comparisonOperationOptions}\n            onChange={onChangeOp}\n            aria-label={t('grafana-ui.field-value-matcher.operator-label', 'Comparison operator')}\n            width={19}\n          />\n\n          <Input type=\"number\" value={opts.value} onChange={onChangeValue} />\n        </>\n      )}\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    spot: css({\n      display: 'flex',\n      flexDirection: 'row',\n      alignItems: 'center',\n      alignContent: 'flex-end',\n      gap: '4px',\n    }),\n  };\n};\n\nexport const getFieldValueMatcherItem: () => FieldMatcherUIRegistryItem<FieldValueMatcherConfig> = () => ({\n  id: FieldMatcherID.byValue,\n  component: FieldValueMatcherEditor,\n  matcher: fieldMatchers.get(FieldMatcherID.byValue),\n  name: t('grafana-ui.matchers-ui.name-fields-with-value', 'Fields with values'),\n  description: t(\n    'grafana-ui.matchers-ui.description-fields-with-value',\n    'Set properties for fields with reducer condition'\n  ),\n  optionsToLabel: (options) => `${options?.reducer} ${options?.op} ${options?.value}`,\n});\n","import { useMemo, useState, useCallback } from 'react';\n\nimport {\n  DataFrame,\n  getFrameDisplayName,\n  FieldMatcherID,\n  fieldMatchers,\n  SelectableValue,\n  toOption,\n} from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { MultiSelect, Select } from '../Select/Select';\n\nimport { FieldMatcherUIRegistryItem, MatcherUIProps } from './types';\n\nconst recoverRefIdMissing = (\n  newRefIds: SelectableValue[],\n  oldRefIds: SelectableValue[],\n  previousValue: string | undefined\n): SelectableValue | undefined => {\n  if (!previousValue) {\n    return;\n  }\n  // Previously selected value is missing from the new list.\n  // Find the value that is in the new list but isn't in the old list\n  let changedTo = newRefIds.find((refId) => {\n    return !oldRefIds.some((refId2) => {\n      return refId === refId2;\n    });\n  });\n  if (changedTo) {\n    // Found the new value, we assume the old value changed to this one, so we'll use it\n    return changedTo;\n  }\n  return;\n};\n\nexport interface Props {\n  value?: string; // refID\n  data: DataFrame[];\n  onChange: (value: string) => void;\n  placeholder?: string;\n  id?: string;\n}\n\n// Not exported globally... but used in grafana core\nexport function RefIDPicker({ value, data, onChange, placeholder, id }: Props) {\n  const listOfRefIds = useMemo(() => getListOfQueryRefIds(data), [data]);\n\n  const [priorSelectionState, updatePriorSelectionState] = useState<{\n    refIds: SelectableValue[];\n    value: string | undefined;\n  }>({\n    refIds: [],\n    value: undefined,\n  });\n\n  const currentValue = useMemo(() => {\n    return (\n      listOfRefIds.find((refId) => refId.value === value) ??\n      recoverRefIdMissing(listOfRefIds, priorSelectionState.refIds, priorSelectionState.value)\n    );\n  }, [value, listOfRefIds, priorSelectionState]);\n\n  const onFilterChange = useCallback(\n    (v: SelectableValue<string>) => {\n      onChange(v?.value!);\n    },\n    [onChange]\n  );\n\n  if (listOfRefIds !== priorSelectionState.refIds || currentValue?.value !== priorSelectionState.value) {\n    updatePriorSelectionState({\n      refIds: listOfRefIds,\n      value: currentValue?.value,\n    });\n  }\n  return (\n    <Select\n      inputId={id}\n      options={listOfRefIds}\n      onChange={onFilterChange}\n      isClearable={true}\n      placeholder={placeholder ?? 'Select query refId'}\n      value={currentValue}\n    />\n  );\n}\n\nconst recoverMultiRefIdMissing = (\n  newRefIds: Array<SelectableValue<string>>,\n  oldRefIds: Array<SelectableValue<string>>,\n  previousValue: Array<SelectableValue<string>> | undefined\n): Array<SelectableValue<string>> | undefined => {\n  if (!previousValue || !previousValue.length) {\n    return;\n  }\n  // Previously selected value is missing from the new list.\n  // Find the value that is in the new list but isn't in the old list\n  const changedTo = newRefIds.filter((newRefId) => {\n    return oldRefIds.some((oldRefId) => {\n      return newRefId === oldRefId;\n    });\n  });\n\n  if (changedTo.length) {\n    // Found the new value, we assume the old value changed to this one, so we'll use it\n    return changedTo;\n  }\n  return;\n};\n\nexport interface MultiProps {\n  value?: string; // 1 or more refID in reqExp format /A|B|C/\n  data: DataFrame[];\n  onChange: (value: string[]) => void;\n  placeholder?: string;\n  id?: string;\n}\n\nexport function RefIDMultiPicker({ value, data, onChange, placeholder, id }: MultiProps) {\n  const listOfRefIds = useMemo(() => getListOfQueryRefIds(data), [data]);\n\n  const [priorSelectionState, updatePriorSelectionState] = useState<{\n    refIds: SelectableValue[];\n    value: Array<SelectableValue<string>> | undefined;\n  }>({\n    refIds: [],\n    value: undefined,\n  });\n\n  const currentValue = useMemo(() => {\n    let extractedRefIds = new Set<string>();\n    if (value) {\n      if (value.startsWith('/^')) {\n        try {\n          extractedRefIds = new Set(regexpToStrings(value));\n        } catch {\n          extractedRefIds.add(value);\n        }\n      } else if (value.includes('|')) {\n        // old format that was simply unescaped pipe-joined strings -> regexp\n        extractedRefIds = new Set(value.split('|'));\n      } else {\n        extractedRefIds.add(value);\n      }\n    }\n\n    const matchedRefIds = listOfRefIds.filter((refId) => extractedRefIds.has(refId.value || ''));\n\n    if (matchedRefIds.length) {\n      return matchedRefIds;\n    }\n\n    const newRefIds = [...extractedRefIds].map(toOption);\n    const recoveredRefIDs =\n      recoverMultiRefIdMissing(newRefIds, priorSelectionState.refIds, priorSelectionState.value) ?? [];\n\n    return recoveredRefIDs.length > 0 ? recoveredRefIDs : newRefIds.length > 0 ? newRefIds : undefined;\n  }, [value, listOfRefIds, priorSelectionState]);\n\n  const onFilterChange = useCallback(\n    (v: Array<SelectableValue<string>>) => {\n      onChange(v.map((v) => v.value!));\n    },\n    [onChange]\n  );\n\n  if (listOfRefIds !== priorSelectionState.refIds || currentValue?.length !== priorSelectionState.value?.length) {\n    updatePriorSelectionState({\n      refIds: listOfRefIds,\n      value: currentValue,\n    });\n  }\n  return (\n    <MultiSelect\n      inputId={id}\n      options={listOfRefIds}\n      onChange={onFilterChange}\n      isClearable={true}\n      placeholder={placeholder ?? 'Select query refId'}\n      value={currentValue}\n    />\n  );\n}\n\nfunction getListOfQueryRefIds(data: DataFrame[]): Array<SelectableValue<string>> {\n  const queries = new Map<string, DataFrame[]>();\n\n  for (const frame of data) {\n    const refId = frame.refId ?? '';\n    const frames = queries.get(refId) ?? [];\n\n    if (frames.length === 0) {\n      queries.set(refId, frames);\n    }\n\n    frames.push(frame);\n  }\n\n  const values: Array<SelectableValue<string>> = [];\n\n  for (const [refId, frames] of queries.entries()) {\n    values.push({\n      value: refId,\n      label: refId\n        ? t('grafana-ui.matchers-ui.get-list-of-query-ref-ids.label', 'Query: {{refId}}', { refId })\n        : t('grafana-ui.matchers-ui.get-list-of-query-ref-ids.label-missing-ref-id', 'Query: (missing refId)'),\n      description: getFramesDescription(frames),\n    });\n  }\n\n  return values;\n}\n\nfunction getFramesDescription(frames: DataFrame[]): string {\n  return t(\n    'grafana-ui.matchers-ui.get-list-of-query-ref-ids.description',\n    'Frames ({{framesCount}}): {{framesNames}}',\n    {\n      framesCount: frames.length,\n      framesNames: `${frames\n        .slice(0, Math.min(3, frames.length))\n        .map((x) => getFrameDisplayName(x))\n        .join(', ')} ${frames.length > 3 ? '...' : ''}`,\n    }\n  );\n}\n\n/**\n * Registry item for UI to configure \"fields by frame refId\"-matcher.\n */\nexport const getFieldsByFrameRefIdItem: () => FieldMatcherUIRegistryItem<string> = () => ({\n  id: FieldMatcherID.byFrameRefID,\n  component: (props: MatcherUIProps<string>) => {\n    return <RefIDPicker value={props.options} data={props.data} onChange={props.onChange} />;\n  },\n  matcher: fieldMatchers.get(FieldMatcherID.byFrameRefID),\n  name: t('grafana-ui.matchers-ui.name-fields-by-query', 'Fields returned by query'),\n  description: t(\n    'grafana-ui.matchers-ui.description-fields-by-query',\n    'Set properties for fields from a specific query'\n  ),\n  optionsToLabel: (options) => options,\n});\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions#escaping\nfunction escapeRegExp(string: string) {\n  return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\n\n// funcs below will parse/unparse a regexp like /^(?:foo|bar)$/ -> [\"foo\", \"bar\"]\n\n/** @internal */\nexport const regexpToStrings = (regexp: string) => {\n  return (\n    regexp\n      // strip /^(?:)$/ wrapper\n      .slice(5, -3)\n      // split on unescaped |\n      .split(/(?<!\\\\)\\|/g)\n      // unescape remaining escaped chars\n      .map((string) => string.replace(/\\\\(.)/g, '$1'))\n  );\n};\n\n/** @internal */\nexport const stringsToRegexp = (strings: string[]) => {\n  return `/^(?:${strings.map((string) => escapeRegExp(string)).join('|')})$/`;\n};\n","import { Registry } from '@grafana/data';\n\nimport { getFieldNameByRegexMatcherItem } from './FieldNameByRegexMatcherEditor';\nimport { getFieldNameMatcherItem } from './FieldNameMatcherEditor';\nimport { getFieldNamesMatcherItem } from './FieldNamesMatcherEditor';\nimport { getFieldTypeMatcherItem } from './FieldTypeMatcherEditor';\nimport { getFieldValueMatcherItem } from './FieldValueMatcher';\nimport { getFieldsByFrameRefIdItem } from './FieldsByFrameRefIdMatcher';\nimport { FieldMatcherUIRegistryItem } from './types';\n\nexport const fieldMatchersUI = new Registry<FieldMatcherUIRegistryItem<any>>(() => [\n  getFieldNameMatcherItem(),\n  getFieldNameByRegexMatcherItem(),\n  getFieldTypeMatcherItem(),\n  getFieldsByFrameRefIdItem(),\n  getFieldNamesMatcherItem(),\n  getFieldValueMatcherItem(),\n]);\n","import { css } from '@emotion/css';\nimport { forwardRef, HTMLAttributes } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, ThemeSpacingTokens } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { AlignItems } from '../types';\nimport { getResponsiveStyle, ResponsiveProp } from '../utils/responsiveness';\n\ninterface GridPropsBase extends Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style'> {\n  children: NonNullable<React.ReactNode>;\n  /** Specifies the gutters between columns and rows. It is overwritten when a column or row gap has a value. */\n  gap?: ResponsiveProp<ThemeSpacingTokens>;\n  rowGap?: ResponsiveProp<ThemeSpacingTokens>;\n  columnGap?: ResponsiveProp<ThemeSpacingTokens>;\n  alignItems?: ResponsiveProp<AlignItems>;\n}\n\ninterface PropsWithColumns extends GridPropsBase {\n  /** Number of columns */\n  columns?: ResponsiveProp<1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12>;\n  minColumnWidth?: never;\n}\n\ninterface PropsWithMinColumnWidth extends GridPropsBase {\n  columns?: never;\n  /** For a responsive layout, fit as many columns while maintaining this minimum column width.\n   *  The real width will be calculated based on the theme spacing tokens: `theme.spacing(minColumnWidth)`\n   */\n  minColumnWidth?: ResponsiveProp<1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 44 | 55 | 72 | 89 | 144>;\n}\n\n/** 'columns' and 'minColumnWidth' are mutually exclusive */\ntype GridProps = PropsWithColumns | PropsWithMinColumnWidth;\n\nexport const Grid = forwardRef<HTMLDivElement, GridProps>((props, ref) => {\n  const { alignItems, children, gap, rowGap, columnGap, columns, minColumnWidth, ...rest } = props;\n  const styles = useStyles2(getGridStyles, gap, rowGap, columnGap, columns, minColumnWidth, alignItems);\n\n  return (\n    <div ref={ref} {...rest} className={styles.grid}>\n      {children}\n    </div>\n  );\n});\n\nGrid.displayName = 'Grid';\n\nconst getGridStyles = (\n  theme: GrafanaTheme2,\n  gap: GridProps['gap'],\n  rowGap: GridProps['rowGap'],\n  columnGap: GridProps['columnGap'],\n  columns: GridProps['columns'],\n  minColumnWidth: GridProps['minColumnWidth'],\n  alignItems: GridProps['alignItems']\n) => {\n  return {\n    grid: css([\n      { display: 'grid' },\n      getResponsiveStyle(theme, gap, (val) => ({\n        gap: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, rowGap, (val) => ({\n        rowGap: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, columnGap, (val) => ({\n        columnGap: theme.spacing(val),\n      })),\n      minColumnWidth &&\n        getResponsiveStyle(theme, minColumnWidth, (val) => ({\n          gridTemplateColumns: `repeat(auto-fill, minmax(${theme.spacing(val)}, 1fr))`,\n        })),\n      columns &&\n        getResponsiveStyle(theme, columns, (val) => ({\n          gridTemplateColumns: `repeat(${val}, 1fr)`,\n        })),\n      getResponsiveStyle(theme, alignItems, (val) => ({\n        alignItems: val,\n      })),\n    ]),\n  };\n};\n","import { ThemeSpacingTokens } from '@grafana/data';\n\nimport { Box } from './Box/Box';\nimport { ResponsiveProp } from './utils/responsiveness';\n\nexport interface SpaceProps {\n  /**\n   * The amount of vertical space to use.\n   */\n  v?: ResponsiveProp<ThemeSpacingTokens>;\n  /**\n   * The amount of horizontal space to use.\n   */\n  h?: ResponsiveProp<ThemeSpacingTokens>;\n  /**\n   * The layout of the space. If set to `inline`, the component will behave like an inline-block element,\n   * otherwise it will behave like a block element.\n   */\n  layout?: 'block' | 'inline';\n}\n\nexport const Space = ({ v = 0, h = 0, layout }: SpaceProps) => {\n  return <Box paddingRight={h} paddingBottom={v} display={layout === 'inline' ? 'inline-block' : 'block'} />;\n};\n","import { cx, css } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nexport interface Props {\n  grow?: boolean;\n  className?: string;\n}\n\n/** @beta */\nexport const InlineSegmentGroup = ({ children, className, grow, ...htmlProps }: React.PropsWithChildren<Props>) => {\n  const styles = useStyles2(getStyles, grow);\n\n  return (\n    <div className={cx(styles.container, className)} {...htmlProps}>\n      {children}\n    </div>\n  );\n};\n\nInlineSegmentGroup.displayName = 'InlineSegmentGroup';\n\nconst getStyles = (theme: GrafanaTheme2, grow?: boolean) => {\n  return {\n    container: css({\n      display: 'flex',\n      flexDirection: 'row',\n      alignItems: 'flex-start',\n      textAlign: 'left',\n      position: 'relative',\n      flex: `${grow ? 1 : 0} 0 auto`,\n      marginBottom: theme.spacing(0.5),\n    }),\n  };\n};\n","import { FC } from 'react';\nimport { useFieldArray, UseFieldArrayProps } from 'react-hook-form';\n\nimport { FieldArrayApi } from '../../types/forms';\n\nexport interface FieldArrayProps extends UseFieldArrayProps {\n  children: (api: FieldArrayApi) => JSX.Element;\n}\n\n/**\n * @deprecated use the `useFieldArray` hook from react-hook-form instead\n */\nexport const FieldArray: FC<FieldArrayProps> = ({ name, control, children, ...rest }) => {\n  const { fields, append, prepend, remove, swap, move, insert } = useFieldArray({\n    control,\n    name,\n    ...rest,\n  });\n  return children({ fields, append, prepend, remove, swap, move, insert });\n};\n","import { css } from '@emotion/css';\nimport { forwardRef } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { IconButton } from '../IconButton/IconButton';\n\ninterface ValuePillProps {\n  children: string;\n  onRemove: () => void;\n  disabled?: boolean;\n}\n\nexport const ValuePill = forwardRef<HTMLSpanElement, ValuePillProps>(\n  ({ children, onRemove, disabled, ...rest }, ref) => {\n    const styles = useStyles2(getValuePillStyles, disabled);\n    const removeButtonLabel = t('grafana-ui.value-pill.remove-button', 'Remove {{children}}', { children });\n    return (\n      <span className={styles.wrapper} {...rest} ref={ref}>\n        <span className={styles.text}>{children}</span>\n        {!disabled && (\n          <>\n            <span className={styles.separator} />\n            <IconButton\n              name=\"times\"\n              size=\"md\"\n              aria-label={removeButtonLabel}\n              onClick={(e) => {\n                e.stopPropagation();\n                onRemove();\n              }}\n            />\n          </>\n        )}\n      </span>\n    );\n  }\n);\nValuePill.displayName = 'ValuePill';\n\nconst getValuePillStyles = (theme: GrafanaTheme2, disabled?: boolean) => ({\n  wrapper: css({\n    display: 'inline-flex',\n    borderRadius: theme.shape.radius.default,\n    color: theme.colors.text.primary,\n    background: theme.colors.background.secondary,\n    padding: theme.spacing(0.25),\n    border: disabled ? `1px solid ${theme.colors.border.weak}` : 'none',\n    fontSize: theme.typography.bodySmall.fontSize,\n    flexShrink: 0,\n    minWidth: '50px',\n    alignItems: 'center',\n\n    '&:first-child:has(+ div)': {\n      flexShrink: 1,\n    },\n  }),\n\n  text: css({\n    whiteSpace: 'nowrap',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    padding: theme.spacing(0, 1, 0, 0.75),\n  }),\n\n  separator: css({\n    background: theme.colors.border.weak,\n    width: '2px',\n    height: '100%',\n    marginRight: theme.spacing(0.5),\n  }),\n});\n","import { css, cx } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { getFocusStyles } from '../../themes/mixins';\nimport { getInputStyles } from '../Input/Input';\n\nexport const getMultiComboboxStyles = (\n  theme: GrafanaTheme2,\n  isOpen: boolean,\n  invalid?: boolean,\n  disabled?: boolean,\n  width?: number | 'auto',\n  minWidth?: number,\n  maxWidth?: number,\n  isClearable?: boolean\n) => {\n  const inputStyles = getInputStyles({ theme, invalid });\n  const focusStyles = getFocusStyles(theme);\n\n  const wrapperWidth = width && width !== 'auto' ? theme.spacing(width) : '100%';\n  const wrapperMinWidth = minWidth ? theme.spacing(minWidth) : '';\n  const wrapperMaxWidth = maxWidth ? theme.spacing(maxWidth) : '';\n\n  return {\n    container: css({\n      width: width === 'auto' ? 'auto' : wrapperWidth,\n      minWidth: wrapperMinWidth,\n      maxWidth: wrapperMaxWidth,\n      display: width === 'auto' ? 'inline-block' : 'block',\n    }), // wraps everything\n    wrapper: cx(\n      inputStyles.input,\n      css({\n        display: 'flex',\n        width: '100%',\n        gap: theme.spacing(0.5),\n        padding: theme.spacing(0.5),\n        paddingRight: isClearable ? theme.spacing(5) : 28, // Account for suffix\n        '&:focus-within': {\n          ...focusStyles,\n        },\n      })\n    ),\n    input: css({\n      border: 'none',\n      outline: 'none',\n      background: 'transparent',\n      flexGrow: 1,\n      maxWidth: '100%',\n      minWidth: 40, // This is a bit arbitrary, but is used to leave some space for clicking. This will override the minWidth property\n      '&::placeholder': {\n        color: theme.colors.text.disabled,\n      },\n      '&:focus': {\n        outline: 'none',\n        cursor: 'text',\n      },\n      cursor: 'pointer',\n    }),\n\n    pillWrapper: css({\n      display: 'inline-flex',\n      flexWrap: isOpen ? 'wrap' : 'nowrap',\n      flexGrow: 1,\n      minWidth: '50px',\n      gap: theme.spacing(0.5),\n    }),\n    restNumber: css({\n      display: 'inline-flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n      padding: theme.spacing(0, 1),\n      border: disabled ? `1px solid ${theme.colors.border.weak}` : 'none',\n      borderRadius: theme.shape.radius.default,\n      backgroundColor: theme.colors.background.secondary,\n      cursor: 'pointer',\n      '&:hover': {\n        backgroundColor: theme.colors.action.hover,\n      },\n    }),\n    suffix: inputStyles.suffix,\n    disabled: inputStyles.inputDisabled,\n  };\n};\n","import { useEffect, useState } from 'react';\nimport { useMeasure } from 'react-use';\n\nimport { measureText } from '../../utils/measureText';\n\nimport { ComboboxOption } from './types';\n\nconst FONT_SIZE = 12;\nconst EXTRA_PILL_SIZE = 50;\nconst EXTRA_PILL_DISABLED_SIZE = 10;\nexport const MAX_SHOWN_ITEMS = 15;\n\n/**\n * Updates the number of shown items in the multi combobox based on the available width.\n */\nexport function useMeasureMulti<T extends string | number>(\n  selectedItems: Array<ComboboxOption<T>>,\n  width?: number | 'auto',\n  disabled?: boolean\n) {\n  const [shownItems, setShownItems] = useState<number>(selectedItems.length);\n  const [measureRef, { width: containerWidth }] = useMeasure<HTMLDivElement>();\n  const [counterMeasureRef, { width: counterWidth }] = useMeasure<HTMLDivElement>();\n  const [suffixMeasureRef, { width: suffixWidth }] = useMeasure<HTMLDivElement>();\n\n  const finalWidth = width && width !== 'auto' ? width : containerWidth;\n\n  useEffect(() => {\n    const maxWidth = finalWidth - counterWidth - suffixWidth;\n    let currWidth = 0;\n    for (let i = 0; i < selectedItems.length; i++) {\n      // Measure text width and add size of padding, separator and close button\n      currWidth +=\n        measureText(selectedItems[i].label || '', FONT_SIZE).width +\n        (disabled ? EXTRA_PILL_DISABLED_SIZE : EXTRA_PILL_SIZE);\n      if (currWidth > maxWidth) {\n        // If there is no space for that item, show the current number of items,\n        // but always show at least 1 item. Cap at maximum number of items.\n        setShownItems(Math.min(i, MAX_SHOWN_ITEMS) || 1);\n        break;\n      }\n      if (i === selectedItems.length - 1) {\n        // If it is the last item, show all items\n        setShownItems(selectedItems.length);\n      }\n    }\n  }, [finalWidth, counterWidth, suffixWidth, selectedItems, setShownItems, disabled]);\n\n  return { measureRef, counterMeasureRef, suffixMeasureRef, shownItems };\n}\n","import { useLayoutEffect, useRef, useState } from 'react';\n\nimport { measureText } from '../../utils/measureText';\n\nexport function useMultiInputAutoSize(inputValue: string) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const initialInputWidth = useRef<number>(0); // Store initial width to prevent resizing on backspace\n  const [inputWidth, setInputWidth] = useState<string>('');\n\n  useLayoutEffect(() => {\n    if (inputRef.current && inputValue == null && initialInputWidth.current === 0) {\n      initialInputWidth.current = inputRef?.current.getBoundingClientRect().width;\n    }\n\n    if (!inputRef.current || inputValue == null) {\n      setInputWidth('');\n      return;\n    }\n\n    const fontSize = window.getComputedStyle(inputRef.current).fontSize;\n    const textWidth = measureText(inputRef.current.value || '', parseInt(fontSize, 10)).width;\n\n    if (textWidth < initialInputWidth.current) {\n      // Let input fill all space before resizing\n      setInputWidth('');\n    } else {\n      // Add pixels to prevent clipping\n      setInputWidth(`${textWidth + 5}px`);\n    }\n  }, [inputValue]);\n\n  return { inputRef, inputWidth };\n}\n","import { cx } from '@emotion/css';\nimport { useCombobox, useMultipleSelection } from 'downshift';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\nimport { Box } from '../Layout/Box/Box';\nimport { Portal } from '../Portal/Portal';\nimport { Text } from '../Text/Text';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\nimport { ComboboxBaseProps, AutoSizeConditionals } from './Combobox';\nimport { ComboboxList } from './ComboboxList';\nimport { SuffixIcon } from './SuffixIcon';\nimport { ValuePill } from './ValuePill';\nimport { itemToString } from './filter';\nimport { getComboboxStyles } from './getComboboxStyles';\nimport { getMultiComboboxStyles } from './getMultiComboboxStyles';\nimport { ALL_OPTION_VALUE, ComboboxOption } from './types';\nimport { useComboboxFloat } from './useComboboxFloat';\nimport { MAX_SHOWN_ITEMS, useMeasureMulti } from './useMeasureMulti';\nimport { useMultiInputAutoSize } from './useMultiInputAutoSize';\nimport { useOptions } from './useOptions';\n\ninterface MultiComboboxBaseProps<T extends string | number>\n  extends Omit<ComboboxBaseProps<T>, 'value' | 'onChange' | 'isClearable'> {\n  value?: T[] | Array<ComboboxOption<T>>;\n  onChange: (option: Array<ComboboxOption<T>>) => void;\n  isClearable?: boolean;\n  enableAllOption?: boolean;\n  portalContainer?: HTMLElement;\n}\n\nexport type MultiComboboxProps<T extends string | number> = MultiComboboxBaseProps<T> & AutoSizeConditionals;\n\nexport const MultiCombobox = <T extends string | number>(props: MultiComboboxProps<T>) => {\n  const {\n    placeholder,\n    onChange,\n    value,\n    width,\n    enableAllOption,\n    invalid,\n    disabled,\n    minWidth,\n    maxWidth,\n    isClearable,\n    createCustomValue = false,\n    'aria-labelledby': ariaLabelledBy,\n    'data-testid': dataTestId,\n    portalContainer,\n  } = props;\n\n  const styles = useStyles2(getComboboxStyles);\n  const [inputValue, setInputValue] = useState('');\n\n  const allOptionItem = useMemo(() => {\n    return {\n      label:\n        inputValue === ''\n          ? t('multicombobox.all.title', 'All')\n          : t('multicombobox.all.title-filtered', 'All (filtered)'),\n      // Type casting needed to make this work when T is a number\n      value: ALL_OPTION_VALUE,\n    } as ComboboxOption<T>;\n  }, [inputValue]);\n\n  // Handle async options and the 'All' option\n  const {\n    options: baseOptions,\n    updateOptions,\n    asyncLoading,\n    asyncError,\n  } = useOptions(props.options, createCustomValue);\n  const options = useMemo(() => {\n    // Only add the 'All' option if there's more than 1 option\n    const addAllOption = enableAllOption && baseOptions.length > 1;\n    return addAllOption ? [allOptionItem, ...baseOptions] : baseOptions;\n  }, [baseOptions, enableAllOption, allOptionItem]);\n  const loading = props.loading || asyncLoading;\n\n  const selectedItems = useMemo(() => {\n    if (!value) {\n      return [];\n    }\n\n    return getSelectedItemsFromValue<T>(value, typeof props.options !== 'function' ? props.options : baseOptions);\n  }, [value, props.options, baseOptions]);\n\n  const { measureRef, counterMeasureRef, suffixMeasureRef, shownItems } = useMeasureMulti(\n    selectedItems,\n    width,\n    disabled\n  );\n\n  const isOptionSelected = useCallback(\n    (item: ComboboxOption<T>) => selectedItems.some((opt) => opt.value === item.value),\n    [selectedItems]\n  );\n\n  const { getSelectedItemProps, getDropdownProps, setSelectedItems, addSelectedItem, removeSelectedItem, reset } =\n    useMultipleSelection({\n      selectedItems, // initially selected items,\n      onStateChange: ({ type, selectedItems: newSelectedItems }) => {\n        switch (type) {\n          case useMultipleSelection.stateChangeTypes.SelectedItemKeyDownBackspace:\n          case useMultipleSelection.stateChangeTypes.SelectedItemKeyDownDelete:\n          case useMultipleSelection.stateChangeTypes.DropdownKeyDownBackspace:\n          case useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem:\n          case useMultipleSelection.stateChangeTypes.FunctionAddSelectedItem:\n          case useMultipleSelection.stateChangeTypes.FunctionSetSelectedItems:\n          case useMultipleSelection.stateChangeTypes.FunctionReset:\n            // Unclear why newSelectedItems would be undefined, but this seems logical\n            onChange(newSelectedItems ?? []);\n            break;\n\n          default:\n            break;\n        }\n      },\n      stateReducer: (_state, actionAndChanges) => {\n        const { changes } = actionAndChanges;\n        return {\n          ...changes,\n\n          /**\n           * TODO: Fix Hack!\n           * This prevents the menu from closing when the user unselects an item in the dropdown at the expense\n           * of breaking keyboard navigation.\n           *\n           * Downshift isn't really designed to keep selected items in the dropdown menu, so when you unselect an item\n           * in a multiselect, the stateReducer tries to move focus onto another item which causes the menu to be closed.\n           * This only seems to happen when you deselect the last item in the selectedItems list.\n           *\n           * Check out:\n           *  - FunctionRemoveSelectedItem in the useMultipleSelection reducer https://github.com/downshift-js/downshift/blob/master/src/hooks/useMultipleSelection/reducer.js#L75\n           *  - The activeIndex useEffect in useMultipleSelection https://github.com/downshift-js/downshift/blob/master/src/hooks/useMultipleSelection/index.js#L68-L72\n           *\n           * Forcing the activeIndex to -999 both prevents the useEffect that changes the focus from triggering (value never changes)\n           * and prevents the if statement in useMultipleSelection from focusing anything.\n           */\n          activeIndex: -999,\n        };\n      },\n    });\n\n  const {\n    getToggleButtonProps,\n    //getLabelProps,\n    isOpen,\n    highlightedIndex,\n    getMenuProps,\n    getInputProps,\n    getItemProps,\n  } = useCombobox({\n    items: options,\n    itemToString,\n    inputValue,\n    selectedItem: null,\n    stateReducer: (state, actionAndChanges) => {\n      const { type } = actionAndChanges;\n      let { changes } = actionAndChanges;\n      const menuBeingOpened = state.isOpen === false && changes.isOpen === true;\n\n      // Reset the input value when the menu is opened. If the menu is opened due to an input change\n      // then make sure we keep that.\n      // This will trigger onInputValueChange to load async options\n      if (menuBeingOpened && changes.inputValue === state.inputValue) {\n        changes = {\n          ...changes,\n          inputValue: '',\n        };\n      }\n\n      switch (type) {\n        case useCombobox.stateChangeTypes.InputKeyDownEnter:\n        case useCombobox.stateChangeTypes.ItemClick:\n          return {\n            ...changes,\n            isOpen: true,\n            highlightedIndex: state.highlightedIndex,\n          };\n        case useCombobox.stateChangeTypes.InputBlur:\n          setInputValue('');\n        default:\n          return changes;\n      }\n    },\n\n    onIsOpenChange: ({ isOpen, inputValue }) => {\n      if (isOpen && inputValue === '') {\n        updateOptions(inputValue);\n      }\n    },\n\n    onStateChange: ({ inputValue: newInputValue, type, selectedItem: newSelectedItem }) => {\n      switch (type) {\n        case useCombobox.stateChangeTypes.InputKeyDownEnter:\n        case useCombobox.stateChangeTypes.ItemClick:\n          // Don't allow selection of info options\n          if (newSelectedItem?.infoOption) {\n            break;\n          }\n\n          // Handle All functionality\n          if (newSelectedItem?.value === ALL_OPTION_VALUE) {\n            // TODO: fix bug where if the search filtered items list is the\n            // same length, but different, than the selected items (ask tobias)\n            const isAllFilteredSelected = selectedItems.length === options.length - 1;\n\n            // if every option is already selected, clear the selection.\n            // otherwise, select all the options (excluding the first ALL_OPTION and info options)\n            const realOptions = options.slice(1).filter((option) => !option.infoOption);\n            let newSelectedItems = isAllFilteredSelected && inputValue === '' ? [] : realOptions;\n\n            if (!isAllFilteredSelected && inputValue !== '') {\n              newSelectedItems = [...new Set([...selectedItems, ...realOptions])];\n            }\n\n            if (isAllFilteredSelected && inputValue !== '') {\n              // Deselect all currently filtered items\n              const filteredSet = new Set(realOptions.map((item) => item.value));\n              newSelectedItems = selectedItems.filter((item) => !filteredSet.has(item.value));\n            }\n            setSelectedItems(newSelectedItems);\n          } else if (newSelectedItem && isOptionSelected(newSelectedItem)) {\n            // Find the actual selected item object that matches the clicked item by value\n            // This is necessary because the clicked item (from async options) may be a different\n            // object reference than the selected item, and useMultipleSelection uses object equality\n            const itemToRemove = selectedItems.find((item) => item.value === newSelectedItem.value);\n            if (itemToRemove) {\n              removeSelectedItem(itemToRemove);\n            }\n          } else if (newSelectedItem) {\n            addSelectedItem(newSelectedItem);\n          }\n          break;\n        case useCombobox.stateChangeTypes.InputChange:\n          setInputValue(newInputValue ?? '');\n          updateOptions(newInputValue ?? '');\n\n          break;\n        default:\n          break;\n      }\n    },\n  });\n\n  const { inputRef: containerRef, floatingRef, floatStyles, scrollRef } = useComboboxFloat(options, isOpen);\n  const multiStyles = useStyles2(\n    getMultiComboboxStyles,\n    isOpen,\n    invalid,\n    disabled,\n    width,\n    minWidth,\n    maxWidth,\n    isClearable\n  );\n\n  // Selected items that show up in the input field\n  const visibleItems = isOpen ? selectedItems.slice(0, MAX_SHOWN_ITEMS) : selectedItems.slice(0, shownItems);\n\n  const { inputRef, inputWidth } = useMultiInputAutoSize(inputValue);\n  return (\n    <div className={multiStyles.container} ref={containerRef}>\n      <div className={cx(multiStyles.wrapper, { [multiStyles.disabled]: disabled })} ref={measureRef}>\n        <span className={multiStyles.pillWrapper}>\n          {visibleItems.map((item, index) => (\n            <ValuePill\n              disabled={disabled}\n              onRemove={() => {\n                removeSelectedItem(item);\n              }}\n              key={`${item.value}${index}`}\n              {...getSelectedItemProps({ selectedItem: item, index })}\n            >\n              {itemToString(item)}\n            </ValuePill>\n          ))}\n          {selectedItems.length > visibleItems.length && (\n            <Box display=\"flex\" direction=\"row\" marginLeft={0.5} gap={1} ref={counterMeasureRef}>\n              <Text>...</Text>\n              <Tooltip\n                interactive\n                content={\n                  <>\n                    {selectedItems.slice(visibleItems.length).map((item) => (\n                      <div key={item.value}>{itemToString(item)}</div>\n                    ))}\n                  </>\n                }\n              >\n                <div className={multiStyles.restNumber}>{selectedItems.length - shownItems}</div>\n              </Tooltip>\n            </Box>\n          )}\n          <input\n            className={multiStyles.input}\n            {...getInputProps({\n              ...getDropdownProps({\n                disabled,\n                preventKeyAction: isOpen,\n                placeholder: visibleItems.length === 0 ? placeholder : '',\n                ref: inputRef,\n                style: { width: inputWidth },\n              }),\n              'aria-labelledby': ariaLabelledBy, // Label should be handled with the Field component\n              'data-testid': dataTestId,\n            })}\n          />\n\n          <div className={multiStyles.suffix} ref={suffixMeasureRef} {...getToggleButtonProps()}>\n            {isClearable && selectedItems.length > 0 && (\n              <Icon\n                name=\"times\"\n                className={styles.clear}\n                title={t('multicombobox.clear.title', 'Clear all')}\n                tabIndex={0}\n                role=\"button\"\n                onClick={(e) => {\n                  e.stopPropagation();\n                  reset();\n                }}\n                onKeyDown={(e) => {\n                  if (e.key === 'Enter' || e.key === ' ') {\n                    reset();\n                  }\n                }}\n              />\n            )}\n            <SuffixIcon isLoading={loading || false} isOpen={isOpen} />\n          </div>\n        </span>\n      </div>\n      <Portal root={portalContainer}>\n        <div\n          className={cx(styles.menu, !isOpen && styles.menuClosed)}\n          style={{\n            ...floatStyles,\n            width: floatStyles.width + 24, // account for checkbox\n            pointerEvents: 'auto', // Override container's pointer-events: none\n          }}\n          {...getMenuProps({ ref: floatingRef })}\n        >\n          {isOpen && (\n            <ComboboxList\n              options={options}\n              highlightedIndex={highlightedIndex}\n              selectedItems={selectedItems}\n              scrollRef={scrollRef}\n              getItemProps={getItemProps}\n              enableAllOption={enableAllOption}\n              isMultiSelect={true}\n              error={asyncError}\n            />\n          )}\n        </div>\n      </Portal>\n    </div>\n  );\n};\n\nfunction getSelectedItemsFromValue<T extends string | number>(\n  value: T[] | Array<ComboboxOption<T>>,\n  options: Array<ComboboxOption<T>>\n) {\n  if (isComboboxOptions(value)) {\n    return value;\n  }\n  const valueMap = new Map(value.map((val, index) => [val, index]));\n  const resultingItems: Array<ComboboxOption<T>> = [];\n\n  for (const option of options) {\n    const index = valueMap.get(option.value);\n    if (index !== undefined) {\n      resultingItems[index] = option;\n      valueMap.delete(option.value);\n    }\n    if (valueMap.size === 0) {\n      // We found all values\n      break;\n    }\n  }\n\n  // Handle items that are not in options\n  for (const [val, index] of valueMap) {\n    resultingItems[index] = { value: val };\n  }\n  return resultingItems;\n}\n\nfunction isComboboxOptions<T extends string | number>(\n  value: T[] | Array<ComboboxOption<T>>\n): value is Array<ComboboxOption<T>> {\n  return typeof value[0] === 'object';\n}\n","import { css, cx } from '@emotion/css';\nimport { HTMLProps } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nenum Orientation {\n  Horizontal,\n  Vertical,\n}\ntype Spacing = 'none' | 'xs' | 'sm' | 'md' | 'lg';\ntype Justify = 'flex-start' | 'flex-end' | 'space-between' | 'center';\ntype Align = 'normal' | 'flex-start' | 'flex-end' | 'center';\n\nexport interface LayoutProps extends Omit<HTMLProps<HTMLDivElement>, 'align' | 'children' | 'wrap'> {\n  children: React.ReactNode[] | React.ReactNode;\n  orientation?: Orientation;\n  spacing?: Spacing;\n  justify?: Justify;\n  align?: Align;\n  width?: string;\n  wrap?: boolean;\n}\n\nexport interface ContainerProps {\n  padding?: Spacing;\n  margin?: Spacing;\n  grow?: number;\n  shrink?: number;\n}\n\n/**\n * @deprecated use Stack component instead\n */\nexport const Layout = ({\n  children,\n  orientation = Orientation.Horizontal,\n  spacing = 'sm',\n  justify = 'flex-start',\n  align = 'normal',\n  wrap = false,\n  width = '100%',\n  height = '100%',\n  ...rest\n}: LayoutProps) => {\n  const styles = useStyles2(getStyles, orientation, spacing, justify, align, wrap);\n\n  return (\n    <div className={styles.layout} style={{ width, height }} {...rest}>\n      {React.Children.toArray(children)\n        .filter(Boolean)\n        .map((child, index) => {\n          return (\n            <div className={styles.childWrapper} key={index}>\n              {child}\n            </div>\n          );\n        })}\n    </div>\n  );\n};\n\n/**\n * @deprecated use Stack component instead\n */\nexport const HorizontalGroup = ({\n  children,\n  spacing,\n  justify,\n  align = 'center',\n  wrap,\n  width,\n  height,\n}: Omit<LayoutProps, 'orientation'>) => (\n  <Layout\n    spacing={spacing}\n    justify={justify}\n    orientation={Orientation.Horizontal}\n    align={align}\n    width={width}\n    height={height}\n    wrap={wrap}\n  >\n    {children}\n  </Layout>\n);\n\n/**\n * @deprecated use Stack component with the \"column\" direction instead\n */\nexport const VerticalGroup = ({\n  children,\n  spacing,\n  justify,\n  align,\n  width,\n  height,\n}: Omit<LayoutProps, 'orientation' | 'wrap'>) => (\n  <Layout\n    spacing={spacing}\n    justify={justify}\n    orientation={Orientation.Vertical}\n    align={align}\n    width={width}\n    height={height}\n  >\n    {children}\n  </Layout>\n);\n\nexport const Container = ({ children, padding, margin, grow, shrink }: React.PropsWithChildren<ContainerProps>) => {\n  const styles = useStyles2(getContainerStyles, padding, margin);\n\n  return (\n    <div\n      className={cx(\n        styles.wrapper,\n        grow !== undefined && css({ flexGrow: grow }),\n        shrink !== undefined && css({ flexShrink: shrink })\n      )}\n    >\n      {children}\n    </div>\n  );\n};\n\nconst getStyles = (\n  theme: GrafanaTheme2,\n  orientation: Orientation,\n  spacing: Spacing,\n  justify: Justify,\n  align: Align,\n  wrap: boolean\n) => {\n  const finalSpacing = spacing !== 'none' ? theme.spacing(spacingToNumber[spacing]) : 0;\n\n  // compensate for last row margin when wrapped, horizontal layout\n  const marginCompensation =\n    (orientation === Orientation.Horizontal && !wrap) || orientation === Orientation.Vertical ? 0 : `-${finalSpacing}`;\n\n  const label = orientation === Orientation.Vertical ? 'vertical-group' : 'horizontal-group';\n\n  return {\n    layout: css({\n      label: label,\n      display: 'flex',\n      flexDirection: orientation === Orientation.Vertical ? 'column' : 'row',\n      flexWrap: wrap ? 'wrap' : 'nowrap',\n      justifyContent: justify,\n      alignItems: align,\n      height: '100%',\n      maxWidth: '100%',\n      // compensate for last row margin when wrapped, horizontal layout\n      marginBottom: marginCompensation,\n    }),\n    childWrapper: css({\n      label: 'layoutChildrenWrapper',\n      marginBottom: orientation === Orientation.Horizontal && !wrap ? 0 : finalSpacing,\n      marginRight: orientation === Orientation.Horizontal ? finalSpacing : 0,\n      display: 'flex',\n      alignItems: align,\n\n      '&:last-child': {\n        marginBottom: orientation === Orientation.Vertical ? 0 : undefined,\n        marginRight: orientation === Orientation.Horizontal ? 0 : undefined,\n      },\n    }),\n  };\n};\n\nconst spacingToNumber: Record<Spacing, number> = {\n  none: 0,\n  xs: 0.5,\n  sm: 1,\n  md: 2,\n  lg: 3,\n};\n\nconst getContainerStyles = (theme: GrafanaTheme2, padding?: Spacing, margin?: Spacing) => {\n  const paddingSize = (padding && padding !== 'none' && theme.spacing(spacingToNumber[padding])) || 0;\n  const marginSize = (margin && margin !== 'none' && theme.spacing(spacingToNumber[margin])) || 0;\n  return {\n    wrapper: css({\n      label: 'container',\n      margin: marginSize,\n      padding: paddingSize,\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\n\nexport interface RadioButtonDotProps<T>\n  extends Omit<React.HTMLProps<HTMLInputElement>, 'label' | 'value' | 'onChange' | 'type'> {\n  id: string;\n  name: string;\n  checked?: boolean;\n  value?: T;\n  disabled?: boolean;\n  label: React.ReactNode;\n  description?: string;\n  onChange?: (id: string) => void;\n}\n\nexport const RadioButtonDot = <T extends string | number | readonly string[]>({\n  id,\n  name,\n  label,\n  checked,\n  value,\n  disabled,\n  description,\n  onChange,\n  ...props\n}: RadioButtonDotProps<T>) => {\n  const styles = useStyles2(getStyles);\n\n  return (\n    <label title={description} className={styles.label}>\n      <input\n        {...props}\n        id={id}\n        name={name}\n        type=\"radio\"\n        checked={checked}\n        value={value}\n        disabled={disabled}\n        className={styles.input}\n        onChange={() => onChange && onChange(id)}\n      />\n      <div>\n        {label}\n        {description && <div className={styles.description}>{description}</div>}\n      </div>\n    </label>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  input: css({\n    position: 'relative',\n    appearance: 'none',\n    outline: 'none',\n    backgroundColor: theme.colors.background.canvas,\n    width: `${theme.spacing(2)} !important` /* TODO How to overcome this? Checkbox does the same 🙁 */,\n    height: theme.spacing(2),\n    border: `1px solid ${theme.colors.border.medium}`,\n    borderRadius: theme.shape.radius.circle,\n    cursor: 'pointer',\n    margin: '3px 0' /* Space for box-shadow when focused */,\n\n    ':checked': {\n      backgroundColor: theme.v1.palette.white,\n      border: `5px solid ${theme.colors.primary.main}`,\n    },\n\n    ':disabled': {\n      backgroundColor: `${theme.colors.action.disabledBackground} !important`,\n      borderColor: theme.colors.border.weak,\n    },\n\n    ':disabled:checked': {\n      border: `1px solid ${theme.colors.border.weak}`,\n    },\n\n    ':disabled:checked::after': {\n      content: '\"\"',\n      width: '6px',\n      height: '6px',\n      backgroundColor: theme.colors.text.disabled,\n      borderRadius: theme.shape.radius.circle,\n      display: 'inline-block',\n      position: 'absolute',\n      top: '4px',\n      left: '4px',\n    },\n\n    ':focus': {\n      outline: 'none !important',\n      boxShadow: `0 0 0 1px ${theme.colors.background.canvas}, 0 0 0 3px ${theme.colors.primary.main}`,\n    },\n  }),\n  label: css({\n    fontSize: theme.typography.fontSize,\n    lineHeight: '22px' /* 16px for the radio button and 6px for the focus shadow */,\n    display: 'grid',\n    gridTemplateColumns: `${theme.spacing(2)} auto`,\n    gap: theme.spacing(1),\n    cursor: 'pointer',\n  }),\n  description: css({\n    fontSize: theme.typography.size.sm,\n    color: theme.colors.text.secondary,\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport { uniqueId } from 'lodash';\n\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\n\nimport { RadioButtonDot } from './RadioButtonDot';\n\nexport interface RadioButtonListProps<T> {\n  /** A name of a radio group. Used to group multiple radio inputs into a single group */\n  name: string;\n  id?: string;\n  /** An array of available options */\n  options: Array<SelectableValue<T>>;\n  value?: T;\n  onChange?: (value: T) => void;\n  /** Disables all elements in the list */\n  disabled?: boolean;\n  /** Disables subset of elements in the list. Compares values using the === operator */\n  disabledOptions?: T[];\n  className?: string;\n}\n\nexport function RadioButtonList<T extends string | number | readonly string[]>({\n  name,\n  id,\n  options,\n  value,\n  onChange,\n  className,\n  disabled,\n  disabledOptions = [],\n}: RadioButtonListProps<T>) {\n  const styles = useStyles2(getStyles);\n  const internalId = id ?? uniqueId('radiogroup-list-');\n\n  return (\n    <div id={id} className={cx(styles.container, className)} role=\"radiogroup\">\n      {options.map((option, index) => {\n        const itemId = `${internalId}-${index}`;\n\n        const isChecked = value && value === option.value;\n        const isDisabled = disabled || disabledOptions.some((optionValue) => optionValue === option.value);\n\n        const handleChange = () => onChange && option.value && onChange(option.value);\n\n        return (\n          <RadioButtonDot<T>\n            key={index}\n            id={itemId}\n            name={name}\n            label={option.label}\n            description={option.description}\n            checked={isChecked}\n            value={option.value}\n            disabled={isDisabled}\n            onChange={handleChange}\n          />\n        );\n      })}\n    </div>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  container: css({\n    display: 'grid',\n    gap: theme.spacing(1),\n  }),\n});\n","import * as React from 'react';\n\nimport { Button } from '../Button/Button';\nimport { Input } from '../Input/Input';\nimport { Stack } from '../Layout/Stack/Stack';\n\nexport type Props = React.ComponentProps<typeof Input> & {\n  /** TRUE if the secret was already configured. (It is needed as often the backend doesn't send back the actual secret, only the information that it was configured) */\n  isConfigured: boolean;\n  /** Called when the user clicks on the \"Reset\" button in order to clear the secret */\n  onReset: () => void;\n};\n\nexport const CONFIGURED_TEXT = 'configured';\nexport const RESET_BUTTON_TEXT = 'Reset';\n\nexport const SecretInput = ({ isConfigured, onReset, ...props }: Props) => (\n  <Stack>\n    {!isConfigured && <Input {...props} type=\"password\" />}\n    {isConfigured && (\n      <>\n        <Input {...props} type=\"text\" disabled={true} value={CONFIGURED_TEXT} />\n        <Button onClick={onReset} variant=\"secondary\">\n          {RESET_BUTTON_TEXT}\n        </Button>\n      </>\n    )}\n  </Stack>\n);\n","import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Button } from '../Button/Button';\nimport { Box } from '../Layout/Box/Box';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { TextArea } from '../TextArea/TextArea';\n\nexport type Props = React.ComponentProps<typeof TextArea> & {\n  /** TRUE if the secret was already configured. (It is needed as often the backend doesn't send back the actual secret, only the information that it was configured) */\n  isConfigured: boolean;\n  /** Called when the user clicks on the \"Reset\" button in order to clear the secret */\n  onReset: () => void;\n};\n\nexport const CONFIGURED_TEXT = 'configured';\nexport const RESET_BUTTON_TEXT = 'Reset';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    configuredStyle: css({\n      minHeight: theme.spacing(theme.components.height.md),\n      paddingTop: theme.spacing(0.5) /** Needed to mimic vertically centered text in an input box */,\n      resize: 'none',\n    }),\n  };\n};\n\n/**\n * Text area that does not disclose an already configured value but lets the user reset the current value and enter a new one.\n * Typically useful for asymmetric cryptography keys.\n */\nexport const SecretTextArea = ({ isConfigured, onReset, ...props }: Props) => {\n  const styles = useStyles2(getStyles);\n  return (\n    <Stack>\n      <Box>\n        {!isConfigured && <TextArea {...props} />}\n        {isConfigured && (\n          <TextArea\n            {...props}\n            rows={1}\n            disabled={true}\n            value={CONFIGURED_TEXT}\n            className={cx(styles.configuredStyle)}\n          />\n        )}\n      </Box>\n      {isConfigured && (\n        <Button onClick={onReset} variant=\"secondary\">\n          {RESET_BUTTON_TEXT}\n        </Button>\n      )}\n    </Stack>\n  );\n};\n","/**\n * Shortens the filename to 16 length\n * @param fileName\n */\nexport function trimFileName(fileName: string): string {\n  const nameLength = 16;\n  const delimiter = fileName.lastIndexOf('.');\n  const extension = fileName.substring(delimiter);\n  const file = fileName.substring(0, delimiter);\n\n  if (file.length < nameLength) {\n    return fileName;\n  }\n\n  return `${file.substring(0, nameLength)}...${extension}`;\n}\n","import { css, cx } from '@emotion/css';\nimport { FormEvent, useCallback, useState } from 'react';\nimport * as React from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { ComponentSize } from '../../types/size';\nimport { trimFileName } from '../../utils/file';\nimport { getButtonStyles } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\n\nexport interface Props {\n  /** Callback function to handle uploaded file  */\n  onFileUpload: (event: FormEvent<HTMLInputElement>) => void;\n  /** Accepted file extensions */\n  accept?: string;\n  /** Overwrite or add to style */\n  className?: string;\n  /** Button size */\n  size?: ComponentSize;\n  /** Show the file name */\n  showFileName?: boolean;\n}\n\nexport const FileUpload = ({\n  onFileUpload,\n  className,\n  children = 'Upload file',\n  accept = '*',\n  size = 'md',\n  showFileName,\n}: React.PropsWithChildren<Props>) => {\n  const style = useStyles2(getStyles(size));\n  const [fileName, setFileName] = useState('');\n  const id = uuidv4();\n\n  const onChange = useCallback(\n    (event: FormEvent<HTMLInputElement>) => {\n      const file = event.currentTarget?.files?.[0];\n      if (file) {\n        setFileName(file.name ?? '');\n      }\n      onFileUpload(event);\n    },\n    [onFileUpload]\n  );\n\n  return (\n    <>\n      <input\n        type=\"file\"\n        id={id}\n        className={style.fileUpload}\n        onChange={onChange}\n        multiple={false}\n        accept={accept}\n        data-testid={selectors.components.FileUpload.inputField}\n      />\n      <label htmlFor={id} className={cx(style.labelWrapper, className)}>\n        <Icon name=\"upload\" className={style.icon} />\n        {children}\n      </label>\n\n      {showFileName && fileName && (\n        <span\n          aria-label={t('grafana-ui.file-upload.file-name', 'File name')}\n          className={style.fileName}\n          data-testid={selectors.components.FileUpload.fileNameSpan}\n        >\n          {trimFileName(fileName)}\n        </span>\n      )}\n    </>\n  );\n};\n\nconst getStyles = (size: ComponentSize) => (theme: GrafanaTheme2) => {\n  const buttonStyles = getButtonStyles({ theme, variant: 'primary', size, iconOnly: false });\n  const focusStyle = getFocusStyles(theme);\n\n  return {\n    fileUpload: css({\n      height: '0.1px',\n      opacity: '0',\n      overflow: 'hidden',\n      position: 'absolute',\n      width: '0.1px',\n      zIndex: -1,\n      '&:focus + label': focusStyle,\n      '&:focus-visible + label': focusStyle,\n    }),\n    labelWrapper: buttonStyles.button,\n    icon: buttonStyles.icon,\n    fileName: css({\n      marginLeft: theme.spacing(0.5),\n    }),\n  };\n};\n","import { css } from '@emotion/css';\n\nimport { formattedValueToString, getValueFormat, GrafanaTheme2 } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { trimFileName } from '../../utils/file';\nimport { Button } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\nimport { IconButton } from '../IconButton/IconButton';\n\nimport { DropzoneFile } from './FileDropzone';\n\nexport const REMOVE_FILE = 'Remove file';\nexport interface FileListItemProps {\n  file: DropzoneFile;\n  removeFile?: (file: DropzoneFile) => void;\n}\n\nexport function FileListItem({ file: customFile, removeFile }: FileListItemProps) {\n  const styles = useStyles2(getStyles);\n  const { file, progress, error, abortUpload, retryUpload } = customFile;\n\n  const renderRightSide = () => {\n    if (error) {\n      return (\n        <>\n          <span className={styles.error}>{error.message}</span>\n          {retryUpload && (\n            <IconButton\n              name=\"sync\"\n              tooltip={t('grafana-ui.file-dropzone.item-retry', 'Retry')}\n              tooltipPlacement=\"top\"\n              onClick={retryUpload}\n            />\n          )}\n          {removeFile && (\n            <IconButton\n              className={retryUpload ? styles.marginLeft : ''}\n              name=\"trash-alt\"\n              onClick={() => removeFile(customFile)}\n              tooltip={REMOVE_FILE}\n            />\n          )}\n        </>\n      );\n    }\n\n    if (progress && file.size > progress) {\n      return (\n        <>\n          <progress className={styles.progressBar} max={file.size} value={progress} />\n          <span className={styles.paddingLeft}>\n            {Math.round((progress / file.size) * 100)}\n            {'%'}\n          </span>\n          {abortUpload && (\n            <Button variant=\"secondary\" type=\"button\" fill=\"text\" onClick={abortUpload}>\n              <Trans i18nKey=\"grafana-ui.file-dropzone.cancel-upload\">Cancel upload</Trans>\n            </Button>\n          )}\n        </>\n      );\n    }\n    return (\n      removeFile && (\n        <IconButton\n          name=\"trash-alt\"\n          onClick={() => removeFile(customFile)}\n          tooltip={REMOVE_FILE}\n          tooltipPlacement=\"top\"\n        />\n      )\n    );\n  };\n\n  const valueFormat = getValueFormat('decbytes')(file.size);\n\n  return (\n    <div className={styles.fileListContainer}>\n      <span className={styles.fileNameWrapper}>\n        <Icon name=\"file-blank\" size=\"lg\" aria-hidden={true} />\n        <span className={styles.padding}>{trimFileName(file.name)}</span>\n        <span>{formattedValueToString(valueFormat)}</span>\n      </span>\n\n      <div className={styles.fileNameWrapper}>{renderRightSide()}</div>\n    </div>\n  );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n  return {\n    fileListContainer: css({\n      width: '100%',\n      display: 'flex',\n      flexDirection: 'row',\n      alignItems: 'center',\n      justifyContent: 'space-between',\n      padding: theme.spacing(2),\n      border: `1px dashed ${theme.colors.border.medium}`,\n      backgroundColor: `${theme.colors.background.secondary}`,\n      marginTop: theme.spacing(1),\n    }),\n    fileNameWrapper: css({\n      display: 'flex',\n      flexDirection: 'row',\n      alignItems: 'center',\n    }),\n    padding: css({\n      padding: theme.spacing(0, 1),\n    }),\n    paddingLeft: css({\n      paddingLeft: theme.spacing(2),\n    }),\n    marginLeft: css({\n      marginLeft: theme.spacing(1),\n    }),\n    error: css({\n      paddingRight: theme.spacing(2),\n      color: theme.colors.error.text,\n    }),\n    progressBar: css({\n      borderRadius: theme.shape.radius.default,\n      height: '4px',\n      '::-webkit-progress-bar': {\n        backgroundColor: theme.colors.border.weak,\n        borderRadius: theme.shape.radius.default,\n      },\n      '::-webkit-progress-value': {\n        backgroundColor: theme.colors.primary.main,\n        borderRadius: theme.shape.radius.default,\n      },\n    }),\n  };\n}\n","import { css, cx } from '@emotion/css';\nimport { isString, uniqueId } from 'lodash';\nimport { ReactNode, useCallback, useState } from 'react';\nimport { Accept, DropEvent, DropzoneOptions, FileError, FileRejection, useDropzone, ErrorCode } from 'react-dropzone';\n\nimport { formattedValueToString, getValueFormat, GrafanaTheme2 } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { Alert } from '../Alert/Alert';\nimport { Icon } from '../Icon/Icon';\n\nimport { FileListItem } from './FileListItem';\n\ntype BackwardsCompatibleDropzoneOptions = Omit<DropzoneOptions, 'accept'> & {\n  // For backward compatibility we are still allowing the old `string | string[]` format for adding accepted file types (format changed in v13.0.0)\n  accept?: string | string[] | Accept;\n};\n\nexport interface FileDropzoneProps {\n  /**\n   * Use the children property to have custom dropzone view.\n   */\n  children?: ReactNode;\n  /**\n   * Use this property to override the default behaviour for the react-dropzone options.\n   * @default {\n   *  maxSize: Infinity,\n   *  minSize: 0,\n   *  multiple: true,\n   *  useFsAccessApi: false,\n   *  maxFiles: 0,\n   * }\n   */\n  options?: BackwardsCompatibleDropzoneOptions;\n  /**\n   * Use this to change the FileReader's read.\n   */\n  readAs?: 'readAsArrayBuffer' | 'readAsText' | 'readAsBinaryString' | 'readAsDataURL';\n  /**\n   * Use the onLoad function to get the result from FileReader.\n   */\n  onLoad?: (result: string | ArrayBuffer | null) => void;\n  /**\n   * The fileListRenderer property can be used to overwrite the list of files. To not to show\n   * any list return null in the function.\n   */\n  fileListRenderer?: (file: DropzoneFile, removeFile: (file: DropzoneFile) => void) => ReactNode;\n  onFileRemove?: (file: DropzoneFile) => void;\n}\n\nexport interface DropzoneFile {\n  file: File;\n  id: string;\n  error: DOMException | null;\n  progress?: number;\n  abortUpload?: () => void;\n  retryUpload?: () => void;\n}\n\nexport function FileDropzone({ options, children, readAs, onLoad, fileListRenderer, onFileRemove }: FileDropzoneProps) {\n  const [files, setFiles] = useState<DropzoneFile[]>([]);\n  const [fileErrors, setErrorMessages] = useState<FileError[]>([]);\n\n  const formattedSize = getValueFormat('decbytes')(options?.maxSize ? options?.maxSize : 0);\n\n  const setFileProperty = useCallback(\n    (customFile: DropzoneFile, action: (customFileToModify: DropzoneFile) => void) => {\n      setFiles((oldFiles) => {\n        return oldFiles.map((oldFile) => {\n          if (oldFile.id === customFile.id) {\n            action(oldFile);\n            return oldFile;\n          }\n          return oldFile;\n        });\n      });\n    },\n    []\n  );\n\n  const onDrop = useCallback(\n    (acceptedFiles: File[], rejectedFiles: FileRejection[], event: DropEvent) => {\n      let customFiles = acceptedFiles.map(mapToCustomFile);\n      if (options?.multiple === false) {\n        setFiles(customFiles);\n      } else {\n        setFiles((oldFiles) => [...oldFiles, ...customFiles]);\n      }\n\n      setErrors(rejectedFiles);\n\n      if (options?.onDrop) {\n        options.onDrop(acceptedFiles, rejectedFiles, event);\n      } else {\n        for (const customFile of customFiles) {\n          const reader = new FileReader();\n\n          const read = () => {\n            if (readAs) {\n              reader[readAs](customFile.file);\n            } else {\n              reader.readAsText(customFile.file);\n            }\n          };\n\n          // Set abort FileReader\n          setFileProperty(customFile, (fileToModify) => {\n            fileToModify.abortUpload = () => {\n              reader.abort();\n            };\n            fileToModify.retryUpload = () => {\n              setFileProperty(customFile, (fileToModify) => {\n                fileToModify.error = null;\n                fileToModify.progress = undefined;\n              });\n              read();\n            };\n          });\n\n          reader.onabort = () => {\n            setFileProperty(customFile, (fileToModify) => {\n              fileToModify.error = new DOMException('Aborted');\n            });\n          };\n\n          reader.onprogress = (event) => {\n            setFileProperty(customFile, (fileToModify) => {\n              fileToModify.progress = event.loaded;\n            });\n          };\n\n          reader.onload = () => {\n            onLoad?.(reader.result);\n          };\n\n          reader.onerror = () => {\n            setFileProperty(customFile, (fileToModify) => {\n              fileToModify.error = reader.error;\n            });\n          };\n\n          read();\n        }\n      }\n    },\n    [onLoad, options, readAs, setFileProperty]\n  );\n\n  const removeFile = (file: DropzoneFile) => {\n    const newFiles = files.filter((f) => file.id !== f.id);\n    setFiles(newFiles);\n    onFileRemove?.(file);\n  };\n\n  const { getRootProps, getInputProps, isDragActive } = useDropzone({\n    ...options,\n    useFsAccessApi: false,\n    onDrop,\n    accept: transformAcceptToNewFormat(options?.accept),\n  });\n  const theme = useTheme2();\n  const styles = getStyles(theme, isDragActive);\n  const fileList = files.map((file) => {\n    if (fileListRenderer) {\n      return fileListRenderer(file, removeFile);\n    }\n    return <FileListItem key={file.id} file={file} removeFile={removeFile} />;\n  });\n\n  const setErrors = (rejectedFiles: FileRejection[]) => {\n    let errors: FileError[] = [];\n    rejectedFiles.map((rejectedFile) => {\n      rejectedFile.errors.map((newError) => {\n        if (\n          errors.findIndex((presentError) => {\n            return presentError.code === newError.code && presentError.message === newError.message;\n          }) === -1\n        ) {\n          errors.push(newError);\n        }\n      });\n    });\n\n    setErrorMessages(errors);\n  };\n\n  const renderErrorMessages = (errors: FileError[]) => {\n    const size = formattedValueToString(formattedSize);\n    return (\n      <div className={styles.errorAlert}>\n        <Alert\n          title={t('grafana-ui.file-dropzone.error-title', 'Upload failed')}\n          severity=\"error\"\n          onRemove={clearAlert}\n        >\n          {errors.map((error) => {\n            switch (error.code) {\n              case ErrorCode.FileTooLarge:\n                return (\n                  <div key={error.message + error.code}>\n                    <Trans i18nKey=\"grafana-ui.file-dropzone.file-too-large\">File is larger than {{ size }}</Trans>\n                  </div>\n                );\n              default:\n                return <div key={error.message + error.code}>{error.message}</div>;\n            }\n          })}\n        </Alert>\n      </div>\n    );\n  };\n\n  const clearAlert = () => {\n    setErrorMessages([]);\n  };\n\n  return (\n    <div className={styles.container}>\n      <div data-testid=\"dropzone\" {...getRootProps({ className: styles.dropzone })}>\n        <input {...getInputProps()} />\n        {children ?? <FileDropzoneDefaultChildren primaryText={getPrimaryText(files, options)} />}\n      </div>\n      {fileErrors.length > 0 && renderErrorMessages(fileErrors)}\n      <small className={cx(styles.small, styles.acceptContainer)}>\n        {options?.maxSize && `Max file size: ${formattedValueToString(formattedSize)}`}\n        {options?.maxSize && options?.accept && <span className={styles.acceptSeparator}>{'|'}</span>}\n        {options?.accept && getAcceptedFileTypeText(options.accept)}\n      </small>\n      {fileList}\n    </div>\n  );\n}\n\nexport function getMimeTypeByExtension(ext: string) {\n  if (['txt', 'json', 'csv', 'xls', 'yml'].some((e) => ext.match(e))) {\n    return 'text/plain';\n  }\n\n  return 'application/octet-stream';\n}\n\nexport function transformAcceptToNewFormat(accept?: string | string[] | Accept): Accept | undefined {\n  if (isString(accept)) {\n    return {\n      [getMimeTypeByExtension(accept)]: [accept],\n    };\n  }\n\n  if (Array.isArray(accept)) {\n    return accept.reduce((prev: Record<string, string[]>, current) => {\n      const mime = getMimeTypeByExtension(current);\n\n      prev[mime] = prev[mime] ? [...prev[mime], current] : [current];\n\n      return prev;\n    }, {});\n  }\n\n  return accept;\n}\n\nexport function FileDropzoneDefaultChildren({ primaryText = 'Drop file here or click to upload', secondaryText = '' }) {\n  const theme = useTheme2();\n  const styles = getStyles(theme);\n\n  return (\n    <div className={cx(styles.defaultDropZone)} data-testid=\"file-drop-zone-default-children\">\n      <Icon className={cx(styles.icon)} name=\"upload\" size=\"xl\" />\n      <h6 className={cx(styles.primaryText)}>{primaryText}</h6>\n      <small className={styles.small}>{secondaryText}</small>\n    </div>\n  );\n}\n\nfunction getPrimaryText(files: DropzoneFile[], options?: BackwardsCompatibleDropzoneOptions) {\n  if (options?.multiple === undefined || options?.multiple) {\n    return 'Upload file';\n  }\n  return files.length ? 'Replace file' : 'Upload file';\n}\n\nfunction getAcceptedFileTypeText(accept: string | string[] | Accept) {\n  if (isString(accept)) {\n    return `Accepted file type: ${accept}`;\n  }\n\n  if (Array.isArray(accept)) {\n    return `Accepted file types: ${accept.join(', ')}`;\n  }\n\n  // react-dropzone has updated the type of the \"accept\" parameter since v13.0.0:\n  // https://github.com/react-dropzone/react-dropzone/blob/master/src/index.js#L95\n  return `Accepted file types: ${Object.values(accept).flat().join(', ')}`;\n}\n\nfunction mapToCustomFile(file: File): DropzoneFile {\n  return {\n    id: uniqueId('file'),\n    file,\n    error: null,\n  };\n}\n\nfunction getStyles(theme: GrafanaTheme2, isDragActive?: boolean) {\n  return {\n    container: css({\n      display: 'flex',\n      flexDirection: 'column',\n      width: '100%',\n      padding: theme.spacing(2),\n      borderRadius: theme.shape.radius.default,\n      border: `1px dashed ${theme.colors.border.strong}`,\n      backgroundColor: isDragActive ? theme.colors.background.secondary : theme.colors.background.primary,\n      cursor: 'pointer',\n      alignItems: 'center',\n      justifyContent: 'center',\n    }),\n    dropzone: css({\n      height: '100%',\n      width: '100%',\n      display: 'flex',\n      flexDirection: 'column',\n    }),\n    defaultDropZone: css({\n      textAlign: 'center',\n    }),\n    icon: css({\n      marginBottom: theme.spacing(1),\n    }),\n    primaryText: css({\n      marginBottom: theme.spacing(1),\n    }),\n    acceptContainer: css({\n      textAlign: 'center',\n      margin: 0,\n    }),\n    acceptSeparator: css({\n      margin: `0 ${theme.spacing(1)}`,\n    }),\n    small: css({\n      color: theme.colors.text.secondary,\n    }),\n    errorAlert: css({\n      paddingTop: '10px',\n    }),\n  };\n}\n","import { css, cx } from '@emotion/css';\nimport { useDismiss, useFloating, useInteractions } from '@floating-ui/react';\nimport { FocusScope } from '@react-aria/focus';\nimport { FormEvent, MouseEvent, useState } from 'react';\n\nimport { dateTime, getDefaultTimeRange, GrafanaTheme2, TimeRange, TimeZone } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Icon } from '../Icon/Icon';\nimport { getInputStyles } from '../Input/Input';\n\nimport { TimePickerContent } from './TimeRangePicker/TimePickerContent';\nimport { TimeRangeLabel } from './TimeRangePicker/TimeRangeLabel';\nimport { WeekStart } from './WeekStartPicker';\nimport { getQuickOptions } from './options';\nimport { isValidTimeRange } from './utils';\n\nexport interface TimeRangeInputProps {\n  value: TimeRange;\n  timeZone?: TimeZone;\n  onChange: (timeRange: TimeRange) => void;\n  onChangeTimeZone?: (timeZone: TimeZone) => void;\n  hideTimeZone?: boolean;\n  placeholder?: string;\n  clearable?: boolean;\n  /** Controls horizontal alignment of the picker menu */\n  isReversed?: boolean;\n  /** Controls visibility of the preset time ranges (e.g. **Last 5 minutes**) in the picker menu */\n  hideQuickRanges?: boolean;\n  disabled?: boolean;\n  showIcon?: boolean;\n  /** Which day of the week the calendar should start on. Possible values: \"saturday\", \"sunday\" or \"monday\" */\n  weekStart?: WeekStart;\n}\n\nconst noop = () => {};\n\nexport const TimeRangeInput = ({\n  value,\n  onChange,\n  onChangeTimeZone = noop,\n  clearable,\n  weekStart,\n  hideTimeZone = true,\n  timeZone = 'browser',\n  placeholder = 'Select time range',\n  isReversed = true,\n  hideQuickRanges = false,\n  disabled = false,\n  showIcon = false,\n}: TimeRangeInputProps) => {\n  const [isOpen, setIsOpen] = useState(false);\n  const styles = useStyles2(getStyles, disabled);\n\n  const onOpen = (event: FormEvent<HTMLButtonElement>) => {\n    event.stopPropagation();\n    event.preventDefault();\n    if (disabled) {\n      return;\n    }\n    setIsOpen(!isOpen);\n  };\n\n  const onClose = () => {\n    setIsOpen(false);\n  };\n\n  const onRangeChange = (timeRange: TimeRange) => {\n    onClose();\n    onChange(timeRange);\n  };\n\n  const onRangeClear = (event: MouseEvent<SVGElement>) => {\n    event.stopPropagation();\n    const from = dateTime(null);\n    const to = dateTime(null);\n    onChange({ from, to, raw: { from, to } });\n  };\n\n  const { refs, floatingStyles, context } = useFloating({\n    open: isOpen,\n    onOpenChange: setIsOpen,\n    placement: 'bottom-start',\n    strategy: 'fixed',\n  });\n\n  const dismiss = useDismiss(context, {\n    bubbles: {\n      outsidePress: false,\n    },\n  });\n\n  const { getReferenceProps, getFloatingProps } = useInteractions([dismiss]);\n\n  return (\n    <div className={styles.container}>\n      <button\n        type=\"button\"\n        className={styles.pickerInput}\n        data-testid={selectors.components.TimePicker.openButton}\n        onClick={onOpen}\n        ref={refs.setReference}\n        {...getReferenceProps()}\n      >\n        {showIcon && <Icon name=\"clock-nine\" size={'sm'} className={styles.icon} />}\n\n        <TimeRangeLabel value={value} timeZone={timeZone} placeholder={placeholder} />\n\n        {!disabled && (\n          <span className={styles.caretIcon}>\n            {isValidTimeRange(value) && clearable && (\n              <Icon className={styles.clearIcon} name=\"times\" size=\"lg\" onClick={onRangeClear} />\n            )}\n            <Icon name={isOpen ? 'angle-up' : 'angle-down'} size=\"lg\" />\n          </span>\n        )}\n      </button>\n      {isOpen && (\n        <FocusScope contain autoFocus restoreFocus>\n          <section className={styles.content} ref={refs.setFloating} style={floatingStyles} {...getFloatingProps()}>\n            <TimePickerContent\n              timeZone={timeZone}\n              value={isValidTimeRange(value) ? value : getDefaultTimeRange()}\n              onChange={onRangeChange}\n              quickOptions={getQuickOptions()}\n              onChangeTimeZone={onChangeTimeZone}\n              className={styles.content}\n              hideTimeZone={hideTimeZone}\n              isReversed={isReversed}\n              hideQuickRanges={hideQuickRanges}\n              weekStart={weekStart}\n            />\n          </section>\n        </FocusScope>\n      )}\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2, disabled = false) => {\n  const inputStyles = getInputStyles({ theme, invalid: false });\n  return {\n    container: css({\n      display: 'flex',\n      position: 'relative',\n    }),\n    content: css({\n      marginLeft: 0,\n      position: 'absolute',\n      top: '116%',\n      zIndex: theme.zIndex.modal,\n    }),\n    pickerInput: cx(\n      inputStyles.input,\n      disabled && inputStyles.inputDisabled,\n      inputStyles.wrapper,\n      css({\n        display: 'flex',\n        alignItems: 'center',\n        justifyContent: 'space-between',\n        cursor: 'pointer',\n        paddingRight: 0,\n        lineHeight: `${theme.spacing.gridSize * 4 - 2}px`,\n      })\n    ),\n    caretIcon: cx(\n      inputStyles.suffix,\n      css({\n        position: 'relative',\n        top: '-1px',\n        marginLeft: theme.spacing(0.5),\n      })\n    ),\n    clearIcon: css({\n      marginRight: theme.spacing(0.5),\n      '&:hover': {\n        color: theme.colors.text.maxContrast,\n      },\n    }),\n    placeholder: css({\n      color: theme.colors.text.disabled,\n      opacity: 1,\n    }),\n    icon: css({\n      marginRight: theme.spacing(0.5),\n    }),\n  };\n};\n","import { RelativeTimeRange, TimeOption } from '@grafana/data';\n\nconst regex = /^now$|^now(\\-|\\+)(\\d{1,10})([wdhms])$/;\n\nexport const mapOptionToRelativeTimeRange = (option: TimeOption): RelativeTimeRange | undefined => {\n  return {\n    from: relativeToSeconds(option.from),\n    to: relativeToSeconds(option.to),\n  };\n};\n\nexport const mapRelativeTimeRangeToOption = (range: RelativeTimeRange): TimeOption => {\n  const from = secondsToRelativeFormat(range.from);\n  const to = secondsToRelativeFormat(range.to);\n\n  return { from, to, display: `${from} to ${to}` };\n};\n\nexport type RangeValidation = {\n  isValid: boolean;\n  errorMessage?: string;\n};\n\nexport const isRangeValid = (relative: string, now = Date.now()): RangeValidation => {\n  if (!isRelativeFormat(relative)) {\n    return {\n      isValid: false,\n      errorMessage: 'Value not in relative time format.',\n    };\n  }\n\n  const seconds = relativeToSeconds(relative);\n\n  if (seconds > Math.ceil(now / 1000)) {\n    return {\n      isValid: false,\n      errorMessage: 'Can not enter value prior to January 1, 1970.',\n    };\n  }\n\n  return { isValid: true };\n};\n\nexport const isRelativeFormat = (format: string): boolean => {\n  return regex.test(format);\n};\n\nconst relativeToSeconds = (relative: string): number => {\n  const match = regex.exec(relative);\n\n  if (!match || match.length !== 4) {\n    return 0;\n  }\n\n  const [, sign, value, unit] = match;\n  const parsed = parseInt(value, 10);\n\n  if (isNaN(parsed)) {\n    return 0;\n  }\n\n  const seconds = parsed * units[unit];\n  return sign === '+' ? seconds * -1 : seconds;\n};\n\nconst units: Record<string, number> = {\n  w: 604800,\n  d: 86400,\n  h: 3600,\n  m: 60,\n  s: 1,\n};\n\nconst secondsToRelativeFormat = (seconds: number): string => {\n  if (seconds === 0) {\n    return 'now';\n  }\n\n  const absoluteSeconds = Math.abs(seconds);\n  if (seconds < 0) {\n    return `now+${formatDuration(absoluteSeconds)}`;\n  }\n\n  return `now-${formatDuration(absoluteSeconds)}`;\n};\n\n/**\n * Formats the given duration in seconds into a human-readable string representation.\n *\n * @param seconds - The duration in seconds.\n * @returns The formatted duration string.\n */\nfunction formatDuration(seconds: number): string {\n  const units = [\n    { unit: 'w', value: 7 * 24 * 60 * 60 },\n    { unit: 'd', value: 24 * 60 * 60 },\n    { unit: 'h', value: 60 * 60 },\n    { unit: 'm', value: 60 },\n    { unit: 's', value: 1 },\n  ];\n\n  for (const { unit, value } of units) {\n    if (seconds % value === 0) {\n      const quotient = seconds / value;\n      return `${quotient}${unit}`;\n    }\n  }\n\n  // If no perfect division, use the least significant unit\n  const leastSignificant = units[units.length - 1];\n  return `${seconds}${leastSignificant.unit}`;\n}\n","import { css, cx } from '@emotion/css';\nimport { autoUpdate, flip, shift, useClick, useDismiss, useFloating, useInteractions } from '@floating-ui/react';\nimport { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { useOverlay } from '@react-aria/overlays';\nimport { FormEvent, useCallback, useRef, useState } from 'react';\n\nimport { RelativeTimeRange, GrafanaTheme2, TimeOption } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { Button } from '../../Button/Button';\nimport { Field } from '../../Forms/Field';\nimport { Icon } from '../../Icon/Icon';\nimport { getInputStyles, Input } from '../../Input/Input';\nimport { ScrollContainer } from '../../ScrollContainer/ScrollContainer';\nimport { TimePickerTitle } from '../TimeRangePicker/TimePickerTitle';\nimport { TimeRangeList } from '../TimeRangePicker/TimeRangeList';\nimport { getQuickOptions } from '../options';\n\nimport {\n  isRangeValid,\n  isRelativeFormat,\n  mapOptionToRelativeTimeRange,\n  mapRelativeTimeRangeToOption,\n  RangeValidation,\n} from './utils';\n\n/**\n * @internal\n */\nexport interface RelativeTimeRangePickerProps {\n  timeRange: RelativeTimeRange;\n  onChange: (timeRange: RelativeTimeRange) => void;\n}\n\ntype InputState = {\n  value: string;\n  validation: RangeValidation;\n};\n\n/**\n * @internal\n */\nexport function RelativeTimeRangePicker(props: RelativeTimeRangePickerProps) {\n  const { timeRange, onChange } = props;\n  const [isOpen, setIsOpen] = useState(false);\n  const onClose = useCallback(() => setIsOpen(false), []);\n  const timeOption = mapRelativeTimeRangeToOption(timeRange);\n  const [from, setFrom] = useState<InputState>({ value: timeOption.from, validation: isRangeValid(timeOption.from) });\n  const [to, setTo] = useState<InputState>({ value: timeOption.to, validation: isRangeValid(timeOption.to) });\n  const ref = useRef<HTMLDivElement>(null);\n  const { overlayProps, underlayProps } = useOverlay(\n    { onClose: () => setIsOpen(false), isDismissable: true, isOpen },\n    ref\n  );\n  const { dialogProps } = useDialog({}, ref);\n  const validOptions = getQuickOptions().filter((o) => isRelativeFormat(o.from));\n\n  // the order of middleware is important!\n  // see https://floating-ui.com/docs/arrow#order\n  const middleware = [\n    flip({\n      // see https://floating-ui.com/docs/flip#combining-with-shift\n      crossAxis: false,\n      boundary: document.body,\n    }),\n    shift(),\n  ];\n\n  const { context, refs, floatingStyles } = useFloating({\n    open: isOpen,\n    placement: 'bottom-start',\n    onOpenChange: setIsOpen,\n    middleware,\n    whileElementsMounted: autoUpdate,\n    strategy: 'fixed',\n  });\n\n  const click = useClick(context);\n  const dismiss = useDismiss(context);\n\n  const { getReferenceProps, getFloatingProps } = useInteractions([dismiss, click]);\n\n  const styles = useStyles2(getStyles(from.validation.errorMessage, to.validation.errorMessage));\n\n  const onChangeTimeOption = (option: TimeOption) => {\n    const relativeTimeRange = mapOptionToRelativeTimeRange(option);\n    if (!relativeTimeRange) {\n      return;\n    }\n    onClose();\n    setFrom({ ...from, value: option.from });\n    setTo({ ...to, value: option.to });\n    onChange(relativeTimeRange);\n  };\n\n  const onOpen = useCallback(\n    (event: FormEvent<HTMLButtonElement>) => {\n      event.stopPropagation();\n      event.preventDefault();\n      setIsOpen(!isOpen);\n    },\n    [isOpen]\n  );\n\n  const onApply = (event: FormEvent<HTMLButtonElement>) => {\n    event.preventDefault();\n\n    if (!to.validation.isValid || !from.validation.isValid) {\n      return;\n    }\n\n    const timeRange = mapOptionToRelativeTimeRange({\n      from: from.value,\n      to: to.value,\n      display: '',\n    });\n\n    if (!timeRange) {\n      return;\n    }\n\n    onChange(timeRange);\n    setIsOpen(false);\n  };\n\n  const { from: timeOptionFrom, to: timeOptionTo } = timeOption;\n\n  return (\n    <div className={styles.container}>\n      <button\n        ref={refs.setReference}\n        className={styles.pickerInput}\n        type=\"button\"\n        onClick={onOpen}\n        {...getReferenceProps()}\n      >\n        <span className={styles.clockIcon}>\n          <Icon name=\"clock-nine\" />\n        </span>\n        <span>\n          <Trans i18nKey=\"time-picker.time-range.from-to\">\n            {{ timeOptionFrom }} to {{ timeOptionTo }}\n          </Trans>\n        </span>\n        <span className={styles.caretIcon}>\n          <Icon name={isOpen ? 'angle-up' : 'angle-down'} size=\"lg\" />\n        </span>\n      </button>\n      {isOpen && (\n        <div>\n          <div role=\"presentation\" className={styles.backdrop} {...underlayProps} />\n          <FocusScope contain autoFocus restoreFocus>\n            <div ref={ref} {...overlayProps} {...dialogProps}>\n              <div className={styles.content} ref={refs.setFloating} style={floatingStyles} {...getFloatingProps()}>\n                <div className={styles.body}>\n                  <div className={styles.leftSide}>\n                    <ScrollContainer showScrollIndicators>\n                      <TimeRangeList\n                        title={t('time-picker.time-range.example-title', 'Example time ranges')}\n                        options={validOptions}\n                        onChange={onChangeTimeOption}\n                        value={timeOption}\n                      />\n                    </ScrollContainer>\n                  </div>\n                  <div className={styles.rightSide}>\n                    <div className={styles.title}>\n                      <TimePickerTitle>\n                        <Trans i18nKey=\"time-picker.time-range.specify\">Specify time range</Trans>\n                      </TimePickerTitle>\n                    </div>\n                    <Field\n                      label={t('time-picker.time-range.from-label', 'From')}\n                      invalid={!from.validation.isValid}\n                      error={from.validation.errorMessage}\n                    >\n                      <Input\n                        onClick={(event) => event.stopPropagation()}\n                        onBlur={() => setFrom({ ...from, validation: isRangeValid(from.value) })}\n                        onChange={(event) => setFrom({ ...from, value: event.currentTarget.value })}\n                        value={from.value}\n                      />\n                    </Field>\n                    <Field\n                      label={t('time-picker.time-range.to-label', 'To')}\n                      invalid={!to.validation.isValid}\n                      error={to.validation.errorMessage}\n                    >\n                      <Input\n                        onClick={(event) => event.stopPropagation()}\n                        onBlur={() => setTo({ ...to, validation: isRangeValid(to.value) })}\n                        onChange={(event) => setTo({ ...to, value: event.currentTarget.value })}\n                        value={to.value}\n                      />\n                    </Field>\n                    <Button\n                      aria-label={t('time-picker.time-range.submit-button-label', 'TimePicker submit button')}\n                      onClick={onApply}\n                    >\n                      <Trans i18nKey=\"time-picker.time-range.apply\">Apply time range</Trans>\n                    </Button>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </FocusScope>\n        </div>\n      )}\n    </div>\n  );\n}\n\nconst getStyles = (fromError?: string, toError?: string) => (theme: GrafanaTheme2) => {\n  const inputStyles = getInputStyles({ theme, invalid: false });\n  const bodyMinimumHeight = 250;\n  const bodyHeight = bodyMinimumHeight + calculateErrorHeight(theme, fromError) + calculateErrorHeight(theme, toError);\n\n  return {\n    backdrop: css({\n      position: 'fixed',\n      zIndex: theme.zIndex.modalBackdrop,\n      top: 0,\n      right: 0,\n      bottom: 0,\n      left: 0,\n    }),\n    container: css({\n      display: 'flex',\n      position: 'relative',\n    }),\n    pickerInput: cx(\n      inputStyles.input,\n      inputStyles.wrapper,\n      css({\n        display: 'flex',\n        alignItems: 'center',\n        justifyContent: 'space-between',\n        cursor: 'pointer',\n        paddingRight: 0,\n        paddingLeft: 0,\n        lineHeight: `${theme.spacing.gridSize * theme.components.height.md - 2}px`,\n      })\n    ),\n    caretIcon: cx(\n      inputStyles.suffix,\n      css({\n        position: 'relative',\n        marginLeft: theme.spacing(0.5),\n      })\n    ),\n    clockIcon: cx(\n      inputStyles.prefix,\n      css({\n        position: 'relative',\n        marginRight: theme.spacing(0.5),\n      })\n    ),\n    content: css({\n      background: theme.colors.background.primary,\n      boxShadow: theme.shadows.z3,\n      position: 'absolute',\n      zIndex: theme.zIndex.modal,\n      width: '500px',\n      top: '100%',\n      borderRadius: theme.shape.radius.default,\n      border: `1px solid ${theme.colors.border.weak}`,\n      left: 0,\n      whiteSpace: 'normal',\n    }),\n    body: css({\n      display: 'flex',\n      height: `${bodyHeight}px`,\n    }),\n    description: css({\n      color: theme.colors.text.secondary,\n      fontSize: theme.typography.size.sm,\n    }),\n    leftSide: css({\n      width: '50% !important',\n      borderRight: `1px solid ${theme.colors.border.medium}`,\n    }),\n    rightSide: css({\n      width: '50%',\n      padding: theme.spacing(1),\n    }),\n    title: css({\n      marginBottom: theme.spacing(1),\n    }),\n  };\n};\n\nfunction calculateErrorHeight(theme: GrafanaTheme2, errorMessage?: string): number {\n  if (!errorMessage) {\n    return 0;\n  }\n\n  if (errorMessage.length > 34) {\n    return theme.spacing.gridSize * 6.5;\n  }\n\n  return theme.spacing.gridSize * 4;\n}\n","import { css, cx } from '@emotion/css';\nimport { HTMLAttributes } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles } from '../../themes/mixins';\n\n/**\n * @public\n */\nexport interface CardInnerProps {\n  href?: string;\n  children?: React.ReactNode;\n}\n\n/** @deprecated This component will be removed in a future release */\nconst CardInner = ({ children, href }: CardInnerProps) => {\n  const { inner } = useStyles2(getCardInnerStyles);\n  return href ? (\n    <a className={inner} href={href}>\n      {children}\n    </a>\n  ) : (\n    <>{children}</>\n  );\n};\n\nconst getCardInnerStyles = (theme: GrafanaTheme2) => ({\n  inner: css({\n    display: 'flex',\n    width: '100%',\n    padding: theme.spacing(2),\n  }),\n});\n\n/**\n * @public\n */\nexport interface CardContainerProps extends HTMLAttributes<HTMLOrSVGElement>, CardInnerProps {\n  /** Disable pointer events for the Card, e.g. click events */\n  disableEvents?: boolean;\n  /** No style change on hover */\n  disableHover?: boolean;\n  /** Makes the card selectable, set to \"true\" to apply selected styles */\n  isSelected?: boolean;\n  /** Custom container styles */\n  className?: string;\n  /** Remove the bottom margin */\n  noMargin?: boolean;\n}\n\n/** @deprecated Using `CardContainer` directly is discouraged and should be replaced with `Card` */\nexport const CardContainer = ({\n  children,\n  disableEvents,\n  disableHover,\n  isSelected,\n  className,\n  href,\n  noMargin,\n  ...props\n}: CardContainerProps) => {\n  const { oldContainer } = useStyles2(\n    getCardContainerStyles,\n    disableEvents,\n    disableHover,\n    isSelected,\n    undefined,\n    noMargin\n  );\n\n  return (\n    <div {...props} className={cx(oldContainer, className)}>\n      <CardInner href={href}>{children}</CardInner>\n    </div>\n  );\n};\n\nexport const getCardContainerStyles = (\n  theme: GrafanaTheme2,\n  disabled = false,\n  disableHover = false,\n  isSelected?: boolean,\n  isCompact?: boolean,\n  noMargin = false\n) => {\n  const isSelectable = isSelected !== undefined;\n\n  return {\n    container: css({\n      display: 'grid',\n      position: 'relative',\n      gridTemplateColumns: 'auto 1fr auto',\n      gridTemplateRows: '1fr auto auto auto',\n      gridAutoColumns: '1fr',\n      gridAutoFlow: 'row',\n      gridTemplateAreas: `\n        \"Figure Heading Tags\"\n        \"Figure Meta Tags\"\n        \"Figure Description Tags\"\n        \"Figure Actions Secondary\"`,\n      width: '100%',\n      padding: theme.spacing(isCompact ? 1 : 2),\n      background: theme.colors.background.secondary,\n      borderRadius: theme.shape.radius.default,\n      marginBottom: theme.spacing(noMargin ? 0 : 1),\n      pointerEvents: disabled ? 'none' : 'auto',\n      [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n        transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color', 'color'], {\n          duration: theme.transitions.duration.short,\n        }),\n      },\n\n      ...(!disableHover && {\n        '&:hover': {\n          background: theme.colors.emphasize(theme.colors.background.secondary, 0.03),\n          cursor: 'pointer',\n          zIndex: 1,\n        },\n        '&:focus': getFocusStyles(theme),\n      }),\n\n      ...(isSelectable && {\n        cursor: 'pointer',\n      }),\n\n      ...(isSelected && {\n        outline: `solid 2px ${theme.colors.primary.border}`,\n      }),\n    }),\n    oldContainer: css({\n      display: 'flex',\n      width: '100%',\n      background: theme.colors.background.secondary,\n      borderRadius: theme.shape.radius.default,\n      position: 'relative',\n      pointerEvents: disabled ? 'none' : 'auto',\n      marginBottom: theme.spacing(noMargin ? 0 : 1),\n      [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n        transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color', 'color'], {\n          duration: theme.transitions.duration.short,\n        }),\n      },\n\n      ...(!disableHover && {\n        '&:hover': {\n          background: theme.colors.emphasize(theme.colors.background.secondary, 0.03),\n          cursor: 'pointer',\n          zIndex: 1,\n        },\n        '&:focus': getFocusStyles(theme),\n      }),\n    }),\n  };\n};\n","import { css, cx } from '@emotion/css';\nimport { memo, cloneElement, FC, useMemo, useContext, ReactNode } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles } from '../../themes/mixins';\n\nimport { CardContainer, CardContainerProps, getCardContainerStyles } from './CardContainer';\n\n/**\n * @public\n */\nexport interface Props extends Omit<CardContainerProps, 'disableEvents' | 'disableHover'> {\n  /** Indicates if the card and all its actions can be interacted with */\n  disabled?: boolean;\n  /** Link to redirect to on card click. If provided, the Card inner content will be rendered inside `a` */\n  href?: string;\n  /** On click handler for the Card */\n  onClick?: (e: React.MouseEvent<HTMLElement>) => void;\n  /** @deprecated Use `Card.Heading` instead */\n  heading?: ReactNode;\n  /** @deprecated Use `Card.Description` instead */\n  description?: string;\n  isSelected?: boolean;\n  /** If true, the padding of the Card will be smaller */\n  isCompact?: boolean;\n  /** Remove the bottom margin */\n  noMargin?: boolean;\n}\n\nexport interface CardInterface extends FC<Props> {\n  Heading: typeof Heading;\n  Tags: typeof Tags;\n  Figure: typeof Figure;\n  Meta: typeof Meta;\n  Actions: typeof Actions;\n  SecondaryActions: typeof SecondaryActions;\n  Description: typeof Description;\n}\n\nconst CardContext = React.createContext<{\n  href?: string;\n  onClick?: (e: React.MouseEvent<HTMLElement>) => void;\n  disabled?: boolean;\n  isSelected?: boolean;\n} | null>(null);\n\n/**\n * Generic card component\n *\n * @public\n */\nexport const Card: CardInterface = ({\n  disabled,\n  href,\n  onClick,\n  children,\n  isSelected,\n  isCompact,\n  className,\n  noMargin,\n  ...htmlProps\n}) => {\n  const hasHeadingComponent = useMemo(\n    () => React.Children.toArray(children).some((c) => React.isValidElement(c) && c.type === Heading),\n    [children]\n  );\n\n  const disableHover = disabled || (!onClick && !href);\n  const onCardClick = onClick && !disabled ? onClick : undefined;\n  const styles = useStyles2(getCardContainerStyles, disabled, disableHover, isSelected, isCompact, noMargin);\n\n  return (\n    <CardContainer\n      disableEvents={disabled}\n      disableHover={disableHover}\n      isSelected={isSelected}\n      className={cx(styles.container, className)}\n      noMargin={noMargin}\n      {...htmlProps}\n    >\n      <CardContext.Provider value={{ href, onClick: onCardClick, disabled, isSelected }}>\n        {!hasHeadingComponent && <Heading />}\n        {children}\n      </CardContext.Provider>\n    </CardContainer>\n  );\n};\nCard.displayName = 'Card';\n\ninterface ChildProps {\n  className?: string;\n  disabled?: boolean;\n  children?: React.ReactNode;\n}\n\n/** Main heading for the card */\nconst Heading = ({ children, className, 'aria-label': ariaLabel }: ChildProps & { 'aria-label'?: string }) => {\n  const context = useContext(CardContext);\n  const styles = useStyles2(getHeadingStyles);\n\n  const { href, onClick, isSelected } = context ?? {\n    href: undefined,\n    onClick: undefined,\n    isSelected: undefined,\n  };\n  const optionLabel = t('grafana-ui.card.option', 'option');\n\n  return (\n    <h2 className={cx(styles.heading, className)}>\n      {href ? (\n        <a href={href} className={styles.linkHack} aria-label={ariaLabel} onClick={onClick}>\n          {children}\n        </a>\n      ) : onClick ? (\n        <button onClick={onClick} className={styles.linkHack} aria-label={ariaLabel} type=\"button\">\n          {children}\n        </button>\n      ) : (\n        <>{children}</>\n      )}\n      {/* Input must be readonly because we are providing a value for the checked prop with no onChange handler */}\n      {isSelected !== undefined && <input aria-label={optionLabel} type=\"radio\" checked={isSelected} readOnly />}\n    </h2>\n  );\n};\nHeading.displayName = 'Heading';\n\nconst getHeadingStyles = (theme: GrafanaTheme2) => ({\n  heading: css({\n    gridArea: 'Heading',\n    justifySelf: 'start',\n    display: 'flex',\n    justifyContent: 'space-between',\n    alignItems: 'center',\n    width: '100%',\n    marginBottom: 0,\n    fontSize: theme.typography.size.md,\n    letterSpacing: 'inherit',\n    lineHeight: theme.typography.body.lineHeight,\n    color: theme.colors.text.primary,\n    fontWeight: theme.typography.fontWeightMedium,\n    '& input[readonly]': {\n      cursor: 'inherit',\n    },\n  }),\n  linkHack: css({\n    all: 'unset',\n    '&::after': {\n      position: 'absolute',\n      content: '\"\"',\n      top: 0,\n      bottom: 0,\n      left: 0,\n      right: 0,\n      borderRadius: theme.shape.radius.default,\n    },\n\n    '&:focus-visible': {\n      outline: 'none',\n      outlineOffset: 0,\n      boxShadow: 'none',\n\n      '&::after': {\n        ...getFocusStyles(theme),\n        zIndex: 1,\n      },\n    },\n  }),\n});\n\nconst Tags = ({ children, className }: ChildProps) => {\n  const styles = useStyles2(getTagStyles);\n  return <div className={cx(styles.tagList, className)}>{children}</div>;\n};\nTags.displayName = 'Tags';\n\nconst getTagStyles = (theme: GrafanaTheme2) => ({\n  tagList: css({\n    position: 'relative',\n    gridArea: 'Tags',\n    alignSelf: 'center',\n  }),\n});\n\n/** Card description text */\nconst Description = ({ children, className }: ChildProps) => {\n  const styles = useStyles2(getDescriptionStyles);\n  const Element = typeof children === 'string' ? 'p' : 'div';\n  return <Element className={cx(styles.description, className)}>{children}</Element>;\n};\nDescription.displayName = 'Description';\n\nconst getDescriptionStyles = (theme: GrafanaTheme2) => ({\n  description: css({\n    width: '100%',\n    gridArea: 'Description',\n    margin: theme.spacing(1, 0, 0),\n    color: theme.colors.text.secondary,\n    lineHeight: theme.typography.body.lineHeight,\n  }),\n});\n\nconst Figure = ({ children, align = 'start', className }: ChildProps & { align?: 'start' | 'center' }) => {\n  const styles = useStyles2(getFigureStyles);\n  return (\n    <div\n      className={cx(\n        styles.media,\n        className,\n        css({\n          alignSelf: align,\n        })\n      )}\n    >\n      {children}\n    </div>\n  );\n};\nFigure.displayName = 'Figure';\n\nconst getFigureStyles = (theme: GrafanaTheme2) => ({\n  media: css({\n    position: 'relative',\n    gridArea: 'Figure',\n\n    marginRight: theme.spacing(2),\n    width: '40px',\n\n    '> img': {\n      width: '100%',\n    },\n\n    '&:empty': {\n      display: 'none',\n    },\n  }),\n});\n\nconst Meta = memo(({ children, className, separator = '|' }: ChildProps & { separator?: string }) => {\n  const styles = useStyles2(getMetaStyles);\n  let meta = children;\n\n  const filtered = React.Children.toArray(children).filter(Boolean);\n  if (!filtered.length) {\n    return null;\n  }\n  meta = filtered.map((element, i) => (\n    <div key={`element_${i}`} className={styles.metadataItem}>\n      {element}\n    </div>\n  ));\n  // Join meta data elements by separator\n  if (filtered.length > 1 && separator) {\n    meta = filtered.reduce((prev, curr, i) => [\n      prev,\n      <span key={`separator_${i}`} className={styles.separator}>\n        {separator}\n      </span>,\n      curr,\n    ]);\n  }\n  return <div className={cx(styles.metadata, className)}>{meta}</div>;\n});\nMeta.displayName = 'Meta';\n\nconst getMetaStyles = (theme: GrafanaTheme2) => ({\n  metadata: css({\n    gridArea: 'Meta',\n    display: 'flex',\n    alignItems: 'center',\n    width: '100%',\n    fontSize: theme.typography.size.sm,\n    color: theme.colors.text.secondary,\n    margin: theme.spacing(0.5, 0, 0),\n    lineHeight: theme.typography.bodySmall.lineHeight,\n    overflowWrap: 'anywhere',\n  }),\n  metadataItem: css({\n    // Needed to allow for clickable children in metadata\n    zIndex: 0,\n  }),\n  separator: css({\n    margin: `0 ${theme.spacing(1)}`,\n  }),\n});\n\ninterface ActionsProps extends ChildProps {\n  children?: React.ReactNode;\n  variant?: 'primary' | 'secondary';\n}\n\nconst BaseActions = ({ children, disabled, variant, className }: ActionsProps) => {\n  const styles = useStyles2(getActionStyles);\n  const context = useContext(CardContext);\n  const isDisabled = context?.disabled || disabled;\n\n  const css = variant === 'primary' ? styles.actions : styles.secondaryActions;\n  return (\n    <div className={cx(css, className)}>\n      {React.Children.map(children, (child) => {\n        return React.isValidElement(child) ? cloneElement(child, { disabled: isDisabled, ...child.props }) : null;\n      })}\n    </div>\n  );\n};\n\nconst getActionStyles = (theme: GrafanaTheme2) => ({\n  actions: css({\n    display: 'flex',\n    flexDirection: 'row',\n    flexWrap: 'wrap',\n    gap: theme.spacing(1),\n    gridArea: 'Actions',\n    marginTop: theme.spacing(2),\n  }),\n  secondaryActions: css({\n    alignSelf: 'center',\n    color: theme.colors.text.secondary,\n    display: 'flex',\n    flexDirection: 'row',\n    flexWrap: 'wrap',\n    gap: theme.spacing(1),\n    gridArea: 'Secondary',\n    marginTop: theme.spacing(2),\n  }),\n});\n\nconst Actions = ({ children, disabled, className }: ChildProps) => {\n  return (\n    <BaseActions variant=\"primary\" disabled={disabled} className={className}>\n      {children}\n    </BaseActions>\n  );\n};\nActions.displayName = 'Actions';\n\nconst SecondaryActions = ({ children, disabled, className }: ChildProps) => {\n  return (\n    <BaseActions variant=\"secondary\" disabled={disabled} className={className}>\n      {children}\n    </BaseActions>\n  );\n};\nSecondaryActions.displayName = 'SecondaryActions';\n\n/**\n * @public\n * @deprecated Use `className` on respective components to modify styles\n */\nexport const getCardStyles = (theme: GrafanaTheme2) => {\n  return {\n    inner: css({\n      display: 'flex',\n      justifyContent: 'space-between',\n      alignItems: 'center',\n      width: '100%',\n      flexWrap: 'wrap',\n    }),\n    ...getHeadingStyles(theme),\n    ...getMetaStyles(theme),\n    ...getDescriptionStyles(theme),\n    ...getFigureStyles(theme),\n    ...getActionStyles(theme),\n    ...getTagStyles(theme),\n  };\n};\n\nCard.Heading = Heading;\nCard.Tags = Tags;\nCard.Figure = Figure;\nCard.Meta = Meta;\nCard.Actions = Actions;\nCard.SecondaryActions = SecondaryActions;\nCard.Description = Description;\n","import { HTMLAttributes } from 'react';\n\nimport { PluginSignatureStatus, PluginSignatureType } from '@grafana/data';\n\nimport { IconName } from '../../types/icon';\nimport { Badge, BadgeProps } from '../Badge/Badge';\n\nconst SIGNATURE_ICONS: Record<string, IconName> = {\n  [PluginSignatureType.grafana]: 'grafana',\n  [PluginSignatureType.commercial]: 'shield',\n  [PluginSignatureType.community]: 'shield',\n  DEFAULT: 'shield-exclamation',\n};\n\n/**\n * @public\n */\nexport interface PluginSignatureBadgeProps extends HTMLAttributes<HTMLDivElement> {\n  status?: PluginSignatureStatus;\n  signatureType?: PluginSignatureType;\n  signatureOrg?: string;\n}\n\n/**\n * @public\n */\nexport const PluginSignatureBadge = ({\n  status,\n  color,\n  signatureType,\n  signatureOrg,\n  ...otherProps\n}: PluginSignatureBadgeProps) => {\n  const display = getSignatureDisplayModel(status, signatureType, signatureOrg);\n  return (\n    <Badge text={display.text} color={display.color} icon={display.icon} tooltip={display.tooltip} {...otherProps} />\n  );\n};\n\nPluginSignatureBadge.displayName = 'PluginSignatureBadge';\n\nfunction getSignatureDisplayModel(\n  signature?: PluginSignatureStatus,\n  signatureType?: PluginSignatureType,\n  signatureOrg?: string\n): BadgeProps {\n  if (!signature) {\n    signature = PluginSignatureStatus.invalid;\n  }\n\n  const signatureIcon = SIGNATURE_ICONS[signatureType || ''] || SIGNATURE_ICONS.DEFAULT;\n\n  switch (signature) {\n    case PluginSignatureStatus.internal:\n      return { text: 'Core', color: 'blue', tooltip: 'Core plugin that is bundled with Grafana' };\n    case PluginSignatureStatus.valid:\n      return {\n        text: signatureType ? signatureType : 'Signed',\n        icon: signatureType ? signatureIcon : 'lock',\n        color: 'green',\n        tooltip: 'Signed and verified plugin',\n      };\n    case PluginSignatureStatus.invalid:\n      return {\n        text: 'Invalid signature',\n        icon: 'exclamation-triangle',\n        color: 'red',\n        tooltip: 'Invalid plugin signature',\n      };\n    case PluginSignatureStatus.modified:\n      return {\n        text: 'Modified signature',\n        icon: 'exclamation-triangle',\n        color: 'red',\n        tooltip: 'Valid signature but content has been modified',\n      };\n    case PluginSignatureStatus.missing:\n      return {\n        text: 'Missing signature',\n        icon: 'exclamation-triangle',\n        color: 'red',\n        tooltip: 'Missing plugin signature',\n      };\n    default:\n      return {\n        text: 'Unsigned',\n        icon: 'exclamation-triangle',\n        color: 'red',\n        tooltip: 'Unsigned external plugin',\n      };\n  }\n}\n","import { css, cx } from '@emotion/css';\nimport { useMemo, PropsWithChildren } from 'react';\n\nimport { dateTime, DateTimeInput, GrafanaTheme2 } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\nimport { UserView } from './types';\n\nexport interface UserIconProps {\n  /** An object that contains the user's details and 'lastActiveAt' status */\n  userView: UserView;\n  /** A boolean value that determines whether the tooltip should be shown or not */\n  showTooltip?: boolean;\n  /** An optional class name to be added to the icon element */\n  className?: string;\n  /** onClick handler to be called when the icon is clicked */\n  onClick?: () => void;\n}\n\n/**\n * A helper function that takes in a dateString parameter\n * and returns the user's last viewed date in a specific format.\n */\nconst formatViewed = (dateString: DateTimeInput): string => {\n  const date = dateTime(dateString);\n  const diffHours = date.diff(dateTime(), 'hours', false);\n  return `Active last ${(Math.floor(-diffHours / 24) + 1) * 24}h`;\n};\n\n/**\n * Output the initials of the first and last name (if given), capitalized and concatenated together.\n * If name is not provided, an empty string is returned.\n * @param {string} [name] The name to extract initials from.\n * @returns {string} The uppercase initials of the first and last name.\n * @example\n * // Returns 'JD'\n * getUserInitials('John Doe');\n * // Returns 'A'\n * getUserInitials('Alice');\n * // Returns ''\n * getUserInitials();\n */\nconst getUserInitials = (name?: string) => {\n  if (!name) {\n    return '';\n  }\n  const [first, last] = name.split(' ');\n  return `${first?.[0] ?? ''}${last?.[0] ?? ''}`.toUpperCase();\n};\n\nexport const UserIcon = ({\n  userView,\n  className,\n  children,\n  onClick,\n  showTooltip = true,\n}: PropsWithChildren<UserIconProps>) => {\n  const { user, lastActiveAt } = userView;\n  const isActive = dateTime(lastActiveAt).diff(dateTime(), 'minutes', true) >= -15;\n  const theme = useTheme2();\n  const styles = useMemo(() => getStyles(theme, isActive), [theme, isActive]);\n  const content = (\n    <button\n      type={'button'}\n      onClick={onClick}\n      className={cx(styles.container, onClick && styles.pointer, className)}\n      aria-label={t('grafana-ui.user-icon.label', '{{name}} icon', { name: user.name })}\n    >\n      {children ? (\n        <div className={cx(styles.content, styles.textContent)}>{children}</div>\n      ) : user.avatarUrl ? (\n        <img className={styles.content} src={user.avatarUrl} alt={`${user.name} avatar`} />\n      ) : (\n        <div className={cx(styles.content, styles.textContent)}>{getUserInitials(user.name)}</div>\n      )}\n    </button>\n  );\n\n  if (showTooltip) {\n    const tooltip = (\n      <div className={styles.tooltipContainer}>\n        <div className={styles.tooltipName}>{user.name}</div>\n        <div className={styles.tooltipDate}>\n          {isActive ? (\n            <div className={styles.dotContainer}>\n              <span>\n                <Trans i18nKey=\"grafana-ui.user-icon.active-text\">Active last 15m</Trans>\n              </span>\n              <span className={styles.dot}></span>\n            </div>\n          ) : (\n            formatViewed(lastActiveAt)\n          )}\n        </div>\n      </div>\n    );\n\n    return <Tooltip content={tooltip}>{content}</Tooltip>;\n  } else {\n    return content;\n  }\n};\n\nconst getIconBorder = (color: string): string => {\n  return `0 0 0 1px ${color}`;\n};\n\nexport const getStyles = (theme: GrafanaTheme2, isActive: boolean) => {\n  const shadowColor = isActive ? theme.colors.primary.main : theme.colors.border.medium;\n  const shadowHoverColor = isActive ? theme.colors.primary.text : theme.colors.border.strong;\n\n  return {\n    container: css({\n      padding: 0,\n      width: '30px',\n      height: '30px',\n      background: 'none',\n      border: 'none',\n      borderRadius: theme.shape.radius.circle,\n      '& > *': {\n        borderRadius: theme.shape.radius.circle,\n      },\n    }),\n    content: css({\n      lineHeight: '24px',\n      maxWidth: '100%',\n      border: `3px ${theme.colors.background.primary} solid`,\n      boxShadow: getIconBorder(shadowColor),\n      backgroundClip: 'padding-box',\n      '&:hover': {\n        boxShadow: getIconBorder(shadowHoverColor),\n      },\n    }),\n    textContent: css({\n      background: theme.colors.background.primary,\n      padding: 0,\n      color: theme.colors.text.secondary,\n      textAlign: 'center',\n      fontSize: theme.typography.size.sm,\n      '&:focus': {\n        boxShadow: getIconBorder(shadowColor),\n      },\n    }),\n    tooltipContainer: css({\n      textAlign: 'center',\n      padding: theme.spacing(0, 1),\n    }),\n    tooltipName: css({\n      fontWeight: theme.typography.fontWeightBold,\n    }),\n    tooltipDate: css({\n      fontWeight: theme.typography.fontWeightRegular,\n    }),\n    dotContainer: css({\n      display: 'flex',\n      alignItems: 'center',\n    }),\n    dot: css({\n      height: '6px',\n      width: '6px',\n      backgroundColor: theme.colors.primary.main,\n      borderRadius: theme.shape.radius.circle,\n      display: 'inline-block',\n      marginLeft: theme.spacing(1),\n    }),\n    pointer: css({\n      cursor: 'pointer',\n    }),\n  };\n};\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { UserIcon } from './UserIcon';\nimport { UserView } from './types';\n\nexport interface UsersIndicatorProps {\n  /** An object that contains the user's details and 'lastActiveAt' status */\n  users: UserView[];\n  /** A limit of how many user icons to show before collapsing them and showing a number of users instead */\n  limit?: number;\n  /** onClick handler for the user number indicator */\n  onClick?: () => void;\n}\nexport const UsersIndicator = ({ users, onClick, limit = 4 }: UsersIndicatorProps) => {\n  const styles = useStyles2(getStyles);\n  if (!users.length) {\n    return null;\n  }\n  // Make sure limit is never negative\n  limit = limit > 0 ? limit : 4;\n  const limitReached = users.length > limit;\n  const extraUsers = users.length - limit;\n  // Prevent breaking the layout when there's more than 99 users\n  const tooManyUsers = extraUsers > 99;\n\n  return (\n    <div\n      className={styles.container}\n      aria-label={t('grafana-ui.users-indicator.container-label', 'Users indicator container')}\n    >\n      {limitReached && (\n        <UserIcon onClick={onClick} userView={{ user: { name: 'Extra users' }, lastActiveAt: '' }} showTooltip={false}>\n          {tooManyUsers\n            ? // eslint-disable-next-line @grafana/i18n/no-untranslated-strings\n              '...'\n            : `+${extraUsers}`}\n        </UserIcon>\n      )}\n      {users\n        .slice(0, limitReached ? limit : limit + 1)\n        .reverse()\n        .map((userView) => (\n          <UserIcon key={userView.user.name} userView={userView} />\n        ))}\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      display: 'flex',\n      justifyContent: 'center',\n      flexDirection: 'row-reverse',\n      marginLeft: theme.spacing(1),\n\n      '& > button': {\n        marginLeft: theme.spacing(-1), // Overlay the elements a bit on top of each other\n      },\n    }),\n    dots: css({\n      marginBottom: '3px',\n    }),\n  };\n};\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2, ThemeSpacingTokens } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getResponsiveStyle, ResponsiveProp } from '../Layout/utils/responsiveness';\n\nexport interface AvatarProps {\n  src: string;\n  alt: string;\n  width?: ResponsiveProp<ThemeSpacingTokens>;\n  height?: ResponsiveProp<ThemeSpacingTokens>;\n}\nexport const Avatar = ({ src, alt, width, height }: AvatarProps) => {\n  const styles = useStyles2(getStyles, width, height);\n\n  return <img className={styles.image} src={src} alt={alt} />;\n};\n\nconst getStyles = (theme: GrafanaTheme2, width: AvatarProps['width'] = 3, height: AvatarProps['height'] = 3) => {\n  return {\n    image: css([\n      getResponsiveStyle(theme, width, (val) => ({\n        width: theme.spacing(val),\n      })),\n      getResponsiveStyle(theme, height, (val) => ({\n        height: theme.spacing(val),\n      })),\n      { borderRadius: theme.shape.radius.circle },\n    ]),\n  };\n};\n","import { css } from '@emotion/css';\n\nimport { GrafanaTheme2, ThemeSpacingTokens } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\ninterface DividerProps {\n  direction?: 'vertical' | 'horizontal';\n  spacing?: ThemeSpacingTokens;\n}\n\nexport const Divider = ({ direction = 'horizontal', spacing = 2 }: DividerProps) => {\n  const styles = useStyles2(getStyles, spacing);\n\n  if (direction === 'vertical') {\n    return <div className={styles.verticalDivider}></div>;\n  } else {\n    return <hr className={styles.horizontalDivider} />;\n  }\n};\n\nDivider.displayName = 'Divider';\n\nconst getStyles = (theme: GrafanaTheme2, spacing: ThemeSpacingTokens) => {\n  return {\n    horizontalDivider: css({\n      borderTop: `1px solid ${theme.colors.border.weak}`,\n      margin: theme.spacing(spacing, 0),\n      width: '100%',\n    }),\n    verticalDivider: css({\n      borderRight: `1px solid ${theme.colors.border.weak}`,\n      margin: theme.spacing(0, spacing),\n      height: '100%',\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport { clamp } from 'lodash';\nimport { useCallback, useId, useRef } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { ComponentSize } from '../../types/size';\nimport { DragHandlePosition, getDragStyles } from '../DragHandle/DragHandle';\n\nexport interface UseSplitterOptions {\n  /**\n   * The initial size of the primary pane between 0-1, defaults to 0.5\n   * If `usePixels` is true, this is the initial size in pixels of the second pane.\n   */\n  initialSize?: number;\n  direction: 'row' | 'column';\n  dragPosition?: DragHandlePosition;\n  usePixels?: boolean;\n  /**\n   * Called when ever the size of the primary pane changes\n   * @param flexSize (float from 0-1)\n   */\n  onSizeChanged?: (flexSize: number, firstPanePixels: number, secondPanePixels: number) => void;\n  onResizing?: (flexSize: number, firstPanePixels: number, secondPanePixels: number) => void;\n\n  // Size of the region left of the handle indicator that is responsive to dragging. At the same time acts as a margin\n  // pushing the left pane content left.\n  handleSize?: ComponentSize;\n}\n\nconst PIXELS_PER_MS = 0.3 as const;\nconst VERTICAL_KEYS = new Set(['ArrowUp', 'ArrowDown']);\nconst HORIZONTAL_KEYS = new Set(['ArrowLeft', 'ArrowRight']);\n\nconst propsForDirection = {\n  row: {\n    dim: 'width',\n    axis: 'clientX',\n    min: 'minWidth',\n    max: 'maxWidth',\n  },\n  column: {\n    dim: 'height',\n    axis: 'clientY',\n    min: 'minHeight',\n    max: 'maxHeight',\n  },\n} as const;\n\nexport function useSplitter(options: UseSplitterOptions) {\n  const {\n    direction,\n    initialSize = options.usePixels ? 300 : 0.5,\n    dragPosition = 'middle',\n    onResizing,\n    onSizeChanged,\n    usePixels,\n  } = options;\n\n  const handleSize = getPixelSize(options.handleSize);\n  const splitterRef = useRef<HTMLDivElement | null>(null);\n  const firstPaneRef = useRef<HTMLDivElement | null>(null);\n  const secondPaneRef = useRef<HTMLDivElement | null>(null);\n  const containerRef = useRef<HTMLDivElement | null>(null);\n  const containerSize = useRef<number | null>(null);\n  const primarySizeRef = useRef<number | null>(null);\n  const referencePaneSize = useRef<MeasureResult | undefined>(undefined);\n  const savedPos = useRef<string | undefined>(undefined);\n\n  const measurementProp = propsForDirection[direction].dim;\n  const clientAxis = propsForDirection[direction].axis;\n  const minDimProp = propsForDirection[direction].min;\n  const maxDimProp = propsForDirection[direction].max;\n  const dragStart = useRef<number | null>(null);\n\n  const onPointerDown = useCallback(\n    (e: React.PointerEvent<HTMLDivElement>) => {\n      if (!firstPaneRef.current || !secondPaneRef.current) {\n        return;\n      }\n\n      // measure left-side width\n      primarySizeRef.current = firstPaneRef.current!.getBoundingClientRect()[measurementProp];\n      containerSize.current = containerRef.current!.getBoundingClientRect()[measurementProp];\n\n      dragStart.current = e[clientAxis];\n      splitterRef.current!.setPointerCapture(e.pointerId);\n\n      if (usePixels) {\n        referencePaneSize.current = measureElement(secondPaneRef.current, usePixels);\n      } else {\n        referencePaneSize.current = measureElement(firstPaneRef.current);\n      }\n\n      savedPos.current = undefined;\n    },\n    [measurementProp, clientAxis, usePixels]\n  );\n\n  const onUpdateSize = useCallback(\n    (diff: number) => {\n      if (!containerSize.current || !primarySizeRef.current || !secondPaneRef.current) {\n        return;\n      }\n\n      const firstPanePixels = primarySizeRef.current;\n      const secondPanePixels = containerSize.current - firstPanePixels - handleSize;\n      const dims = referencePaneSize.current!;\n\n      if (usePixels) {\n        const newSize = clamp(secondPanePixels - diff, dims[minDimProp], dims[maxDimProp]);\n        secondPaneRef.current!.style.flexBasis = `${newSize}px`;\n        splitterRef.current!.ariaValueNow = `${newSize}`;\n        onResizing?.(newSize, firstPanePixels + diff, newSize);\n      } else {\n        const newSize = clamp(primarySizeRef.current + diff, dims[minDimProp], dims[maxDimProp]);\n        const newFlex = newSize / (containerSize.current! - handleSize);\n        firstPaneRef.current!.style.flexGrow = `${newFlex}`;\n        secondPaneRef.current!.style.flexGrow = `${1 - newFlex}`;\n        splitterRef.current!.ariaValueNow = ariaValue(newSize, dims[minDimProp], dims[maxDimProp]);\n        onResizing?.(newFlex, newSize, secondPanePixels - diff);\n      }\n    },\n    [onResizing, handleSize, usePixels, minDimProp, maxDimProp]\n  );\n\n  const onPointerMove = useCallback(\n    (e: React.PointerEvent<HTMLDivElement>) => {\n      if (dragStart.current !== null) {\n        onUpdateSize(e[clientAxis] - dragStart.current);\n      }\n    },\n    [onUpdateSize, clientAxis]\n  );\n\n  const onPointerUp = useCallback(\n    (e: React.PointerEvent<HTMLDivElement>) => {\n      e.preventDefault();\n      e.stopPropagation();\n\n      dragStart.current = null;\n\n      splitterRef.current!.releasePointerCapture(e.pointerId);\n\n      const firstPaneSize = firstPaneRef.current!.getBoundingClientRect()[measurementProp];\n      const secondPanePixels = containerSize.current! - firstPaneSize - handleSize;\n\n      onSizeChanged?.(parseFloat(firstPaneRef.current!.style.flexGrow), firstPaneSize, secondPanePixels);\n    },\n    [onSizeChanged, handleSize, measurementProp]\n  );\n\n  const pressedKeys = useRef(new Set<string>());\n  const keysLastHandledAt = useRef<number | null>(null);\n  const handlePressedKeys = useCallback(\n    (time: number) => {\n      const nothingPressed = pressedKeys.current.size === 0;\n      if (nothingPressed) {\n        keysLastHandledAt.current = null;\n        return;\n      } else if (primarySizeRef.current === null) {\n        return;\n      }\n\n      const dt = time - (keysLastHandledAt.current ?? time);\n      const dx = dt * PIXELS_PER_MS;\n      let sizeChange = 0;\n\n      if (direction === 'row') {\n        if (pressedKeys.current.has('ArrowLeft')) {\n          sizeChange -= dx;\n        }\n        if (pressedKeys.current.has('ArrowRight')) {\n          sizeChange += dx;\n        }\n      } else {\n        if (pressedKeys.current.has('ArrowUp')) {\n          sizeChange -= dx;\n        }\n        if (pressedKeys.current.has('ArrowDown')) {\n          sizeChange += dx;\n        }\n      }\n\n      // measure primary and container\n      primarySizeRef.current = firstPaneRef.current!.getBoundingClientRect()[measurementProp];\n      containerSize.current = containerRef.current!.getBoundingClientRect()[measurementProp];\n\n      onUpdateSize(sizeChange);\n\n      keysLastHandledAt.current = time;\n\n      window.requestAnimationFrame(handlePressedKeys);\n    },\n    [direction, measurementProp, onUpdateSize]\n  );\n\n  const onKeyDown = useCallback(\n    (e: React.KeyboardEvent<HTMLDivElement>) => {\n      if (!firstPaneRef.current || !secondPaneRef.current || !splitterRef.current || !containerRef.current) {\n        return;\n      }\n\n      if (\n        !(\n          (direction === 'column' && VERTICAL_KEYS.has(e.key)) ||\n          (direction === 'row' && HORIZONTAL_KEYS.has(e.key))\n        ) ||\n        pressedKeys.current.has(e.key)\n      ) {\n        return;\n      }\n\n      savedPos.current = undefined;\n      e.preventDefault();\n      e.stopPropagation();\n\n      primarySizeRef.current = firstPaneRef.current.getBoundingClientRect()[measurementProp];\n      containerSize.current = containerRef.current!.getBoundingClientRect()[measurementProp];\n\n      if (usePixels) {\n        referencePaneSize.current = measureElement(secondPaneRef.current!);\n      } else {\n        referencePaneSize.current = measureElement(firstPaneRef.current!);\n      }\n\n      const newKey = !pressedKeys.current.has(e.key);\n\n      if (newKey) {\n        const initiateAnimationLoop = pressedKeys.current.size === 0;\n        pressedKeys.current.add(e.key);\n\n        if (initiateAnimationLoop) {\n          window.requestAnimationFrame(handlePressedKeys);\n        }\n      }\n    },\n    [direction, handlePressedKeys, , measurementProp, usePixels]\n  );\n\n  const onKeyUp = useCallback(\n    (e: React.KeyboardEvent<HTMLDivElement>) => {\n      if (\n        (direction === 'row' && !HORIZONTAL_KEYS.has(e.key)) ||\n        (direction === 'column' && !VERTICAL_KEYS.has(e.key))\n      ) {\n        return;\n      }\n\n      pressedKeys.current.delete(e.key);\n\n      if (primarySizeRef.current !== null) {\n        const secondPanePixels = containerSize.current! - primarySizeRef.current - handleSize;\n        onSizeChanged?.(parseFloat(firstPaneRef.current!.style.flexGrow), primarySizeRef.current, secondPanePixels);\n      }\n    },\n    [direction, onSizeChanged, handleSize]\n  );\n\n  const onDoubleClick = useCallback(() => {\n    if (!firstPaneRef.current || !secondPaneRef.current) {\n      return;\n    }\n\n    if (usePixels) {\n      secondPaneRef.current.style.flexBasis = `${initialSize}px`;\n    } else {\n      firstPaneRef.current.style.flexGrow = '0.5';\n      secondPaneRef.current.style.flexGrow = '0.5';\n      primarySizeRef.current = firstPaneRef.current!.getBoundingClientRect()[measurementProp];\n      splitterRef.current!.ariaValueNow = `50`;\n    }\n  }, [measurementProp, usePixels, initialSize]);\n\n  const onBlur = useCallback(() => {\n    // If focus is lost while keys are held, stop changing panel sizes\n    if (pressedKeys.current.size > 0) {\n      pressedKeys.current.clear();\n      dragStart.current = null;\n\n      if (typeof primarySizeRef.current === 'number') {\n        const secondPanePixels = containerSize.current! - primarySizeRef.current - handleSize;\n        onSizeChanged?.(parseFloat(firstPaneRef.current!.style.flexGrow), primarySizeRef.current, secondPanePixels);\n      }\n    }\n  }, [onSizeChanged, handleSize]);\n\n  const styles = useStyles2(getStyles, direction);\n  const dragStyles = useStyles2(getDragStyles, dragPosition);\n  const dragHandleStyle = direction === 'column' ? dragStyles.dragHandleHorizontal : dragStyles.dragHandleVertical;\n  const id = useId();\n\n  const primaryStyles: React.CSSProperties = {\n    flexGrow: clamp(initialSize, 0, 1),\n    [minDimProp]: 'min-content',\n  };\n\n  const secondaryStyles: React.CSSProperties = {\n    flexGrow: clamp(1 - initialSize, 0, 1),\n    [minDimProp]: 'min-content',\n  };\n\n  if (usePixels) {\n    primaryStyles.flexGrow = 1;\n    secondaryStyles.flexGrow = 'unset';\n    secondaryStyles.flexBasis = `${initialSize}px`;\n  }\n\n  const primaryId = `start-panel-${id}`;\n\n  return {\n    containerProps: {\n      ref: containerRef,\n      className: styles.container,\n    },\n    primaryProps: {\n      ref: firstPaneRef,\n      className: styles.panel,\n      style: primaryStyles,\n      id: primaryId,\n    },\n    secondaryProps: {\n      ref: secondPaneRef,\n      className: styles.panel,\n      style: secondaryStyles,\n    },\n    splitterProps: {\n      onPointerUp,\n      onPointerDown,\n      onPointerMove,\n      onKeyDown,\n      onKeyUp,\n      onDoubleClick,\n      onBlur,\n      ref: splitterRef,\n      style: { [measurementProp]: `${handleSize}px` },\n      role: 'separator',\n      'aria-valuemin': 0,\n      'aria-valuemax': 100,\n      'aria-valuenow': initialSize * 100,\n      'aria-controls': primaryId,\n      'aria-label': 'Pane resize widget',\n      tabIndex: 0,\n      className: dragHandleStyle,\n    },\n  };\n}\n\nfunction ariaValue(value: number, min: number, max: number) {\n  return `${clamp(((value - min) / (max - min)) * 100, 0, 100)}`;\n}\n\ninterface MeasureResult {\n  minWidth: number;\n  maxWidth: number;\n  minHeight: number;\n  maxHeight: number;\n}\n\nfunction measureElement<T extends HTMLElement>(ref: T, usePixels?: boolean): MeasureResult {\n  const savedBodyOverflow = document.body.style.overflow;\n  const savedWidth = ref.style.width;\n  const savedHeight = ref.style.height;\n  const savedFlex = ref.style.flexGrow;\n  const savedFlexBasis = ref.style.flexBasis;\n\n  document.body.style.overflow = 'hidden';\n\n  ref.style.flexGrow = '0';\n  ref.style.flexBasis = '0';\n\n  const { width: minWidth, height: minHeight } = ref.getBoundingClientRect();\n\n  ref.style.flexGrow = '100';\n\n  const { width: maxWidth, height: maxHeight } = ref.getBoundingClientRect();\n\n  document.body.style.overflow = savedBodyOverflow;\n\n  ref.style.width = savedWidth;\n  ref.style.height = savedHeight;\n  ref.style.flexGrow = savedFlex;\n  ref.style.flexBasis = savedFlexBasis;\n\n  return { minWidth, maxWidth, minHeight, maxHeight };\n}\n\nfunction getStyles(theme: GrafanaTheme2, direction: UseSplitterOptions['direction']) {\n  return {\n    container: css({\n      display: 'flex',\n      flexDirection: direction === 'row' ? 'row' : 'column',\n      width: '100%',\n      flexGrow: 1,\n      overflow: 'hidden',\n    }),\n    panel: css({ display: 'flex', position: 'relative', flexBasis: 0 }),\n  };\n}\n\nfunction getPixelSize(size: ComponentSize = 'md') {\n  return {\n    xs: 4,\n    sm: 8,\n    md: 16,\n    lg: 32,\n  }[size];\n}\n","import { memo } from 'react';\n\nimport { DataFrame, getFieldDisplayName, getFieldSeriesColor } from '@grafana/data';\nimport { VizLegendOptions, AxisPlacement } from '@grafana/schema';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { VizLayout, VizLayoutLegendProps } from '../VizLayout/VizLayout';\nimport { VizLegend } from '../VizLegend/VizLegend';\nimport { VizLegendItem } from '../VizLegend/types';\n\nimport { UPlotConfigBuilder } from './config/UPlotConfigBuilder';\nimport { getDisplayValuesForCalcs } from './utils';\n\ninterface PlotLegendProps extends VizLegendOptions, Omit<VizLayoutLegendProps, 'children'> {\n  data: DataFrame[];\n  config: UPlotConfigBuilder;\n}\n\n/**\n * mostly duplicates logic in PlotLegend below :(\n *\n * @internal\n */\nexport function hasVisibleLegendSeries(config: UPlotConfigBuilder, data: DataFrame[]) {\n  return config.getSeries().some((s) => {\n    const fieldIndex = s.props.dataFrameFieldIndex;\n\n    if (!fieldIndex) {\n      return false;\n    }\n\n    const field = data[fieldIndex.frameIndex]?.fields[fieldIndex.fieldIndex];\n\n    if (!field || field.config.custom?.hideFrom?.legend) {\n      return false;\n    }\n\n    return true;\n  });\n}\n\nexport const PlotLegend = memo(\n  ({ data, config, placement, calcs, displayMode, ...vizLayoutLegendProps }: PlotLegendProps) => {\n    const theme = useTheme2();\n    const legendItems = config\n      .getSeries()\n      .map<VizLegendItem | undefined>((s) => {\n        const seriesConfig = s.props;\n        const fieldIndex = seriesConfig.dataFrameFieldIndex;\n        const axisPlacement = config.getAxisPlacement(s.props.scaleKey);\n\n        if (!fieldIndex) {\n          return undefined;\n        }\n\n        const field = data[fieldIndex.frameIndex]?.fields[fieldIndex.fieldIndex];\n\n        if (!field || field.config.custom?.hideFrom?.legend) {\n          return undefined;\n        }\n\n        const label = getFieldDisplayName(field, data[fieldIndex.frameIndex]!, data);\n        const scaleColor = getFieldSeriesColor(field, theme);\n        const seriesColor = scaleColor.color;\n\n        return {\n          disabled: !(seriesConfig.show ?? true),\n          fieldIndex,\n          color: seriesColor,\n          label,\n          yAxis: axisPlacement === AxisPlacement.Left || axisPlacement === AxisPlacement.Bottom ? 1 : 2,\n          getDisplayValues: () => getDisplayValuesForCalcs(calcs, field, theme),\n          getItemKey: () => `${label}-${fieldIndex.frameIndex}-${fieldIndex.fieldIndex}`,\n          lineStyle: seriesConfig.lineStyle,\n        };\n      })\n      .filter((i): i is VizLegendItem => i !== undefined);\n\n    return (\n      <VizLayout.Legend placement={placement} {...vizLayoutLegendProps}>\n        <VizLegend\n          placement={placement}\n          items={legendItems}\n          displayMode={displayMode}\n          sortBy={vizLayoutLegendProps.sortBy}\n          sortDesc={vizLayoutLegendProps.sortDesc}\n          isSortable={true}\n        />\n      </VizLayout.Legend>\n    );\n  }\n);\n\nPlotLegend.displayName = 'PlotLegend';\n","import { css } from '@emotion/css';\nimport { useMemo } from 'react';\nimport * as React from 'react';\n\ninterface XYCanvasProps {\n  top: number; // css pxls\n  left: number; // css pxls\n}\n\n/**\n * Renders absolutely positioned element on top of the uPlot's plotting area (axes are not included!).\n * Useful when you want to render some overlay with canvas-independent elements on top of the plot.\n */\nexport const XYCanvas = ({ children, left, top }: React.PropsWithChildren<XYCanvasProps>) => {\n  const className = useMemo(() => {\n    return css({\n      position: 'absolute',\n      overflow: 'visible',\n      left: `${left}px`,\n      top: `${top}px`,\n    });\n  }, [left, top]);\n\n  return <div className={className}>{children}</div>;\n};\n","import * as React from 'react';\n\ninterface MarkerProps {\n  /** x position relative to plotting area bounding box*/\n  x: number;\n  /** y position relative to plotting area bounding box*/\n  y: number;\n}\n\n// An abstraction over a component rendered within a chart canvas.\n// Marker is rendered with DOM coords of the chart bounding box.\nexport const Marker = ({ x, y, children }: React.PropsWithChildren<MarkerProps>) => {\n  return (\n    <div\n      style={{\n        position: 'absolute',\n        top: `${y}px`,\n        left: `${x}px`,\n      }}\n    >\n      {children}\n    </div>\n  );\n};\n","import { useLayoutEffect, useMemo, useRef, useState, ReactNode } from 'react';\nimport * as React from 'react';\nimport { useMountedState } from 'react-use';\nimport uPlot from 'uplot';\n\nimport { DataFrame } from '@grafana/data';\n\nimport { UPlotConfigBuilder } from '../config/UPlotConfigBuilder';\n\nimport { Marker } from './Marker';\nimport { XYCanvas } from './XYCanvas';\n\ninterface EventsCanvasProps {\n  id: string;\n  config: UPlotConfigBuilder;\n  events: DataFrame[];\n  renderEventMarker: (dataFrame: DataFrame, rowIndex: number) => ReactNode;\n  mapEventToXYCoords: (dataFrame: DataFrame, rowIndex: number) => { x: number; y: number } | undefined;\n}\n\nexport function EventsCanvas({ id, events, renderEventMarker, mapEventToXYCoords, config }: EventsCanvasProps) {\n  const plotInstance = useRef<uPlot>();\n  // render token required to re-render annotation markers. Rendering lines happens in uPlot and the props do not change\n  // so we need to force the re-render when the draw hook was performed by uPlot\n  const [renderToken, setRenderToken] = useState(0);\n  const isMounted = useMountedState();\n\n  useLayoutEffect(() => {\n    config.addHook('init', (u) => {\n      plotInstance.current = u;\n    });\n\n    config.addHook('draw', () => {\n      if (!isMounted()) {\n        return;\n      }\n      setRenderToken((s) => s + 1);\n    });\n  }, [config, setRenderToken]);\n\n  const eventMarkers = useMemo(() => {\n    const markers: React.ReactNode[] = [];\n\n    if (!plotInstance.current || events.length === 0) {\n      return markers;\n    }\n\n    for (let i = 0; i < events.length; i++) {\n      const frame = events[i];\n\n      for (let j = 0; j < frame.length; j++) {\n        const coords = mapEventToXYCoords(frame, j);\n        if (!coords) {\n          continue;\n        }\n        markers.push(\n          <Marker {...coords} key={`${id}-marker-${i}-${j}`}>\n            {renderEventMarker(frame, j)}\n          </Marker>\n        );\n      }\n    }\n\n    return <>{markers}</>;\n  }, [events, renderEventMarker, renderToken]);\n\n  if (!plotInstance.current) {\n    return null;\n  }\n\n  return (\n    <XYCanvas\n      left={plotInstance.current.bbox.left / window.devicePixelRatio}\n      top={plotInstance.current.bbox.top / window.devicePixelRatio}\n    >\n      {eventMarkers}\n    </XYCanvas>\n  );\n}\n","// mostly copy/pasted from: public/app/core/components/CloseButton/CloseButton.tsx\nimport { css } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { IconButton } from '../../../components/IconButton/IconButton';\nimport { useStyles2 } from '../../../themes/ThemeContext';\n\ntype Props = {\n  onClick: () => void;\n  'aria-label'?: string;\n  style?: React.CSSProperties;\n};\n\nexport const CloseButton = ({ onClick, 'aria-label': ariaLabel, style }: Props) => {\n  const styles = useStyles2(getStyles);\n  return (\n    <IconButton aria-label={ariaLabel ?? 'Close'} className={styles} name=\"times\" onClick={onClick} style={style} />\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) =>\n  css({\n    position: 'absolute',\n    margin: '0px',\n    right: 5,\n    top: 6,\n  });\n","import { css, cx } from '@emotion/css';\nimport { useLayoutEffect, useRef, useReducer, CSSProperties } from 'react';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport uPlot from 'uplot';\n\nimport { GrafanaTheme2, LinkModel } from '@grafana/data';\nimport { DashboardCursorSync } from '@grafana/schema';\n\nimport { AdHocFilterModel } from '../../../internal';\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { RangeSelection1D, RangeSelection2D, OnSelectRangeCallback } from '../../PanelChrome';\nimport { getPortalContainer } from '../../Portal/Portal';\nimport { UPlotConfigBuilder } from '../config/UPlotConfigBuilder';\n\nimport { CloseButton } from './CloseButton';\n\nexport const DEFAULT_TOOLTIP_WIDTH = undefined;\nexport const TOOLTIP_OFFSET = 10;\n\n// todo: barchart? histogram?\nexport const enum TooltipHoverMode {\n  // Single mode in TimeSeries, Candlestick, Trend, StateTimeline, Heatmap?\n  xOne,\n  // All mode in TimeSeries, Candlestick, Trend, StateTimeline, Heatmap?\n  xAll,\n  // Single mode in XYChart, Heatmap?\n  xyOne,\n}\n\ntype GetDataLinksCallback = (seriesIdx: number, dataIdx: number) => LinkModel[];\ntype GetAdHocFiltersCallback = (seriesIdx: number, dataIdx: number) => AdHocFilterModel[];\n\ninterface TooltipPlugin2Props {\n  config: UPlotConfigBuilder;\n  hoverMode: TooltipHoverMode;\n\n  syncMode?: DashboardCursorSync;\n  syncScope?: string;\n\n  // x only\n  queryZoom?: (range: { from: number; to: number }) => void;\n  // y-only, via shiftKey\n  clientZoom?: boolean;\n\n  onSelectRange?: OnSelectRangeCallback;\n  getDataLinks?: GetDataLinksCallback;\n  getAdHocFilters?: GetAdHocFiltersCallback;\n\n  render: (\n    u: uPlot,\n    dataIdxs: Array<number | null>,\n    seriesIdx: number | null,\n    isPinned: boolean,\n    dismiss: () => void,\n    // selected time range (for annotation triggering)\n    timeRange: TimeRange2 | null,\n    viaSync: boolean,\n    dataLinks: LinkModel[],\n    adHocFilters: AdHocFilterModel[]\n  ) => React.ReactNode;\n\n  maxWidth?: number;\n}\n\ninterface TooltipContainerState {\n  plot?: uPlot | null;\n  style: Partial<CSSProperties>;\n  isHovering: boolean;\n  isPinned: boolean;\n  dismiss: () => void;\n  contents?: React.ReactNode;\n}\n\ninterface TooltipContainerSize {\n  observer: ResizeObserver;\n  width: number;\n  height: number;\n}\n\nexport interface TimeRange2 {\n  from: number;\n  to: number;\n}\n\nfunction mergeState(prevState: TooltipContainerState, nextState: Partial<TooltipContainerState>) {\n  return {\n    ...prevState,\n    ...nextState,\n    style: {\n      ...prevState.style,\n      ...nextState.style,\n    },\n  };\n}\n\nfunction initState(): TooltipContainerState {\n  return {\n    style: { transform: '', pointerEvents: 'none' },\n    isHovering: false,\n    isPinned: false,\n    contents: null,\n    plot: null,\n    dismiss: () => {},\n  };\n}\n\n// min px width that triggers zoom\nconst MIN_ZOOM_DIST = 5;\n\nconst maybeZoomAction = (e?: MouseEvent | null) => e != null && !e.ctrlKey && !e.metaKey;\n\nconst getDataLinksFallback: GetDataLinksCallback = () => [];\nconst getAdHocFiltersFallback: GetAdHocFiltersCallback = () => [];\n\nconst userAgentIsMobile = /Android|iPhone|iPad/i.test(navigator.userAgent);\n\n/**\n * @alpha\n */\nexport const TooltipPlugin2 = ({\n  config,\n  hoverMode,\n  render,\n  clientZoom = false,\n  queryZoom,\n  onSelectRange,\n  maxWidth,\n  syncMode = DashboardCursorSync.Off,\n  syncScope = 'global', // eventsScope\n  getDataLinks = getDataLinksFallback,\n  getAdHocFilters = getAdHocFiltersFallback,\n}: TooltipPlugin2Props) => {\n  const domRef = useRef<HTMLDivElement>(null);\n  const portalRoot = useRef<HTMLElement | null>(null);\n\n  if (portalRoot.current == null) {\n    portalRoot.current = getPortalContainer();\n  }\n\n  const [{ plot, isHovering, isPinned, contents, style, dismiss }, setState] = useReducer(mergeState, null, initState);\n\n  const sizeRef = useRef<TooltipContainerSize>();\n  const styles = useStyles2(getStyles, maxWidth);\n\n  const renderRef = useRef(render);\n  renderRef.current = render;\n\n  const getLinksRef = useRef(getDataLinks);\n  getLinksRef.current = getDataLinks;\n\n  const getAdHocFiltersRef = useRef(getAdHocFilters);\n  getAdHocFiltersRef.current = getAdHocFilters;\n\n  useLayoutEffect(() => {\n    sizeRef.current?.observer.disconnect();\n\n    sizeRef.current = {\n      width: 0,\n      height: 0,\n      observer: new ResizeObserver((entries) => {\n        let size = sizeRef.current!;\n\n        for (const entry of entries) {\n          if (entry.borderBoxSize?.length > 0) {\n            size.width = entry.borderBoxSize[0].inlineSize;\n            size.height = entry.borderBoxSize[0].blockSize;\n          } else {\n            size.width = entry.contentRect.width;\n            size.height = entry.contentRect.height;\n          }\n        }\n      }),\n    };\n\n    let yZoomed = false;\n    let yDrag = false;\n\n    let _plot = plot;\n    let _isHovering = isHovering;\n    let _someSeriesIdx = false;\n    let _isPinned = isPinned;\n    let _style = style;\n\n    let plotVisible = false;\n\n    const syncTooltip = syncMode === DashboardCursorSync.Tooltip;\n\n    if (syncMode !== DashboardCursorSync.Off && config.scales[0].props.isTime) {\n      config.setCursor({\n        sync: {\n          key: syncScope,\n          scales: ['x', null],\n        },\n      });\n    }\n\n    const updateHovering = () => {\n      if (viaSync) {\n        _isHovering = plotVisible && _someSeriesIdx && syncTooltip;\n      } else {\n        _isHovering = closestSeriesIdx != null || (hoverMode === TooltipHoverMode.xAll && _someSeriesIdx);\n      }\n    };\n\n    let offsetX = 0;\n    let offsetY = 0;\n\n    let selectedRange: TimeRange2 | null = null;\n    let seriesIdxs: Array<number | null> = [];\n    let closestSeriesIdx: number | null = null;\n    let viaSync = false;\n    let dataLinks: LinkModel[] = [];\n    let adHocFilters: AdHocFilterModel[] = [];\n\n    // for onceClick link rendering during mousemoves we use these pre-generated first links or actions\n    // these will be wrong if the titles have interpolation using the hovered *value*\n    // but this should be quite rare. we'll fix it if someone actually encounters this\n    let persistentLinks: LinkModel[][] = [];\n\n    let pendingRender = false;\n    let pendingPinned = false;\n\n    const scheduleRender = (setPinned = false) => {\n      if (!pendingRender) {\n        // defer unrender for 100ms to reduce flickering in small gaps\n        if (!_isHovering) {\n          setTimeout(_render, 100);\n        } else {\n          queueMicrotask(_render);\n        }\n\n        pendingRender = true;\n      }\n\n      if (setPinned) {\n        pendingPinned = true;\n      }\n    };\n\n    // in some ways this is similar to ClickOutsideWrapper.tsx\n    const downEventOutside = (e: Event) => {\n      // this tooltip is Portaled, but actions inside it create forms in Modals\n      const isModalOrPortaled = '[role=\"dialog\"], #grafana-portal-container';\n\n      // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n      if ((e.target as HTMLElement).closest(isModalOrPortaled) == null) {\n        dismiss();\n      }\n    };\n\n    const _render = () => {\n      pendingRender = false;\n\n      if (pendingPinned) {\n        _style = { pointerEvents: _isPinned ? 'all' : 'none' };\n\n        // @ts-ignore\n        _plot!.cursor._lock = _isPinned;\n\n        if (_isPinned) {\n          document.addEventListener('mousedown', downEventOutside, true);\n          document.addEventListener('keydown', downEventOutside, true);\n        } else {\n          document.removeEventListener('mousedown', downEventOutside, true);\n          document.removeEventListener('keydown', downEventOutside, true);\n        }\n\n        pendingPinned = false;\n      }\n\n      let state: TooltipContainerState = {\n        style: _style,\n        isPinned: _isPinned,\n        isHovering: _isHovering,\n        contents:\n          _isHovering || selectedRange != null\n            ? renderRef.current(\n                _plot!,\n                seriesIdxs,\n                closestSeriesIdx,\n                _isPinned,\n                dismiss,\n                selectedRange,\n                viaSync,\n                _isPinned ? dataLinks : closestSeriesIdx != null ? persistentLinks[closestSeriesIdx] : [],\n                _isPinned ? adHocFilters : []\n              )\n            : null,\n        dismiss,\n      };\n\n      setState(state);\n\n      // TODO: set u.over.style.cursor = 'pointer' if we hovered a oneClick point\n      // else revert to default...but only when the new pointer is different from prev\n\n      selectedRange = null;\n    };\n\n    const dismiss = () => {\n      let prevIsPinned = _isPinned;\n      _isPinned = false;\n      _isHovering = false;\n      _plot!.setCursor({ left: -10, top: -10 });\n      dataLinks = [];\n      adHocFilters = [];\n\n      scheduleRender(prevIsPinned);\n    };\n\n    config.addHook('init', (u) => {\n      setState({ plot: (_plot = u) });\n\n      // detect shiftKey and mutate drag mode from x-only to y-only\n      if (clientZoom) {\n        u.over.addEventListener(\n          'mousedown',\n          (e) => {\n            if (!maybeZoomAction(e)) {\n              return;\n            }\n\n            if (e.button === 0 && e.shiftKey) {\n              yDrag = true;\n\n              u.cursor.drag!.x = false;\n              u.cursor.drag!.y = true;\n\n              let onUp = (e: MouseEvent) => {\n                u.cursor.drag!.x = true;\n                u.cursor.drag!.y = false;\n                document.removeEventListener('mouseup', onUp, true);\n              };\n\n              document.addEventListener('mouseup', onUp, true);\n            }\n          },\n          true\n        );\n      }\n\n      // this handles pinning, 0-width range selection, and one-click\n      u.over.addEventListener('click', (e) => {\n        if (e.target === u.over) {\n          if (e.ctrlKey || e.metaKey) {\n            let xVal;\n\n            const isXAxisHorizontal = u.scales.x.ori === 0;\n            if (isXAxisHorizontal) {\n              xVal = u.posToVal(u.cursor.left!, 'x');\n            } else {\n              xVal = u.posToVal(u.select.top + u.select.height, 'x');\n            }\n\n            selectedRange = {\n              from: xVal,\n              to: xVal,\n            };\n\n            scheduleRender(false);\n          }\n          // if tooltip visible, not pinned, and within proximity to a series/point\n          else if (_isHovering && !_isPinned && closestSeriesIdx != null) {\n            dataLinks = getLinksRef.current(closestSeriesIdx, seriesIdxs[closestSeriesIdx]!);\n            adHocFilters = getAdHocFiltersRef.current(closestSeriesIdx, seriesIdxs[closestSeriesIdx]!);\n            const oneClickLink = dataLinks.find((dataLink) => dataLink.oneClick === true);\n\n            if (oneClickLink != null) {\n              window.open(oneClickLink.href, oneClickLink.target ?? '_self');\n            } else {\n              setTimeout(() => {\n                _isPinned = true;\n                scheduleRender(true);\n              }, 0);\n            }\n          }\n        }\n      });\n    });\n\n    config.addHook('setSelect', (u) => {\n      const isXAxisHorizontal = u.scales.x.ori === 0;\n\n      if (!viaSync && (clientZoom || queryZoom != null)) {\n        if (maybeZoomAction(u.cursor!.event)) {\n          if (onSelectRange != null) {\n            let selections: RangeSelection2D[] = [];\n\n            const yDrag = Boolean(u.cursor!.drag!.y);\n            const xDrag = Boolean(u.cursor!.drag!.x);\n\n            let xSel = null;\n            let ySels: RangeSelection1D[] = [];\n\n            // get x selection\n            if (xDrag) {\n              xSel = {\n                from: isXAxisHorizontal\n                  ? u.posToVal(u.select.left!, 'x')\n                  : u.posToVal(u.select.top + u.select.height, 'x'),\n                to: isXAxisHorizontal\n                  ? u.posToVal(u.select.left! + u.select.width, 'x')\n                  : u.posToVal(u.select.top, 'x'),\n              };\n            }\n\n            // get y selections\n            if (yDrag) {\n              config.scales.forEach((scale) => {\n                const key = scale.props.scaleKey;\n\n                if (key !== 'x') {\n                  let ySel = {\n                    from: isXAxisHorizontal\n                      ? u.posToVal(u.select.top + u.select.height, key)\n                      : u.posToVal(u.select.left + u.select.width, key),\n                    to: isXAxisHorizontal ? u.posToVal(u.select.top, key) : u.posToVal(u.select.left, key),\n                  };\n\n                  ySels.push(ySel);\n                }\n              });\n            }\n\n            if (xDrag) {\n              if (yDrag) {\n                // x + y\n                selections = ySels.map((ySel) => ({ x: xSel!, y: ySel }));\n              } else {\n                // x only\n                selections = [{ x: xSel! }];\n              }\n            } else {\n              if (yDrag) {\n                // y only\n                selections = ySels.map((ySel) => ({ y: ySel }));\n              }\n            }\n\n            onSelectRange(selections);\n          } else if (clientZoom && yDrag) {\n            if (u.select.height >= MIN_ZOOM_DIST) {\n              for (let key in u.scales!) {\n                if (key !== 'x') {\n                  const maxY = isXAxisHorizontal\n                    ? u.posToVal(u.select.top, key)\n                    : u.posToVal(u.select.left + u.select.width, key);\n                  const minY = isXAxisHorizontal\n                    ? u.posToVal(u.select.top + u.select.height, key)\n                    : u.posToVal(u.select.left, key);\n\n                  u.setScale(key, { min: minY, max: maxY });\n                }\n              }\n\n              yZoomed = true;\n            }\n\n            yDrag = false;\n          } else if (queryZoom != null) {\n            if (u.select.width >= MIN_ZOOM_DIST) {\n              const minX = isXAxisHorizontal\n                ? u.posToVal(u.select.left, 'x')\n                : u.posToVal(u.select.top + u.select.height, 'x');\n              const maxX = isXAxisHorizontal\n                ? u.posToVal(u.select.left + u.select.width, 'x')\n                : u.posToVal(u.select.top, 'x');\n\n              queryZoom({ from: minX, to: maxX });\n\n              yZoomed = false;\n            }\n          }\n        } else {\n          selectedRange = {\n            from: isXAxisHorizontal ? u.posToVal(u.select.left!, 'x') : u.posToVal(u.select.top + u.select.height, 'x'),\n            to: isXAxisHorizontal ? u.posToVal(u.select.left! + u.select.width, 'x') : u.posToVal(u.select.top, 'x'),\n          };\n\n          scheduleRender(true);\n        }\n      }\n\n      // manually hide selected region (since cursor.drag.setScale = false)\n      u.setSelect({ left: 0, width: 0, top: 0, height: 0 }, false);\n    });\n\n    if (clientZoom || queryZoom != null) {\n      config.setCursor({\n        bind: {\n          dblclick: (u) => () => {\n            if (!maybeZoomAction(u.cursor!.event)) {\n              return null;\n            }\n\n            if (clientZoom && yZoomed) {\n              for (let key in u.scales!) {\n                if (key !== 'x') {\n                  // @ts-ignore (this is not typed correctly in uPlot, assigning nulls means auto-scale / reset)\n                  u.setScale(key, { min: null, max: null });\n                }\n              }\n\n              yZoomed = false;\n            } else if (queryZoom != null) {\n              let xScale = u.scales.x;\n\n              const frTs = xScale.min!;\n              const toTs = xScale.max!;\n              const pad = (toTs - frTs) / 2;\n\n              queryZoom({ from: frTs - pad, to: toTs + pad });\n            }\n\n            return null;\n          },\n        },\n      });\n    }\n\n    config.addHook('setData', (u) => {\n      yZoomed = false;\n      yDrag = false;\n\n      if (_isPinned) {\n        dismiss();\n      }\n    });\n\n    // fires on series focus/proximity changes\n    // e.g. to highlight the hovered/closest series\n    // TODO: we only need this for multi/all mode?\n    config.addHook('setSeries', (u, seriesIdx) => {\n      closestSeriesIdx = seriesIdx;\n\n      viaSync = u.cursor.event == null;\n      updateHovering();\n      scheduleRender();\n    });\n\n    // fires on data value hovers/unhovers\n    config.addHook('setLegend', (u) => {\n      seriesIdxs = _plot?.cursor!.idxs!.slice()!;\n      _someSeriesIdx = seriesIdxs.some((v, i) => i > 0 && v != null);\n\n      if (persistentLinks.length === 0) {\n        persistentLinks = seriesIdxs.map((v, seriesIdx) => {\n          if (seriesIdx > 0) {\n            const links = getDataLinks(seriesIdx, seriesIdxs[seriesIdx]!);\n            const oneClickLink = links.find((dataLink) => dataLink.oneClick === true);\n\n            if (oneClickLink) {\n              return [oneClickLink];\n            }\n          }\n\n          return [];\n        });\n      }\n\n      viaSync = u.cursor.event == null;\n      let prevIsHovering = _isHovering;\n      updateHovering();\n\n      if (_isHovering || _isHovering !== prevIsHovering) {\n        scheduleRender();\n      }\n    });\n\n    const scrollbarWidth = 16;\n    let winWid = 0;\n    let winHgt = 0;\n\n    const updateWinSize = () => {\n      _isHovering && !_isPinned && dismiss();\n\n      winWid = window.innerWidth - scrollbarWidth;\n      winHgt = window.innerHeight - scrollbarWidth;\n    };\n\n    const updatePlotVisible = () => {\n      plotVisible =\n        _plot!.rect.bottom <= winHgt && _plot!.rect.top >= 0 && _plot!.rect.left >= 0 && _plot!.rect.right <= winWid;\n    };\n\n    updateWinSize();\n    config.addHook('ready', updatePlotVisible);\n\n    // fires on mousemoves\n    config.addHook('setCursor', (u) => {\n      viaSync = u.cursor.event == null;\n\n      if (!_isHovering) {\n        return;\n      }\n\n      let { left = -10, top = -10 } = u.cursor;\n\n      if (left >= 0 || top >= 0) {\n        let clientX = u.rect.left + left;\n        let clientY = u.rect.top + top;\n\n        let transform = '';\n\n        let { width, height } = sizeRef.current!;\n\n        width += TOOLTIP_OFFSET;\n        height += TOOLTIP_OFFSET;\n\n        if (offsetY !== 0) {\n          if (clientY + height < winHgt || clientY - height < 0) {\n            offsetY = 0;\n          } else if (offsetY !== -height) {\n            offsetY = -height;\n          }\n        } else {\n          if (clientY + height > winHgt && clientY - height >= 0) {\n            offsetY = -height;\n          }\n        }\n\n        if (offsetX !== 0) {\n          if (clientX + width < winWid || clientX - width < 0) {\n            offsetX = 0;\n          } else if (offsetX !== -width) {\n            offsetX = -width;\n          }\n        } else {\n          if (clientX + width > winWid && clientX - width >= 0) {\n            offsetX = -width;\n          }\n        }\n\n        const shiftX = clientX + (offsetX === 0 ? TOOLTIP_OFFSET : -TOOLTIP_OFFSET);\n        const shiftY = clientY + (offsetY === 0 ? TOOLTIP_OFFSET : -TOOLTIP_OFFSET);\n\n        const reflectX = offsetX === 0 ? '' : 'translateX(-100%)';\n        const reflectY = offsetY === 0 ? '' : 'translateY(-100%)';\n\n        // TODO: to a transition only when switching sides\n        // transition: transform 100ms;\n\n        transform = `translateX(${shiftX}px) ${reflectX} translateY(${shiftY}px) ${reflectY}`;\n\n        if (domRef.current != null) {\n          domRef.current.style.transform = transform;\n        } else {\n          _style.transform = transform;\n          scheduleRender();\n        }\n      }\n    });\n\n    const onscroll = (e: Event) => {\n      updatePlotVisible();\n      _isHovering && e.target instanceof Node && e.target.contains(_plot!.root) && dismiss();\n    };\n\n    window.addEventListener('resize', updateWinSize);\n    window.addEventListener('scroll', onscroll, true);\n\n    return () => {\n      sizeRef.current?.observer.disconnect();\n\n      window.removeEventListener('resize', updateWinSize);\n      window.removeEventListener('scroll', onscroll, true);\n\n      // in case this component unmounts while anchored (due to data auto-refresh + re-config)\n      document.removeEventListener('mousedown', downEventOutside, true);\n      document.removeEventListener('keydown', downEventOutside, true);\n    };\n  }, [config]);\n\n  useLayoutEffect(() => {\n    const size = sizeRef.current!;\n\n    if (domRef.current != null) {\n      size.observer.disconnect();\n      size.observer.observe(domRef.current);\n\n      // since the above observer is attached after container is in DOM, we need to manually update sizeRef\n      // and re-trigger a cursor move to do initial positioning math\n      const { width, height } = domRef.current.getBoundingClientRect();\n      size.width = width;\n      size.height = height;\n\n      let event = plot!.cursor.event;\n\n      // if not viaSync, re-dispatch real event\n      if (event != null) {\n        // we expect to re-dispatch mousemove, but may have a different event type, so create a mousemove event and fire that instead\n        // this doesn't work for every mobile device, so fall back to checking the useragent as well\n        const isMobile = event.type !== 'mousemove' || userAgentIsMobile;\n\n        if (isMobile) {\n          event = new MouseEvent('mousemove', {\n            view: window,\n            bubbles: true,\n            cancelable: true,\n            clientX: event.clientX,\n            clientY: event.clientY,\n            screenX: event.screenX,\n            screenY: event.screenY,\n          });\n        }\n\n        // this works around the fact that uPlot does not unset cursor.event (for perf reasons)\n        // so if the last real mouse event was mouseleave and you manually trigger u.setCursor()\n        // it would end up re-dispatching mouseleave\n        const isStaleEvent = isMobile ? false : performance.now() - event.timeStamp > 16;\n\n        !isStaleEvent && plot!.over.dispatchEvent(event);\n      } else {\n        plot!.setCursor(\n          {\n            left: plot!.cursor.left!,\n            top: plot!.cursor.top!,\n          },\n          true\n        );\n      }\n    } else {\n      size.width = 0;\n      size.height = 0;\n    }\n  }, [isHovering]);\n\n  if (plot && isHovering) {\n    return createPortal(\n      <div\n        className={cx(styles.tooltipWrapper, isPinned && styles.pinned)}\n        style={style}\n        aria-live=\"polite\"\n        aria-atomic=\"true\"\n        ref={domRef}\n      >\n        {isPinned && <CloseButton onClick={dismiss} />}\n        {contents}\n      </div>,\n      portalRoot.current\n    );\n  }\n\n  return null;\n};\n\nconst getStyles = (theme: GrafanaTheme2, maxWidth?: number) => ({\n  tooltipWrapper: css({\n    top: 0,\n    left: 0,\n    zIndex: theme.zIndex.tooltip,\n    whiteSpace: 'pre',\n    borderRadius: theme.shape.radius.default,\n    position: 'fixed',\n    background: theme.colors.background.elevated,\n    border: `1px solid ${theme.colors.border.weak}`,\n    boxShadow: theme.shadows.z2,\n    userSelect: 'text',\n    maxWidth: maxWidth ?? 'none',\n  }),\n  pinned: css({\n    boxShadow: theme.shadows.z3,\n  }),\n});\n","import { throttle } from 'lodash';\nimport { useLayoutEffect, useRef } from 'react';\nimport { Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\n\nimport {\n  DataFrame,\n  DataHoverClearEvent,\n  DataHoverEvent,\n  DataHoverPayload,\n  EventBus,\n  LegacyGraphHoverEvent,\n} from '@grafana/data';\n\nimport { UPlotConfigBuilder } from '../config/UPlotConfigBuilder';\n\ninterface EventBusPluginProps {\n  config: UPlotConfigBuilder;\n  eventBus: EventBus;\n  frame?: DataFrame;\n}\n\n/**\n * @alpha\n */\nexport const EventBusPlugin = ({ config, eventBus, frame }: EventBusPluginProps) => {\n  const frameRef = useRef<DataFrame | undefined>(frame);\n  frameRef.current = frame;\n\n  useLayoutEffect(() => {\n    let u: uPlot | null = null;\n\n    const payload: DataHoverPayload = {\n      point: {\n        time: null,\n      },\n      data: frameRef.current,\n    };\n\n    config.addHook('init', (_u) => {\n      u = _u;\n    });\n\n    let closestSeriesIdx: number | null = null;\n\n    config.addHook('setSeries', (u, seriesIdx) => {\n      closestSeriesIdx = seriesIdx;\n    });\n\n    config.addHook('setLegend', () => {\n      let viaSync = u!.cursor.event == null;\n\n      if (!viaSync) {\n        let dataIdx = u!.cursor.idxs!.find((v) => v != null);\n\n        if (dataIdx == null) {\n          throttledClear();\n        } else {\n          let rowIdx = dataIdx;\n          let colIdx = closestSeriesIdx;\n\n          let xData = u!.data[0] ?? u!.data[1][0];\n\n          payload.point.time = xData[rowIdx];\n          payload.rowIndex = rowIdx ?? undefined;\n          payload.columnIndex = colIdx ?? undefined;\n          payload.data = frameRef.current;\n\n          // used by old graph panel to position tooltip\n          let top = u!.cursor.top!;\n          payload.point.panelRelY = top === 0 ? 0.001 : top > 0 ? top / u!.rect.height : 1;\n\n          throttledHover();\n        }\n      }\n    });\n\n    function handleCursorUpdate(evt: DataHoverEvent | LegacyGraphHoverEvent) {\n      const time = evt.payload?.point?.time;\n\n      if (time) {\n        // Try finding left position on time axis\n        const left = u!.valToPos(time, 'x');\n\n        // let top;\n\n        // if (left) {\n        //   top = findMidPointYPosition(u!, u!.posToIdx(left));\n        // }\n\n        // if (!top || !left) {\n        //   return;\n        // }\n\n        u!.setCursor({\n          left,\n          top: u!.rect.height / 2,\n        });\n      }\n    }\n\n    const subscription = new Subscription();\n\n    const hoverEvent = new DataHoverEvent(payload).setTags(['uplot']);\n    const clearEvent = new DataHoverClearEvent().setTags(['uplot']);\n\n    let throttledHover = throttle(() => {\n      eventBus.publish(hoverEvent);\n    }, 100);\n\n    let throttledClear = throttle(() => {\n      eventBus.publish(clearEvent);\n    }, 100);\n\n    subscription.add(\n      eventBus.getStream(DataHoverEvent).subscribe({\n        next: (evt) => {\n          // ignore uplot-emitted events, since we already use uPlot's sync\n          if (eventBus === evt.origin || evt.tags?.has('uplot')) {\n            return;\n          }\n\n          handleCursorUpdate(evt);\n        },\n      })\n    );\n\n    // Legacy events (from flot graph)\n    subscription.add(\n      eventBus.getStream(LegacyGraphHoverEvent).subscribe({\n        next: (evt) => handleCursorUpdate(evt),\n      })\n    );\n\n    subscription.add(\n      eventBus\n        .getStream(DataHoverClearEvent)\n        .pipe(throttleTime(50)) // dont throttle here, throttle on emission\n        .subscribe({\n          next: (evt) => {\n            // ignore uplot-emitted events, since we already use uPlot's sync\n            if (eventBus === evt.origin || evt.tags?.has('uplot')) {\n              return;\n            }\n\n            // @ts-ignore\n            if (!u!.cursor._lock) {\n              u!.setCursor({\n                left: -10,\n                top: -10,\n              });\n            }\n          },\n        })\n    );\n\n    return () => {\n      subscription.unsubscribe();\n    };\n  }, [config]);\n\n  return null;\n};\n","import { clamp } from 'lodash';\nimport { useLayoutEffect } from 'react';\nimport uPlot from 'uplot';\n\nimport { UPlotConfigBuilder } from '../config/UPlotConfigBuilder';\n\ninterface KeyboardPluginProps {\n  config: UPlotConfigBuilder; // onkeypress, onkeyup, onkeydown (triggered by vizlayout handlers)\n}\n\nconst PIXELS_PER_MS = 0.1 as const;\nconst SHIFT_MULTIPLIER = 2 as const;\nconst KNOWN_KEYS = new Set(['ArrowRight', 'ArrowLeft', 'ArrowUp', 'ArrowDown', 'Shift', ' ']);\n\nconst initHook = (u: uPlot) => {\n  let parentWithFocus: HTMLElement | null = u.root;\n  let pressedKeys = new Set<string>();\n  let dragStartX: number | null = null;\n  let keysLastHandledAt: number | null = null;\n\n  if (!parentWithFocus) {\n    return;\n  }\n  // Make Graph area focusable. Setting this in Viz* components will make focus available on panels that do not yet have keyboard support\n  parentWithFocus.tabIndex = 0;\n\n  const moveCursor = (dx: number, dy: number) => {\n    const { cursor } = u;\n    if (cursor.left === undefined || cursor.top === undefined) {\n      return;\n    }\n\n    const { width, height } = u.over.style;\n    const [maxX, maxY] = [Math.floor(parseFloat(width)), Math.floor(parseFloat(height))];\n\n    u.setCursor({\n      left: clamp(cursor.left + dx, 0, maxX),\n      top: clamp(cursor.top + dy, 0, maxY),\n    });\n  };\n\n  const handlePressedKeys = (time: number) => {\n    const nothingPressed = pressedKeys.size === 0;\n    if (nothingPressed || !u) {\n      keysLastHandledAt = null;\n      return;\n    }\n\n    const dt = time - (keysLastHandledAt ?? time);\n    const dx = dt * PIXELS_PER_MS;\n    let horValue = 0;\n    let vertValue = 0;\n\n    if (pressedKeys.has('ArrowUp')) {\n      vertValue -= dx;\n    }\n    if (pressedKeys.has('ArrowDown')) {\n      vertValue += dx;\n    }\n    if (pressedKeys.has('ArrowLeft')) {\n      horValue -= dx;\n    }\n    if (pressedKeys.has('ArrowRight')) {\n      horValue += dx;\n    }\n    if (pressedKeys.has('Shift')) {\n      horValue *= SHIFT_MULTIPLIER;\n      vertValue *= SHIFT_MULTIPLIER;\n    }\n\n    moveCursor(horValue, vertValue);\n\n    const { cursor } = u;\n    if (pressedKeys.has(' ') && cursor) {\n      const drawHeight = Number(u.over.style.height.slice(0, -2));\n\n      u.setSelect(\n        {\n          left: cursor.left! < dragStartX! ? cursor.left! : dragStartX!,\n          top: 0,\n          width: Math.abs(cursor.left! - (dragStartX ?? cursor.left!)),\n          height: drawHeight,\n        },\n        false\n      );\n    }\n\n    keysLastHandledAt = time;\n    window.requestAnimationFrame(handlePressedKeys);\n  };\n\n  const onKeyDown = (e: KeyboardEvent) => {\n    if (e.key === 'Tab') {\n      // Hide the cursor if the user tabs away\n      u.setCursor({ left: -5, top: -5 });\n      return;\n    }\n\n    if (!KNOWN_KEYS.has(e.key)) {\n      return;\n    }\n\n    e.preventDefault();\n    e.stopPropagation();\n\n    const newKey = !pressedKeys.has(e.key);\n    if (newKey) {\n      const initiateAnimationLoop = pressedKeys.size === 0;\n      pressedKeys.add(e.key);\n\n      dragStartX = e.key === ' ' && dragStartX === null ? u.cursor.left! : dragStartX;\n\n      if (initiateAnimationLoop) {\n        window.requestAnimationFrame(handlePressedKeys);\n      }\n    }\n  };\n\n  const onKeyUp = (e: KeyboardEvent) => {\n    if (!KNOWN_KEYS.has(e.key)) {\n      return;\n    }\n\n    pressedKeys.delete(e.key);\n\n    if (e.key === ' ') {\n      e.preventDefault();\n      e.stopPropagation();\n\n      // We do this so setSelect hooks get fired, zooming the plot\n      u.setSelect(u.select);\n      dragStartX = null;\n    }\n  };\n\n  const onFocus = () => {\n    // We only want to initialize the cursor if the user is using keyboard controls\n    if (!parentWithFocus?.matches(':focus-visible')) {\n      return;\n    }\n\n    // Is there a more idiomatic way to do this?\n    const drawWidth = parseFloat(u.over.style.width);\n    const drawHeight = parseFloat(u.over.style.height);\n    u.setCursor({ left: drawWidth / 2, top: drawHeight / 2 });\n  };\n\n  const onBlur = () => {\n    keysLastHandledAt = null;\n    dragStartX = null;\n    pressedKeys.clear();\n    u.setSelect({ left: 0, top: 0, width: 0, height: 0 }, false);\n  };\n\n  parentWithFocus.addEventListener('keydown', onKeyDown);\n  parentWithFocus.addEventListener('keyup', onKeyUp);\n  parentWithFocus.addEventListener('focus', onFocus);\n  parentWithFocus.addEventListener('blur', onBlur);\n\n  const onDestroy = () => {\n    parentWithFocus?.removeEventListener('keydown', onKeyDown);\n    parentWithFocus?.removeEventListener('keyup', onKeyUp);\n    parentWithFocus?.removeEventListener('focus', onFocus);\n    parentWithFocus?.removeEventListener('blur', onBlur);\n    parentWithFocus = null;\n  };\n\n  (u.hooks.destroy ??= []).push(onDestroy);\n};\n\n/**\n * @alpha\n */\nexport const KeyboardPlugin = ({ config }: KeyboardPluginProps) => {\n  useLayoutEffect(() => config.addHook('init', initHook), [config]);\n\n  return null;\n};\n","import { cx, css } from '@emotion/css';\nimport { forwardRef, HTMLAttributes, useCallback } from 'react';\nimport * as React from 'react';\nimport Highlighter from 'react-highlight-words';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { HighlightPart } from '../../types/completion';\nimport { PartialHighlighter } from '../Typeahead/PartialHighlighter';\n\ntype OnLabelClick = (name: string, value: string | undefined, event: React.MouseEvent<HTMLElement>) => void;\n\ninterface Props extends Omit<HTMLAttributes<HTMLElement>, 'onClick'> {\n  name: string;\n  active?: boolean;\n  loading?: boolean;\n  searchTerm?: string;\n  value?: string;\n  facets?: number;\n  title?: string;\n  highlightParts?: HighlightPart[];\n  onClick?: OnLabelClick;\n}\n\n/**\n * @internal\n */\nexport const Label = forwardRef<HTMLButtonElement, Props>(\n  (\n    {\n      name,\n      value,\n      hidden,\n      facets,\n      onClick,\n      className,\n      loading,\n      searchTerm,\n      active,\n      style,\n      title,\n      highlightParts,\n      ...rest\n    },\n    ref\n  ) => {\n    const theme = useTheme2();\n    const styles = getLabelStyles(theme);\n    const searchWords = searchTerm ? [searchTerm] : [];\n\n    const onLabelClick = useCallback(\n      (event: React.MouseEvent<HTMLElement>) => {\n        if (onClick && !hidden) {\n          onClick(name, value, event);\n        }\n      },\n      [onClick, name, hidden, value]\n    );\n\n    // Using this component for labels and label values. If value is given use value for display text.\n    let text = value || name;\n    if (facets) {\n      text = `${text} (${facets})`;\n    }\n\n    return (\n      <button\n        key={text}\n        ref={ref}\n        onClick={onLabelClick}\n        style={style}\n        title={title || text}\n        type=\"button\"\n        role=\"option\"\n        aria-selected={!!active}\n        className={cx(\n          styles.base,\n          active && styles.active,\n          loading && styles.loading,\n          hidden && styles.hidden,\n          className,\n          onClick && !hidden && styles.hover\n        )}\n        {...rest}\n      >\n        {highlightParts !== undefined ? (\n          <PartialHighlighter text={text} highlightClassName={styles.matchHighLight} highlightParts={highlightParts} />\n        ) : (\n          <Highlighter\n            textToHighlight={text}\n            searchWords={searchWords}\n            autoEscape\n            highlightClassName={styles.matchHighLight}\n          />\n        )}\n      </button>\n    );\n  }\n);\n\nLabel.displayName = 'Label';\n\nconst getLabelStyles = (theme: GrafanaTheme2) => ({\n  base: css({\n    display: 'inline-block',\n    cursor: 'pointer',\n    fontSize: theme.typography.size.sm,\n    lineHeight: theme.typography.bodySmall.lineHeight,\n    backgroundColor: theme.colors.background.secondary,\n    color: theme.colors.text.primary,\n    whiteSpace: 'nowrap',\n    textShadow: 'none',\n    padding: theme.spacing(0.5),\n    borderRadius: theme.shape.radius.default,\n    border: 'none',\n    marginRight: theme.spacing(1),\n    marginBottom: theme.spacing(0.5),\n  }),\n  loading: css({\n    fontWeight: theme.typography.fontWeightMedium,\n    backgroundColor: theme.colors.primary.shade,\n    color: theme.colors.text.primary,\n    [theme.transitions.handleMotion('no-preference', 'reduce')]: {\n      animation: 'pulse 3s ease-out 0s infinite normal forwards',\n    },\n    '@keyframes pulse': {\n      '0%': {\n        color: theme.colors.text.primary,\n      },\n      '50%': {\n        color: theme.colors.text.secondary,\n      },\n      '100%': {\n        color: theme.colors.text.disabled,\n      },\n    },\n  }),\n  active: css({\n    fontWeight: theme.typography.fontWeightMedium,\n    backgroundColor: theme.colors.primary.main,\n    color: theme.colors.primary.contrastText,\n  }),\n  matchHighLight: css({\n    background: 'inherit',\n    color: theme.components.textHighlight.text,\n    backgroundColor: theme.components.textHighlight.background,\n  }),\n  hidden: css({\n    opacity: 0.6,\n    cursor: 'default',\n    border: '1px solid transparent',\n  }),\n  hover: css({\n    ['&:hover']: {\n      opacity: 0.85,\n      cursor: 'pointer',\n    },\n  }),\n});\n","import { css, cx } from '@emotion/css';\nimport { DetailedHTMLProps, HTMLAttributes } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\ntype Props = DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;\n\n// TODO: Reimplement this with Box\n/** @deprecated Use Box instead */\nexport const PanelContainer = ({ children, className, ...props }: Props) => {\n  const styles = useStyles2(getStyles);\n  return (\n    <div className={cx(styles, className)} {...props}>\n      {children}\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) =>\n  css({\n    backgroundColor: theme.components.panel.background,\n    border: `1px solid ${theme.components.panel.borderColor}`,\n    borderRadius: theme.shape.radius.default,\n  });\n","import { css } from '@emotion/css';\n\nimport {\n  FlotDataPoint,\n  getValueFromDimension,\n  Dimensions,\n  dateTimeFormat,\n  TimeZone,\n  FormattedValue,\n  GrafanaTheme2,\n} from '@grafana/data';\n\nimport { ContextMenu, ContextMenuProps } from '../../components/ContextMenu/ContextMenu';\nimport { FormattedValueDisplay } from '../../components/FormattedValueDisplay/FormattedValueDisplay';\nimport { HorizontalGroup } from '../../components/Layout/Layout';\nimport { MenuGroup, MenuGroupProps } from '../../components/Menu/MenuGroup';\nimport { MenuItem } from '../../components/Menu/MenuItem';\nimport { SeriesIcon } from '../../components/VizLegend/SeriesIcon';\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { GraphDimensions } from './GraphTooltip/types';\n\n/** @deprecated */\nexport type ContextDimensions<T extends Dimensions = any> = { [key in keyof T]: [number, number | undefined] | null };\n\n/** @deprecated */\nexport type GraphContextMenuProps = ContextMenuProps & {\n  getContextMenuSource: () => FlotDataPoint | null;\n  timeZone?: TimeZone;\n  itemsGroup?: MenuGroupProps[];\n  dimensions?: GraphDimensions;\n  contextDimensions?: ContextDimensions;\n};\n\n/** @internal */\nexport const GraphContextMenu = ({\n  getContextMenuSource,\n  timeZone,\n  itemsGroup,\n  dimensions,\n  contextDimensions,\n  ...otherProps\n}: GraphContextMenuProps) => {\n  const source = getContextMenuSource();\n\n  //  Do not render items that do not have label specified\n  const itemsToRender = itemsGroup\n    ? itemsGroup.map((group) => ({\n        ...group,\n        items: group.items?.filter((item) => item.label),\n      }))\n    : [];\n\n  const renderHeader = () => {\n    if (!source) {\n      return null;\n    }\n\n    // If dimensions supplied, we can calculate and display value\n    let value;\n    if (dimensions?.yAxis && contextDimensions?.yAxis?.[1]) {\n      const valueFromDimensions = getValueFromDimension(\n        dimensions.yAxis,\n        contextDimensions.yAxis[0],\n        contextDimensions.yAxis[1]\n      );\n      const display = source.series.valueField.display!;\n      value = display(valueFromDimensions);\n    }\n\n    const formattedValue = dateTimeFormat(source.datapoint[0], {\n      defaultWithMS: source.series.hasMsResolution,\n      timeZone,\n    });\n\n    return (\n      <GraphContextMenuHeader\n        timestamp={formattedValue}\n        seriesColor={source.series.color}\n        displayName={source.series.alias || source.series.label}\n        displayValue={value}\n      />\n    );\n  };\n  const renderMenuGroupItems = () => {\n    return itemsToRender?.map((group, index) => (\n      <MenuGroup key={`${group.label}${index}`} label={group.label}>\n        {(group.items || []).map((item) => (\n          <MenuItem\n            key={`${item.label}`}\n            url={item.url}\n            label={item.label}\n            target={item.target}\n            icon={item.icon}\n            active={item.active}\n            onClick={item.onClick}\n          />\n        ))}\n      </MenuGroup>\n    ));\n  };\n\n  return <ContextMenu {...otherProps} renderMenuItems={renderMenuGroupItems} renderHeader={renderHeader} />;\n};\n\n/** @internal */\nexport const GraphContextMenuHeader = ({\n  timestamp,\n  seriesColor,\n  displayName,\n  displayValue,\n}: {\n  timestamp: string;\n  seriesColor: string;\n  displayName: string;\n  displayValue: FormattedValue;\n}) => {\n  const styles = useStyles2(getStyles);\n\n  return (\n    <div className={styles.wrapper}>\n      <strong>{timestamp}</strong>\n      <HorizontalGroup>\n        <div>\n          <SeriesIcon color={seriesColor} />\n          <span className={styles.displayName}>{displayName}</span>\n        </div>\n        {displayValue && <FormattedValueDisplay value={displayValue} />}\n      </HorizontalGroup>\n    </div>\n  );\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n  return {\n    wrapper: css({\n      padding: theme.spacing(0.5, 1),\n      fontSize: theme.typography.size.sm,\n      zIndex: theme.zIndex.tooltip,\n    }),\n    displayName: css({\n      whiteSpace: 'nowrap',\n      paddingLeft: theme.spacing(0.5),\n    }),\n  };\n}\n","import {\n  GraphSeriesValue,\n  Field,\n  formattedValueToString,\n  getFieldDisplayName,\n  TimeZone,\n  dateTimeFormat,\n  systemDateFormats,\n} from '@grafana/data';\n\n/**\n * Returns index of the closest datapoint BEFORE hover position\n *\n * @param posX\n * @param series\n * @deprecated\n */\nexport const findHoverIndexFromData = (xAxisDimension: Field, xPos: number) => {\n  let lower = 0;\n  let upper = xAxisDimension.values.length - 1;\n  let middle;\n\n  while (true) {\n    if (lower > upper) {\n      return Math.max(upper, 0);\n    }\n    middle = Math.floor((lower + upper) / 2);\n    const xPosition = xAxisDimension.values[middle];\n\n    if (xPosition === xPos) {\n      return middle;\n    } else if (xPosition && xPosition < xPos) {\n      lower = middle + 1;\n    } else {\n      upper = middle - 1;\n    }\n  }\n};\n\ninterface MultiSeriesHoverInfo {\n  value: string;\n  time: string;\n  datapointIndex: number;\n  seriesIndex: number;\n  label?: string;\n  color?: string;\n}\n\n/**\n * Returns information about closest datapoints when hovering over a Graph\n *\n * @param seriesList list of series visible on the Graph\n * @param pos mouse cursor position, based on jQuery.flot position\n * @deprecated\n */\nexport const getMultiSeriesGraphHoverInfo = (\n  // x and y axis dimensions order is aligned\n  yAxisDimensions: Field[],\n  xAxisDimensions: Field[],\n  /** Well, time basically */\n  xAxisPosition: number,\n  timeZone?: TimeZone\n): {\n  results: MultiSeriesHoverInfo[];\n  time?: GraphSeriesValue;\n} => {\n  let i, field, hoverIndex, hoverDistance, pointTime;\n\n  const results: MultiSeriesHoverInfo[] = [];\n\n  let minDistance, minTime;\n\n  for (i = 0; i < yAxisDimensions.length; i++) {\n    field = yAxisDimensions[i];\n    const time = xAxisDimensions[i];\n    hoverIndex = findHoverIndexFromData(time, xAxisPosition);\n    hoverDistance = xAxisPosition - time.values[hoverIndex];\n    pointTime = time.values[hoverIndex];\n    // Take the closest point before the cursor, or if it does not exist, the closest after\n    if (\n      minDistance === undefined ||\n      (hoverDistance >= 0 && (hoverDistance < minDistance || minDistance < 0)) ||\n      (hoverDistance < 0 && hoverDistance > minDistance)\n    ) {\n      minDistance = hoverDistance;\n      minTime = time.display ? formattedValueToString(time.display(pointTime)) : pointTime;\n    }\n\n    const disp = field.display!(field.values[hoverIndex]);\n\n    results.push({\n      value: formattedValueToString(disp),\n      datapointIndex: hoverIndex,\n      seriesIndex: i,\n      color: disp.color,\n      label: getFieldDisplayName(field),\n      time: time.display ? formattedValueToString(time.display(pointTime)) : pointTime,\n    });\n  }\n\n  return {\n    results,\n    time: minTime,\n  };\n};\n\n/** @deprecated */\nexport const graphTickFormatter = (epoch: number, axis: any) => {\n  return dateTimeFormat(epoch, {\n    format: axis?.options?.timeformat,\n    timeZone: axis?.options?.timezone,\n  });\n};\n\n/** @deprecated */\nexport const graphTimeFormat = (ticks: number | null, min: number | null, max: number | null): string => {\n  if (min && max && ticks) {\n    const range = max - min;\n    const secPerTick = range / ticks / 1000;\n    // Need have 10 millisecond margin on the day range\n    // As sometimes last 24 hour dashboard evaluates to more than 86400000\n    const oneDay = 86400010;\n    const oneYear = 31536000000;\n\n    if (secPerTick <= 10) {\n      return systemDateFormats.interval.millisecond;\n    }\n    if (secPerTick <= 45) {\n      return systemDateFormats.interval.second;\n    }\n    if (range <= oneDay) {\n      return systemDateFormats.interval.minute;\n    }\n    if (secPerTick <= 80000) {\n      return systemDateFormats.interval.hour;\n    }\n    if (range <= oneYear) {\n      return systemDateFormats.interval.day;\n    }\n    if (secPerTick <= 31536000) {\n      return systemDateFormats.interval.month;\n    }\n    return systemDateFormats.interval.year;\n  }\n\n  return systemDateFormats.interval.minute;\n};\n","import { getValueFromDimension } from '@grafana/data';\n\nimport { SeriesTable } from '../../../components/VizTooltip';\nimport { FlotPosition } from '../../../components/VizTooltip/VizTooltip';\nimport { getMultiSeriesGraphHoverInfo } from '../utils';\n\nimport { GraphTooltipContentProps } from './types';\n\n/** @deprecated */\ntype Props = GraphTooltipContentProps & {\n  // We expect position to figure out correct values when not hovering over a datapoint\n  pos: FlotPosition;\n};\n\n/** @deprecated */\nexport const MultiModeGraphTooltip = ({ dimensions, activeDimensions, pos, timeZone }: Props) => {\n  let activeSeriesIndex: number | null = null;\n  // when no x-axis provided, skip rendering\n  if (activeDimensions.xAxis === null) {\n    return null;\n  }\n\n  if (activeDimensions.yAxis) {\n    activeSeriesIndex = activeDimensions.yAxis[0];\n  }\n\n  // when not hovering over a point, time is undefined, and we use pos.x as time\n  const time = activeDimensions.xAxis[1]\n    ? getValueFromDimension(dimensions.xAxis, activeDimensions.xAxis[0], activeDimensions.xAxis[1])\n    : pos.x;\n\n  const hoverInfo = getMultiSeriesGraphHoverInfo(dimensions.yAxis.columns, dimensions.xAxis.columns, time, timeZone);\n  const timestamp = hoverInfo.time;\n\n  const series = hoverInfo.results.map((s, i) => {\n    return {\n      color: s.color,\n      label: s.label,\n      value: s.value,\n      isActive: activeSeriesIndex === i,\n    };\n  });\n\n  return <SeriesTable series={series} timestamp={timestamp} />;\n};\n\nMultiModeGraphTooltip.displayName = 'MultiModeGraphTooltip';\n","import {\n  getValueFromDimension,\n  getColumnFromDimension,\n  formattedValueToString,\n  getFieldDisplayName,\n} from '@grafana/data';\n\nimport { SeriesTable } from '../../../components/VizTooltip';\n\nimport { GraphTooltipContentProps } from './types';\n\n/** @deprecated */\nexport const SingleModeGraphTooltip = ({ dimensions, activeDimensions, timeZone }: GraphTooltipContentProps) => {\n  // not hovering over a point, skip rendering\n  if (\n    activeDimensions.yAxis === null ||\n    activeDimensions.yAxis[1] === undefined ||\n    activeDimensions.xAxis === null ||\n    activeDimensions.xAxis[1] === undefined\n  ) {\n    return null;\n  }\n  const time = getValueFromDimension(dimensions.xAxis, activeDimensions.xAxis[0], activeDimensions.xAxis[1]);\n  const timeField = getColumnFromDimension(dimensions.xAxis, activeDimensions.xAxis[0]);\n  const processedTime = timeField.display ? formattedValueToString(timeField.display(time)) : time;\n\n  const valueField = getColumnFromDimension(dimensions.yAxis, activeDimensions.yAxis[0]);\n  const value = getValueFromDimension(dimensions.yAxis, activeDimensions.yAxis[0], activeDimensions.yAxis[1]);\n  const display = valueField.display!;\n  const disp = display(value);\n\n  return (\n    <SeriesTable\n      series={[\n        {\n          color: disp.color,\n          label: getFieldDisplayName(valueField),\n          value: formattedValueToString(disp),\n        },\n      ]}\n      timestamp={processedTime}\n    />\n  );\n};\n\nSingleModeGraphTooltip.displayName = 'SingleModeGraphTooltip';\n","import { TooltipDisplayMode } from '@grafana/schema';\n\nimport { VizTooltipContentProps } from '../../../components/VizTooltip';\n\nimport { MultiModeGraphTooltip } from './MultiModeGraphTooltip';\nimport { SingleModeGraphTooltip } from './SingleModeGraphTooltip';\nimport { GraphDimensions } from './types';\n\n/** @deprecated */\nexport const GraphTooltip = ({\n  mode = TooltipDisplayMode.Single,\n  dimensions,\n  activeDimensions,\n  pos,\n  timeZone,\n}: VizTooltipContentProps<GraphDimensions>) => {\n  // When\n  // [1] no active dimension or\n  // [2] no xAxis position\n  // we assume no tooltip should be rendered\n  if (!activeDimensions || !activeDimensions.xAxis) {\n    return null;\n  }\n\n  if (mode === 'single') {\n    return <SingleModeGraphTooltip dimensions={dimensions} activeDimensions={activeDimensions} timeZone={timeZone} />;\n  } else {\n    return (\n      <MultiModeGraphTooltip\n        dimensions={dimensions}\n        activeDimensions={activeDimensions}\n        pos={pos}\n        timeZone={timeZone}\n      />\n    );\n  }\n};\n\nGraphTooltip.displayName = 'GraphTooltip';\n","// Libraries\nimport $ from 'jquery';\nimport { uniqBy } from 'lodash';\nimport { PureComponent } from 'react';\nimport * as React from 'react';\n\n// Types\nimport { TimeRange, GraphSeriesXY, TimeZone, createDimension } from '@grafana/data';\nimport { TooltipDisplayMode } from '@grafana/schema';\n\nimport { VizTooltipProps, VizTooltipContentProps, ActiveDimensions, VizTooltip } from '../../components/VizTooltip';\nimport { FlotPosition } from '../../components/VizTooltip/VizTooltip';\n\nimport { GraphContextMenu, GraphContextMenuProps, ContextDimensions } from './GraphContextMenu';\nimport { GraphTooltip } from './GraphTooltip/GraphTooltip';\nimport { GraphDimensions } from './GraphTooltip/types';\nimport { FlotItem } from './types';\nimport { graphTimeFormat, graphTickFormatter } from './utils';\n\n/** @deprecated */\nexport interface GraphProps {\n  ariaLabel?: string;\n  children?: JSX.Element | JSX.Element[];\n  series: GraphSeriesXY[];\n  timeRange: TimeRange; // NOTE: we should aim to make `time` a property of the axis, not force it for all graphs\n  timeZone?: TimeZone; // NOTE: we should aim to make `time` a property of the axis, not force it for all graphs\n  showLines?: boolean;\n  showPoints?: boolean;\n  showBars?: boolean;\n  width: number;\n  height: number;\n  isStacked?: boolean;\n  lineWidth?: number;\n  onHorizontalRegionSelected?: (from: number, to: number) => void;\n}\n\n/** @deprecated */\ninterface GraphState {\n  pos?: FlotPosition;\n  contextPos?: FlotPosition;\n  isTooltipVisible: boolean;\n  isContextVisible: boolean;\n  activeItem?: FlotItem<GraphSeriesXY>;\n  contextItem?: FlotItem<GraphSeriesXY>;\n}\n\n/**\n * This is a react wrapper for the angular, flot based graph visualization.\n * Rather than using this component, you should use the `<PanelRender .../> with\n * timeseries panel configs.\n *\n * @deprecated\n */\nexport class Graph extends PureComponent<GraphProps, GraphState> {\n  static defaultProps = {\n    showLines: true,\n    showPoints: false,\n    showBars: false,\n    isStacked: false,\n    lineWidth: 1,\n  };\n\n  state: GraphState = {\n    isTooltipVisible: false,\n    isContextVisible: false,\n  };\n\n  element: HTMLElement | null = null;\n  $element: JQuery<HTMLElement> | null = null;\n\n  componentDidUpdate(prevProps: GraphProps, prevState: GraphState) {\n    if (prevProps !== this.props) {\n      this.draw();\n    }\n  }\n\n  componentDidMount() {\n    this.draw();\n    if (this.element) {\n      this.$element = $(this.element);\n      this.$element.bind('plotselected', this.onPlotSelected);\n      this.$element.bind('plothover', this.onPlotHover);\n      this.$element.bind('plotclick', this.onPlotClick);\n    }\n  }\n\n  componentWillUnmount() {\n    if (this.$element) {\n      this.$element.unbind('plotselected', this.onPlotSelected);\n    }\n  }\n\n  onPlotSelected = (event: JQuery.Event, ranges: { xaxis: { from: number; to: number } }) => {\n    const { onHorizontalRegionSelected } = this.props;\n    if (onHorizontalRegionSelected) {\n      onHorizontalRegionSelected(ranges.xaxis.from, ranges.xaxis.to);\n    }\n  };\n\n  onPlotHover = (event: JQuery.Event, pos: FlotPosition, item?: FlotItem<GraphSeriesXY>) => {\n    this.setState({\n      isTooltipVisible: true,\n      activeItem: item,\n      pos,\n    });\n  };\n\n  onPlotClick = (event: JQuery.Event, contextPos: FlotPosition, item?: FlotItem<GraphSeriesXY>) => {\n    this.setState({\n      isContextVisible: true,\n      isTooltipVisible: false,\n      contextItem: item,\n      contextPos,\n    });\n  };\n\n  getYAxes(series: GraphSeriesXY[]) {\n    if (series.length === 0) {\n      return [{ show: true, min: -1, max: 1 }];\n    }\n    return uniqBy(\n      series.map((s) => {\n        const index = s.yAxis ? s.yAxis.index : 1;\n        const min = s.yAxis && s.yAxis.min && !isNaN(s.yAxis.min) ? s.yAxis.min : null;\n        const tickDecimals =\n          s.yAxis && s.yAxis.tickDecimals && !isNaN(s.yAxis.tickDecimals) ? s.yAxis.tickDecimals : null;\n        return {\n          show: true,\n          index,\n          position: index === 1 ? 'left' : 'right',\n          min,\n          tickDecimals,\n        };\n      }),\n      (yAxisConfig) => yAxisConfig.index\n    );\n  }\n\n  renderTooltip = () => {\n    const { children, series, timeZone } = this.props;\n    const { pos, activeItem, isTooltipVisible } = this.state;\n    let tooltipElement: React.ReactElement<VizTooltipProps> | undefined;\n\n    if (!isTooltipVisible || !pos || series.length === 0) {\n      return null;\n    }\n\n    // Find children that indicate tooltip to be rendered\n    React.Children.forEach(children, (c) => {\n      // We have already found tooltip\n      if (tooltipElement) {\n        return;\n      }\n      const childType = c && c.type && (c.type.displayName || c.type.name);\n\n      if (childType === VizTooltip.displayName) {\n        tooltipElement = c;\n      }\n    });\n    // If no tooltip provided, skip rendering\n    if (!tooltipElement) {\n      return null;\n    }\n    const tooltipElementProps = tooltipElement.props;\n\n    const tooltipMode = tooltipElementProps.mode || 'single';\n\n    // If mode is single series and user is not hovering over item, skip rendering\n    if (!activeItem && tooltipMode === 'single') {\n      return null;\n    }\n\n    // Check if tooltip needs to be rendered with custom tooltip component, otherwise default to GraphTooltip\n    const tooltipContentRenderer = tooltipElementProps.tooltipComponent || GraphTooltip;\n    // Indicates column(field) index in y-axis dimension\n    const seriesIndex = activeItem ? activeItem.series.seriesIndex : 0;\n    // Indicates row index in active field values\n    const rowIndex = activeItem ? activeItem.dataIndex : undefined;\n\n    const activeDimensions: ActiveDimensions<GraphDimensions> = {\n      // Described x-axis active item\n      // When hovering over an item - let's take it's dataIndex, otherwise undefined\n      // Tooltip itself needs to figure out correct datapoint display information based on pos passed to it\n      xAxis: [seriesIndex, rowIndex],\n      // Describes y-axis active item\n      yAxis: activeItem ? [activeItem.series.seriesIndex, activeItem.dataIndex] : null,\n    };\n\n    const tooltipContentProps: VizTooltipContentProps<GraphDimensions> = {\n      dimensions: {\n        // time/value dimension columns are index-aligned - see getGraphSeriesModel\n        xAxis: createDimension(\n          'xAxis',\n          series.map((s) => s.timeField)\n        ),\n        yAxis: createDimension(\n          'yAxis',\n          series.map((s) => s.valueField)\n        ),\n      },\n      activeDimensions,\n      pos,\n      mode: tooltipElementProps.mode || TooltipDisplayMode.Single,\n      timeZone,\n    };\n\n    const tooltipContent = React.createElement(tooltipContentRenderer, { ...tooltipContentProps });\n\n    return React.cloneElement(tooltipElement, {\n      content: tooltipContent,\n      position: { x: pos.pageX, y: pos.pageY },\n      offset: { x: 10, y: 10 },\n    });\n  };\n\n  renderContextMenu = () => {\n    const { series } = this.props;\n    const { contextPos, contextItem, isContextVisible } = this.state;\n\n    if (!isContextVisible || !contextPos || !contextItem || series.length === 0) {\n      return null;\n    }\n\n    // Indicates column(field) index in y-axis dimension\n    const seriesIndex = contextItem ? contextItem.series.seriesIndex : 0;\n    // Indicates row index in context field values\n    const rowIndex = contextItem ? contextItem.dataIndex : undefined;\n\n    const contextDimensions: ContextDimensions<GraphDimensions> = {\n      // Described x-axis context item\n      xAxis: [seriesIndex, rowIndex],\n      // Describes y-axis context item\n      yAxis: contextItem ? [contextItem.series.seriesIndex, contextItem.dataIndex] : null,\n    };\n\n    const dimensions: GraphDimensions = {\n      // time/value dimension columns are index-aligned - see getGraphSeriesModel\n      xAxis: createDimension(\n        'xAxis',\n        series.map((s) => s.timeField)\n      ),\n      yAxis: createDimension(\n        'yAxis',\n        series.map((s) => s.valueField)\n      ),\n    };\n\n    const closeContext = () => this.setState({ isContextVisible: false });\n\n    const getContextMenuSource = () => {\n      return {\n        datapoint: contextItem.datapoint,\n        dataIndex: contextItem.dataIndex,\n        series: contextItem.series,\n        seriesIndex: contextItem.series.seriesIndex,\n        pageX: contextPos.pageX,\n        pageY: contextPos.pageY,\n      };\n    };\n\n    const contextContentProps: GraphContextMenuProps = {\n      x: contextPos.pageX,\n      y: contextPos.pageY,\n      onClose: closeContext,\n      getContextMenuSource: getContextMenuSource,\n      timeZone: this.props.timeZone,\n      dimensions,\n      contextDimensions,\n    };\n\n    return <GraphContextMenu {...contextContentProps} />;\n  };\n\n  getBarWidth = () => {\n    const { series } = this.props;\n    return Math.min(...series.map((s) => s.timeStep));\n  };\n\n  draw() {\n    if (this.element === null) {\n      return;\n    }\n\n    const {\n      width,\n      series,\n      timeRange,\n      showLines,\n      showBars,\n      showPoints,\n      isStacked,\n      lineWidth,\n      timeZone,\n      onHorizontalRegionSelected,\n    } = this.props;\n\n    if (!width) {\n      return;\n    }\n\n    const ticks = width / 100;\n    const min = timeRange.from.valueOf();\n    const max = timeRange.to.valueOf();\n    const yaxes = this.getYAxes(series);\n\n    const flotOptions = {\n      legend: {\n        show: false,\n      },\n      series: {\n        stack: isStacked,\n        lines: {\n          show: showLines,\n          lineWidth: lineWidth,\n          zero: false,\n        },\n        points: {\n          show: showPoints,\n          fill: 1,\n          fillColor: false,\n          radius: 2,\n        },\n        bars: {\n          show: showBars,\n          fill: 1,\n          // Dividig the width by 1.5 to make the bars not touch each other\n          barWidth: showBars ? this.getBarWidth() / 1.5 : 1,\n          zero: false,\n          lineWidth: lineWidth,\n        },\n        shadowSize: 0,\n      },\n      xaxis: {\n        timezone: timeZone,\n        show: true,\n        mode: 'time',\n        min: min,\n        max: max,\n        label: 'Datetime',\n        ticks: ticks,\n        timeformat: graphTimeFormat(ticks, min, max),\n        tickFormatter: graphTickFormatter,\n      },\n      yaxes,\n      grid: {\n        minBorderMargin: 0,\n        markings: [],\n        backgroundColor: null,\n        borderWidth: 0,\n        hoverable: true,\n        clickable: true,\n        color: '#a1a1a1',\n        margin: { left: 0, right: 0 },\n        labelMarginX: 0,\n        mouseActiveRadius: 30,\n      },\n      selection: {\n        mode: onHorizontalRegionSelected ? 'x' : null,\n        color: '#666',\n      },\n      crosshair: {\n        mode: 'x',\n      },\n    };\n\n    try {\n      $.plot(\n        this.element,\n        series.filter((s) => s.isVisible),\n        flotOptions\n      );\n    } catch (err) {\n      console.error('Graph rendering error', err, flotOptions, series);\n      throw new Error('Error rendering panel');\n    }\n  }\n\n  render() {\n    const { ariaLabel, height, width, series } = this.props;\n    const noDataToBeDisplayed = series.length === 0;\n    const tooltip = this.renderTooltip();\n    const context = this.renderContextMenu();\n    return (\n      <div className=\"graph-panel\" aria-label={ariaLabel}>\n        <div\n          className=\"graph-panel__chart\"\n          ref={(e) => (this.element = e)}\n          style={{ height, width }}\n          onMouseLeave={() => {\n            this.setState({ isTooltipVisible: false });\n          }}\n        />\n        {noDataToBeDisplayed && <div className=\"datapoints-warning\">No data</div>}\n        {tooltip}\n        {context}\n      </div>\n    );\n  }\n}\n\nexport default Graph;\n","// Libraries\n\nimport { css } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2, GraphSeriesValue } from '@grafana/data';\nimport { LegendDisplayMode, LegendPlacement } from '@grafana/schema';\n\nimport { CustomScrollbar } from '../../components/CustomScrollbar/CustomScrollbar';\nimport { VizLegend } from '../../components/VizLegend/VizLegend';\nimport { VizLegendItem } from '../../components/VizLegend/types';\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { Graph, GraphProps } from './Graph';\n\nexport interface GraphWithLegendProps extends GraphProps {\n  legendDisplayMode: LegendDisplayMode;\n  legendVisibility: boolean;\n  placement: LegendPlacement;\n  hideEmpty?: boolean;\n  hideZero?: boolean;\n  sortLegendBy?: string;\n  sortLegendDesc?: boolean;\n  onSeriesToggle?: (label: string, event: React.MouseEvent<HTMLElement>) => void;\n  onToggleSort: (sortBy: string) => void;\n}\n\nconst shouldHideLegendItem = (data: GraphSeriesValue[][], hideEmpty = false, hideZero = false) => {\n  const isZeroOnlySeries = data.reduce((acc, current) => acc + (current[1] || 0), 0) === 0;\n  const isNullOnlySeries = !data.reduce((acc, current) => acc && current[1] !== null, true);\n\n  return (hideEmpty && isNullOnlySeries) || (hideZero && isZeroOnlySeries);\n};\n\nexport const GraphWithLegend = (props: GraphWithLegendProps) => {\n  const {\n    series,\n    timeRange,\n    width,\n    height,\n    showBars,\n    showLines,\n    showPoints,\n    sortLegendBy,\n    sortLegendDesc,\n    legendDisplayMode,\n    legendVisibility,\n    placement,\n    onSeriesToggle,\n    onToggleSort,\n    hideEmpty,\n    hideZero,\n    isStacked,\n    lineWidth,\n    onHorizontalRegionSelected,\n    timeZone,\n    children,\n    ariaLabel,\n  } = props;\n  const { graphContainer, wrapper, legendContainer } = useStyles2(getGraphWithLegendStyles, props.placement);\n\n  const legendItems = series.reduce<VizLegendItem[]>((acc, s) => {\n    return shouldHideLegendItem(s.data, hideEmpty, hideZero)\n      ? acc\n      : acc.concat([\n          {\n            label: s.label,\n            color: s.color || '',\n            disabled: !s.isVisible,\n            yAxis: s.yAxis.index,\n            getDisplayValues: () => s.info || [],\n          },\n        ]);\n  }, []);\n\n  return (\n    <div className={wrapper} aria-label={ariaLabel}>\n      <div className={graphContainer}>\n        <Graph\n          series={series}\n          timeRange={timeRange}\n          timeZone={timeZone}\n          showLines={showLines}\n          showPoints={showPoints}\n          showBars={showBars}\n          width={width}\n          height={height}\n          isStacked={isStacked}\n          lineWidth={lineWidth}\n          onHorizontalRegionSelected={onHorizontalRegionSelected}\n        >\n          {children}\n        </Graph>\n      </div>\n\n      {legendVisibility && (\n        <div className={legendContainer}>\n          <CustomScrollbar hideHorizontalTrack>\n            <VizLegend\n              items={legendItems}\n              displayMode={legendDisplayMode}\n              placement={placement}\n              sortBy={sortLegendBy}\n              sortDesc={sortLegendDesc}\n              onLabelClick={(item, event) => {\n                if (onSeriesToggle) {\n                  onSeriesToggle(item.label, event);\n                }\n              }}\n              onToggleSort={onToggleSort}\n            />\n          </CustomScrollbar>\n        </div>\n      )}\n    </div>\n  );\n};\n\nconst getGraphWithLegendStyles = (_theme: GrafanaTheme2, placement: LegendPlacement) => ({\n  wrapper: css({\n    display: 'flex',\n    flexDirection: placement === 'bottom' ? 'column' : 'row',\n  }),\n  graphContainer: css({\n    minHeight: '65%',\n    flexGrow: 1,\n  }),\n  legendContainer: css({\n    padding: '10px 0',\n    maxHeight: placement === 'bottom' ? '35%' : 'none',\n  }),\n});\n","import { difference, isEqual } from 'lodash';\nimport { Component } from 'react';\nimport * as React from 'react';\n\nimport { GraphSeriesXY } from '@grafana/data';\n\n/** @deprecated */\nexport interface GraphSeriesTogglerAPI {\n  onSeriesToggle: (label: string, event: React.MouseEvent<HTMLElement>) => void;\n  toggledSeries: GraphSeriesXY[];\n}\n\n/** @deprecated */\nexport interface GraphSeriesTogglerProps {\n  children: (api: GraphSeriesTogglerAPI) => JSX.Element;\n  series: GraphSeriesXY[];\n  onHiddenSeriesChanged?: (hiddenSeries: string[]) => void;\n}\n\n/** @deprecated */\nexport interface GraphSeriesTogglerState {\n  hiddenSeries: string[];\n  toggledSeries: GraphSeriesXY[];\n}\n\n/** @deprecated */\nexport class GraphSeriesToggler extends Component<GraphSeriesTogglerProps, GraphSeriesTogglerState> {\n  constructor(props: GraphSeriesTogglerProps) {\n    super(props);\n\n    this.onSeriesToggle = this.onSeriesToggle.bind(this);\n\n    this.state = {\n      hiddenSeries: [],\n      toggledSeries: props.series,\n    };\n  }\n\n  componentDidUpdate(prevProps: Readonly<GraphSeriesTogglerProps>) {\n    const { series } = this.props;\n    if (!isEqual(prevProps.series, series)) {\n      this.setState({ hiddenSeries: [], toggledSeries: series });\n    }\n  }\n\n  onSeriesToggle(label: string, event: React.MouseEvent<HTMLElement>) {\n    const { series, onHiddenSeriesChanged } = this.props;\n    const { hiddenSeries } = this.state;\n\n    if (event.ctrlKey || event.metaKey || event.shiftKey) {\n      // Toggling series with key makes the series itself to toggle\n      const newHiddenSeries =\n        hiddenSeries.indexOf(label) > -1\n          ? hiddenSeries.filter((series) => series !== label)\n          : hiddenSeries.concat([label]);\n\n      const toggledSeries = series.map((series) => ({\n        ...series,\n        isVisible: newHiddenSeries.indexOf(series.label) === -1,\n      }));\n      this.setState({ hiddenSeries: newHiddenSeries, toggledSeries }, () =>\n        onHiddenSeriesChanged ? onHiddenSeriesChanged(newHiddenSeries) : undefined\n      );\n      return;\n    }\n\n    // Toggling series with out key toggles all the series but the clicked one\n    const allSeriesLabels = series.map((series) => series.label);\n    const newHiddenSeries =\n      hiddenSeries.length + 1 === allSeriesLabels.length ? [] : difference(allSeriesLabels, [label]);\n    const toggledSeries = series.map((series) => ({\n      ...series,\n      isVisible: newHiddenSeries.indexOf(series.label) === -1,\n    }));\n\n    this.setState({ hiddenSeries: newHiddenSeries, toggledSeries }, () =>\n      onHiddenSeriesChanged ? onHiddenSeriesChanged(newHiddenSeries) : undefined\n    );\n  }\n\n  render() {\n    const { children } = this.props;\n    const { toggledSeries } = this.state;\n\n    return children({\n      onSeriesToggle: this.onSeriesToggle,\n      toggledSeries,\n    });\n  }\n}\n","import { DataFrame } from '@grafana/data';\n\nimport { getRefField } from './utils';\n\ntype InsertMode = (prev: number, next: number, threshold: number) => number;\n\nconst INSERT_MODES = {\n  threshold: (prev: number, next: number, threshold: number) => prev + threshold,\n  midpoint: (prev: number, next: number, threshold: number) => (prev + next) / 2,\n  // previous time + 1ms to prevent StateTimeline from forward-interpolating prior state\n  plusone: (prev: number, next: number, threshold: number) => prev + 1,\n};\n\ninterface NullInsertOptions {\n  frame: DataFrame;\n  refFieldName?: string | null;\n  refFieldPseudoMax?: number;\n  refFieldPseudoMin?: number;\n  insertMode?: InsertMode;\n}\n\n/** @deprecated */\nexport function applyNullInsertThreshold(opts: NullInsertOptions): DataFrame {\n  if (opts.frame.length === 0) {\n    return opts.frame;\n  }\n\n  let thorough = true;\n  let { frame, refFieldName, refFieldPseudoMax, refFieldPseudoMin, insertMode } = opts;\n\n  if (!insertMode) {\n    insertMode = INSERT_MODES.threshold;\n  }\n\n  const refField = getRefField(frame, refFieldName);\n\n  if (refField == null) {\n    return frame;\n  }\n\n  refField.state = {\n    ...refField.state,\n    nullThresholdApplied: true,\n  };\n\n  const thresholds = frame.fields.map((field) => field.config.custom?.insertNulls || refField.config.interval || null);\n\n  const uniqueThresholds = new Set<number>(thresholds);\n\n  uniqueThresholds.delete(null as any);\n\n  if (uniqueThresholds.size === 0) {\n    return frame;\n  }\n\n  if (uniqueThresholds.size === 1) {\n    const threshold = uniqueThresholds.values().next().value;\n\n    if (!threshold || threshold <= 0) {\n      return frame;\n    }\n\n    const refValues = refField.values;\n\n    const frameValues = frame.fields.map((field) => field.values);\n\n    const filledFieldValues = nullInsertThreshold(\n      refValues,\n      frameValues,\n      threshold,\n      refFieldPseudoMin,\n      refFieldPseudoMax,\n      insertMode,\n      thorough\n    );\n\n    if (filledFieldValues === frameValues) {\n      return frame;\n    }\n\n    return {\n      ...frame,\n      length: filledFieldValues[0].length,\n      fields: frame.fields.map((field, i) => ({\n        ...field,\n        values: filledFieldValues[i],\n      })),\n    };\n  }\n\n  // TODO: unique threshold-per-field (via overrides) is unimplemented\n  // should be done by processing each (refField + thresholdA-field1 + thresholdA-field2...)\n  // as a separate nullInsertThreshold() dataset, then re-join into single dataset via join()\n  return frame;\n}\n\nfunction nullInsertThreshold(\n  refValues: number[],\n  frameValues: any[][],\n  threshold: number,\n  refFieldPseudoMin: number | null = null,\n  // will insert a trailing null when refFieldPseudoMax > last datapoint + threshold\n  refFieldPseudoMax: number | null = null,\n  getInsertValue: InsertMode,\n  // will insert the value at every missing interval\n  thorough: boolean\n) {\n  const len = refValues.length;\n  const refValuesNew: number[] = [];\n\n  // Continuously subtract the threshold from the first data point, filling in insert values accordingly\n  if (refFieldPseudoMin != null && refFieldPseudoMin < refValues[0]) {\n    let preFillCount = Math.ceil((refValues[0] - refFieldPseudoMin) / threshold);\n    // this will be 0 or 1 threshold increment left of visible range\n    let prevSlot = refValues[0] - preFillCount * threshold;\n\n    while (prevSlot < refValues[0]) {\n      // (prevSlot - threshold) is used to simulate the previous 'real' data point, as getInsertValue expects\n      refValuesNew.push(getInsertValue(prevSlot - threshold, prevSlot, threshold));\n      prevSlot += threshold;\n    }\n  }\n\n  // Insert initial value\n  refValuesNew.push(refValues[0]);\n\n  let prevValue: number = refValues[0];\n\n  // Fill nulls when a value is greater than the threshold value\n  for (let i = 1; i < len; i++) {\n    const curValue = refValues[i];\n\n    while (curValue - prevValue > threshold) {\n      refValuesNew.push(getInsertValue(prevValue, curValue, threshold));\n\n      prevValue += threshold;\n\n      if (!thorough) {\n        break;\n      }\n    }\n\n    refValuesNew.push(curValue);\n\n    prevValue = curValue;\n  }\n\n  // At the end of the sequence\n  if (refFieldPseudoMax != null && refFieldPseudoMax > prevValue) {\n    while (prevValue + threshold < refFieldPseudoMax) {\n      refValuesNew.push(getInsertValue(prevValue, refFieldPseudoMax, threshold));\n      prevValue += threshold;\n    }\n  }\n\n  const filledLen = refValuesNew.length;\n\n  if (filledLen === len) {\n    return frameValues;\n  }\n\n  const filledFieldValues: any[][] = [];\n\n  for (let fieldValues of frameValues) {\n    let filledValues;\n\n    if (fieldValues !== refValues) {\n      filledValues = Array(filledLen);\n\n      for (let i = 0, j = 0; i < filledLen; i++) {\n        filledValues[i] = refValues[j] === refValuesNew[i] ? fieldValues[j++] : null;\n      }\n    } else {\n      filledValues = refValuesNew;\n    }\n\n    filledFieldValues.push(filledValues);\n  }\n\n  return filledFieldValues;\n}\n","/**\n * mutates all nulls -> undefineds in the fieldValues array for value-less refValues ranges below maxThreshold\n * refValues is typically a time array and maxThreshold is the allowable distance between in time\n * @deprecated\n */\nexport function nullToUndefThreshold(refValues: number[], fieldValues: any[], maxThreshold: number): any[] {\n  let prevRef;\n  let nullIdx;\n\n  for (let i = 0; i < fieldValues.length; i++) {\n    let fieldVal = fieldValues[i];\n\n    if (fieldVal == null) {\n      if (nullIdx == null && prevRef != null) {\n        nullIdx = i;\n      }\n    } else {\n      if (nullIdx != null) {\n        if (refValues[i] - (prevRef as number) < maxThreshold) {\n          while (nullIdx < i) {\n            fieldValues[nullIdx++] = undefined;\n          }\n        }\n\n        nullIdx = null;\n      }\n\n      prevRef = refValues[i];\n    }\n  }\n\n  return fieldValues;\n}\n","import { DataFrame, Field, FieldConfig, FieldType, outerJoinDataFrames, TimeRange } from '@grafana/data';\nimport {\n  AxisPlacement,\n  GraphDrawStyle,\n  GraphFieldConfig,\n  ScaleDistribution,\n  ScaleDistributionConfig,\n} from '@grafana/schema';\n\nimport { FIXED_UNIT } from '../../components/uPlot/types';\n\nimport { applyNullInsertThreshold } from './nullInsertThreshold';\nimport { nullToUndefThreshold } from './nullToUndefThreshold';\nimport { XYFieldMatchers } from './types';\n\nfunction isVisibleBarField(f: Field) {\n  return (\n    f.type === FieldType.number && f.config.custom?.drawStyle === GraphDrawStyle.Bars && !f.config.custom?.hideFrom?.viz\n  );\n}\n\nexport function getRefField(frame: DataFrame, refFieldName?: string | null) {\n  return frame.fields.find((field) => {\n    // note: getFieldDisplayName() would require full DF[]\n    return refFieldName != null ? field.name === refFieldName : field.type === FieldType.time;\n  });\n}\n\n// will mutate the DataFrame's fields' values\nfunction applySpanNullsThresholds(frame: DataFrame, refFieldName?: string | null) {\n  const refField = getRefField(frame, refFieldName);\n\n  let refValues = refField?.values;\n\n  for (let i = 0; i < frame.fields.length; i++) {\n    let field = frame.fields[i];\n\n    if (field === refField || isVisibleBarField(field)) {\n      continue;\n    }\n\n    let spanNulls = field.config.custom?.spanNulls;\n\n    if (typeof spanNulls === 'number') {\n      if (spanNulls !== -1 && refValues) {\n        field.values = nullToUndefThreshold(refValues, field.values, spanNulls);\n      }\n    }\n  }\n\n  return frame;\n}\n\nexport function preparePlotFrame(frames: DataFrame[], dimFields: XYFieldMatchers, timeRange?: TimeRange | null) {\n  let xField: Field;\n  loop: for (let frame of frames) {\n    for (let field of frame.fields) {\n      if (dimFields.x(field, frame, frames)) {\n        xField = field;\n        break loop;\n      }\n    }\n  }\n\n  // apply null insertions at interval\n  frames = frames.map((frame) => {\n    if (!xField?.state?.nullThresholdApplied) {\n      return applyNullInsertThreshold({\n        frame,\n        refFieldName: xField.name,\n        refFieldPseudoMin: timeRange?.from.valueOf(),\n        refFieldPseudoMax: timeRange?.to.valueOf(),\n      });\n    } else {\n      return frame;\n    }\n  });\n\n  let numBarSeries = 0;\n\n  frames.forEach((frame) => {\n    frame.fields.forEach((f) => {\n      if (isVisibleBarField(f)) {\n        // prevent minesweeper-expansion of nulls (gaps) when joining bars\n        // since bar width is determined from the minimum distance between non-undefined values\n        // (this strategy will still retain any original pre-join nulls, though)\n        f.config.custom = {\n          ...f.config.custom,\n          spanNulls: -1,\n        };\n\n        numBarSeries++;\n      }\n    });\n  });\n\n  // to make bar widths of all series uniform (equal to narrowest bar series), find smallest distance between x points\n  let minXDelta = Infinity;\n\n  if (numBarSeries > 1) {\n    frames.forEach((frame) => {\n      if (!frame.fields.some(isVisibleBarField)) {\n        return;\n      }\n\n      const xVals = xField.values;\n\n      for (let i = 0; i < xVals.length; i++) {\n        if (i > 0) {\n          minXDelta = Math.min(minXDelta, xVals[i] - xVals[i - 1]);\n        }\n      }\n    });\n  }\n\n  let alignedFrame = outerJoinDataFrames({\n    frames,\n    joinBy: dimFields.x,\n    keep: dimFields.y,\n    keepOriginIndices: true,\n  });\n\n  if (alignedFrame) {\n    alignedFrame = applySpanNullsThresholds(alignedFrame, xField!.name);\n\n    // append 2 null vals at minXDelta to bar series\n    if (minXDelta !== Infinity) {\n      alignedFrame.fields.forEach((f, fi) => {\n        let vals = f.values;\n\n        if (fi === 0) {\n          let lastVal = vals[vals.length - 1];\n          vals.push(lastVal + minXDelta, lastVal + 2 * minXDelta);\n        } else if (isVisibleBarField(f)) {\n          vals.push(null, null);\n        } else {\n          vals.push(undefined, undefined);\n        }\n      });\n\n      alignedFrame.length += 2;\n    }\n\n    return alignedFrame;\n  }\n\n  return null;\n}\n\nexport function buildScaleKey(config: FieldConfig<GraphFieldConfig>, fieldType: FieldType) {\n  const defaultPart = 'na';\n\n  const scaleRange = `${config.min !== undefined ? config.min : defaultPart}-${\n    config.max !== undefined ? config.max : defaultPart\n  }`;\n\n  const scaleSoftRange = `${config.custom?.axisSoftMin !== undefined ? config.custom.axisSoftMin : defaultPart}-${\n    config.custom?.axisSoftMax !== undefined ? config.custom.axisSoftMax : defaultPart\n  }`;\n\n  const scalePlacement = `${\n    config.custom?.axisPlacement !== undefined ? config.custom?.axisPlacement : AxisPlacement.Auto\n  }`;\n\n  const scaleUnit = config.unit ?? FIXED_UNIT;\n\n  const scaleDistribution = config.custom?.scaleDistribution\n    ? getScaleDistributionPart(config.custom.scaleDistribution)\n    : ScaleDistribution.Linear;\n\n  const scaleLabel = Boolean(config.custom?.axisLabel) ? config.custom!.axisLabel : defaultPart;\n\n  return `${scaleUnit}/${scaleRange}/${scaleSoftRange}/${scalePlacement}/${scaleDistribution}/${scaleLabel}/${fieldType}`;\n}\n\nfunction getScaleDistributionPart(config: ScaleDistributionConfig) {\n  if (config.type === ScaleDistribution.Log) {\n    return `${config.type}${config.log}`;\n  }\n  return config.type;\n}\n","import { Component } from 'react';\nimport * as React from 'react';\nimport { Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport uPlot, { AlignedData } from 'uplot';\n\nimport {\n  DataFrame,\n  DataHoverClearEvent,\n  DataHoverEvent,\n  Field,\n  FieldMatcherID,\n  fieldMatchers,\n  FieldType,\n  LegacyGraphHoverEvent,\n  TimeRange,\n  TimeZone,\n} from '@grafana/data';\nimport { VizLegendOptions } from '@grafana/schema';\n\nimport { PanelContext, PanelContextRoot } from '../../components/PanelChrome/PanelContext';\nimport { VizLayout } from '../../components/VizLayout/VizLayout';\nimport { UPlotChart } from '../../components/uPlot/Plot';\nimport { AxisProps } from '../../components/uPlot/config/UPlotAxisBuilder';\nimport { Renderers, UPlotConfigBuilder } from '../../components/uPlot/config/UPlotConfigBuilder';\nimport { ScaleProps } from '../../components/uPlot/config/UPlotScaleBuilder';\nimport { findMidPointYPosition, pluginLog } from '../../components/uPlot/utils';\nimport { Themeable2 } from '../../types/theme';\n\nimport { GraphNGLegendEvent, XYFieldMatchers } from './types';\nimport { preparePlotFrame as defaultPreparePlotFrame } from './utils';\n\n/**\n * @deprecated\n * @internal -- not a public API\n */\nexport type PropDiffFn<T extends any = any> = (prev: T, next: T) => boolean;\n\n/** @deprecated */\nexport interface GraphNGProps extends Themeable2 {\n  frames: DataFrame[];\n  structureRev?: number; // a number that will change when the frames[] structure changes\n  width: number;\n  height: number;\n  timeRange: TimeRange;\n  timeZone: TimeZone[] | TimeZone;\n  legend: VizLegendOptions;\n  fields?: XYFieldMatchers; // default will assume timeseries data\n  renderers?: Renderers;\n  tweakScale?: (opts: ScaleProps, forField: Field) => ScaleProps;\n  tweakAxis?: (opts: AxisProps, forField: Field) => AxisProps;\n  onLegendClick?: (event: GraphNGLegendEvent) => void;\n  children?: (builder: UPlotConfigBuilder, alignedFrame: DataFrame) => React.ReactNode;\n  prepConfig: (alignedFrame: DataFrame, allFrames: DataFrame[], getTimeRange: () => TimeRange) => UPlotConfigBuilder;\n  propsToDiff?: Array<string | PropDiffFn>;\n  preparePlotFrame?: (frames: DataFrame[], dimFields: XYFieldMatchers) => DataFrame | null;\n  renderLegend: (config: UPlotConfigBuilder) => React.ReactElement | null;\n\n  /**\n   * needed for propsToDiff to re-init the plot & config\n   * this is a generic approach to plot re-init, without having to specify which panel-level options\n   * should cause invalidation. we can drop this in favor of something like panelOptionsRev that gets passed in\n   * similar to structureRev. then we can drop propsToDiff entirely.\n   */\n  options?: Record<string, any>;\n}\n\nfunction sameProps(prevProps: any, nextProps: any, propsToDiff: Array<string | PropDiffFn> = []) {\n  for (const propName of propsToDiff) {\n    if (typeof propName === 'function') {\n      if (!propName(prevProps, nextProps)) {\n        return false;\n      }\n    } else if (nextProps[propName] !== prevProps[propName]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * @internal -- not a public API\n * @deprecated\n */\nexport interface GraphNGState {\n  alignedFrame: DataFrame;\n  alignedData?: AlignedData;\n  config?: UPlotConfigBuilder;\n}\n\n/**\n * \"Time as X\" core component, expects ascending x\n * @deprecated\n */\nexport class GraphNG extends Component<GraphNGProps, GraphNGState> {\n  static contextType = PanelContextRoot;\n  panelContext: PanelContext = {} as PanelContext;\n  private plotInstance: React.RefObject<uPlot>;\n\n  private subscription = new Subscription();\n\n  constructor(props: GraphNGProps) {\n    super(props);\n    let state = this.prepState(props);\n    state.alignedData = state.config!.prepData!([state.alignedFrame]) as AlignedData;\n    this.state = state;\n    this.plotInstance = React.createRef();\n  }\n\n  getTimeRange = () => this.props.timeRange;\n\n  prepState(props: GraphNGProps, withConfig = true) {\n    let state: GraphNGState = null as any;\n\n    const { frames, fields, preparePlotFrame } = props;\n\n    const preparePlotFrameFn = preparePlotFrame || defaultPreparePlotFrame;\n\n    const alignedFrame = preparePlotFrameFn(\n      frames,\n      fields || {\n        x: fieldMatchers.get(FieldMatcherID.firstTimeField).get({}),\n        y: fieldMatchers.get(FieldMatcherID.byTypes).get(new Set([FieldType.number, FieldType.enum])),\n      },\n      props.timeRange\n    );\n    pluginLog('GraphNG', false, 'data aligned', alignedFrame);\n\n    if (alignedFrame) {\n      let config = this.state?.config;\n\n      if (withConfig) {\n        config = props.prepConfig(alignedFrame, this.props.frames, this.getTimeRange);\n        pluginLog('GraphNG', false, 'config prepared', config);\n      }\n\n      state = {\n        alignedFrame,\n        config,\n      };\n\n      pluginLog('GraphNG', false, 'data prepared', state.alignedData);\n    }\n\n    return state;\n  }\n\n  handleCursorUpdate(evt: DataHoverEvent | LegacyGraphHoverEvent) {\n    const time = evt.payload?.point?.time;\n    const u = this.plotInstance.current;\n    if (u && time) {\n      // Try finding left position on time axis\n      const left = u.valToPos(time, 'x');\n      let top;\n      if (left) {\n        // find midpoint between points at current idx\n        top = findMidPointYPosition(u, u.posToIdx(left));\n      }\n\n      if (!top || !left) {\n        return;\n      }\n\n      u.setCursor({\n        left,\n        top,\n      });\n    }\n  }\n\n  componentDidMount() {\n    this.panelContext = this.context as PanelContext;\n    const { eventBus } = this.panelContext;\n\n    this.subscription.add(\n      eventBus\n        .getStream(DataHoverEvent)\n        .pipe(throttleTime(50))\n        .subscribe({\n          next: (evt) => {\n            if (eventBus === evt.origin) {\n              return;\n            }\n            this.handleCursorUpdate(evt);\n          },\n        })\n    );\n\n    // Legacy events (from flot graph)\n    this.subscription.add(\n      eventBus\n        .getStream(LegacyGraphHoverEvent)\n        .pipe(throttleTime(50))\n        .subscribe({\n          next: (evt) => this.handleCursorUpdate(evt),\n        })\n    );\n\n    this.subscription.add(\n      eventBus\n        .getStream(DataHoverClearEvent)\n        .pipe(throttleTime(50))\n        .subscribe({\n          next: () => {\n            const u = this.plotInstance?.current;\n\n            // @ts-ignore\n            if (u && !u.cursor._lock) {\n              u.setCursor({\n                left: -10,\n                top: -10,\n              });\n            }\n          },\n        })\n    );\n  }\n\n  componentDidUpdate(prevProps: GraphNGProps) {\n    const { frames, structureRev, timeZone, propsToDiff } = this.props;\n\n    const propsChanged = !sameProps(prevProps, this.props, propsToDiff);\n\n    if (frames !== prevProps.frames || propsChanged || timeZone !== prevProps.timeZone) {\n      let newState = this.prepState(this.props, false);\n\n      if (newState) {\n        const shouldReconfig =\n          this.state.config === undefined ||\n          timeZone !== prevProps.timeZone ||\n          structureRev !== prevProps.structureRev ||\n          !structureRev ||\n          propsChanged;\n\n        if (shouldReconfig) {\n          newState.config = this.props.prepConfig(newState.alignedFrame, this.props.frames, this.getTimeRange);\n          pluginLog('GraphNG', false, 'config recreated', newState.config);\n        }\n\n        newState.alignedData = newState.config!.prepData!([newState.alignedFrame]) as AlignedData;\n\n        this.setState(newState);\n      }\n    }\n  }\n\n  componentWillUnmount() {\n    this.subscription.unsubscribe();\n  }\n\n  render() {\n    const { width, height, children, renderLegend } = this.props;\n    const { config, alignedFrame, alignedData } = this.state;\n\n    if (!config) {\n      return null;\n    }\n\n    return (\n      <VizLayout width={width} height={height} legend={renderLegend(config)}>\n        {(vizWidth: number, vizHeight: number) => (\n          <UPlotChart\n            config={config}\n            data={alignedData!}\n            width={vizWidth}\n            height={vizHeight}\n            plotRef={(u) => ((this.plotInstance as React.MutableRefObject<uPlot>).current = u)}\n          >\n            {children ? children(config, alignedFrame) : null}\n          </UPlotChart>\n        )}\n      </VizLayout>\n    );\n  }\n}\n","import { isNumber } from 'lodash';\nimport uPlot from 'uplot';\n\nimport {\n  DashboardCursorSync,\n  DataFrame,\n  FieldConfig,\n  FieldType,\n  formattedValueToString,\n  getFieldColorModeForField,\n  getFieldSeriesColor,\n  getFieldDisplayName,\n  getDisplayProcessor,\n  FieldColorModeId,\n  DecimalCount,\n} from '@grafana/data';\nimport {\n  AxisPlacement,\n  GraphDrawStyle,\n  GraphFieldConfig,\n  GraphThresholdsStyleMode,\n  VisibilityMode,\n  ScaleDirection,\n  ScaleOrientation,\n  StackingMode,\n  GraphTransform,\n  AxisColorMode,\n  GraphGradientMode,\n} from '@grafana/schema';\n\n// unit lookup needed to determine if we want power-of-2 or power-of-10 axis ticks\n// see categories.ts is @grafana/data\nconst IEC_UNITS = new Set([\n  'bytes',\n  'bits',\n  'kbytes',\n  'mbytes',\n  'gbytes',\n  'tbytes',\n  'pbytes',\n  'binBps',\n  'binbps',\n  'KiBs',\n  'Kibits',\n  'MiBs',\n  'Mibits',\n  'GiBs',\n  'Gibits',\n  'TiBs',\n  'Tibits',\n  'PiBs',\n  'Pibits',\n]);\n\nconst BIN_INCRS = Array(53);\n\nfor (let i = 0; i < BIN_INCRS.length; i++) {\n  BIN_INCRS[i] = 2 ** i;\n}\n\nimport { UPlotConfigBuilder, UPlotConfigPrepFn } from '../../components/uPlot/config/UPlotConfigBuilder';\nimport { getScaleGradientFn } from '../../components/uPlot/config/gradientFills';\nimport { getStackingGroups, preparePlotData2 } from '../../components/uPlot/utils';\nimport { buildScaleKey } from '../GraphNG/utils';\n\nconst defaultFormatter = (v: any, decimals: DecimalCount = 1) => (v == null ? '-' : v.toFixed(decimals));\n\nconst defaultConfig: GraphFieldConfig = {\n  drawStyle: GraphDrawStyle.Line,\n  showPoints: VisibilityMode.Auto,\n  axisPlacement: AxisPlacement.Auto,\n};\n\nexport const preparePlotConfigBuilder: UPlotConfigPrepFn<{\n  sync?: () => DashboardCursorSync;\n}> = ({\n  frame,\n  theme,\n  timeZones,\n  getTimeRange,\n  sync,\n  allFrames,\n  renderers,\n  tweakScale = (opts) => opts,\n  tweakAxis = (opts) => opts,\n}) => {\n  const eventsScope = '__global_';\n\n  const builder = new UPlotConfigBuilder(timeZones[0]);\n\n  let alignedFrame: DataFrame;\n\n  builder.setPrepData((frames) => {\n    // cache alignedFrame\n    alignedFrame = frames[0];\n\n    return preparePlotData2(frames[0], builder.getStackingGroups());\n  });\n\n  // X is the first field in the aligned frame\n  const xField = frame.fields[0];\n  if (!xField) {\n    return builder; // empty frame with no options\n  }\n\n  const xScaleKey = 'x';\n  let yScaleKey = '';\n\n  const xFieldAxisPlacement =\n    xField.config.custom?.axisPlacement !== AxisPlacement.Hidden ? AxisPlacement.Bottom : AxisPlacement.Hidden;\n  const xFieldAxisShow = xField.config.custom?.axisPlacement !== AxisPlacement.Hidden;\n\n  if (xField.type === FieldType.time) {\n    builder.addScale({\n      scaleKey: xScaleKey,\n      orientation: ScaleOrientation.Horizontal,\n      direction: ScaleDirection.Right,\n      isTime: true,\n      range: () => {\n        const r = getTimeRange();\n        return [r.from.valueOf(), r.to.valueOf()];\n      },\n    });\n\n    // filters first 2 ticks to make space for timezone labels\n    const filterTicks: uPlot.Axis.Filter | undefined =\n      timeZones.length > 1\n        ? (u, splits) => {\n            return splits.map((v, i) => (i < 2 ? null : v));\n          }\n        : undefined;\n\n    for (let i = 0; i < timeZones.length; i++) {\n      const timeZone = timeZones[i];\n      builder.addAxis({\n        scaleKey: xScaleKey,\n        isTime: true,\n        placement: xFieldAxisPlacement,\n        show: xFieldAxisShow,\n        label: xField.config.custom?.axisLabel,\n        timeZone,\n        theme,\n        grid: { show: i === 0 && xField.config.custom?.axisGridShow },\n        filter: filterTicks,\n      });\n    }\n\n    // render timezone labels\n    if (timeZones.length > 1) {\n      builder.addHook('drawAxes', (u: uPlot) => {\n        u.ctx.save();\n\n        u.ctx.fillStyle = theme.colors.text.primary;\n        u.ctx.textAlign = 'left';\n        u.ctx.textBaseline = 'bottom';\n\n        let i = 0;\n        u.axes.forEach((a) => {\n          if (a.side === 2) {\n            //@ts-ignore\n            let cssBaseline: number = a._pos + a._size;\n            u.ctx.fillText(timeZones[i], u.bbox.left, cssBaseline * uPlot.pxRatio);\n            i++;\n          }\n        });\n\n        u.ctx.restore();\n      });\n    }\n  } else {\n    builder.addScale({\n      scaleKey: xScaleKey,\n      orientation: ScaleOrientation.Horizontal,\n      direction: ScaleDirection.Right,\n      range: (u, dataMin, dataMax) => [xField.config.min ?? dataMin, xField.config.max ?? dataMax],\n    });\n\n    builder.addAxis({\n      scaleKey: xScaleKey,\n      placement: xFieldAxisPlacement,\n      show: xFieldAxisShow,\n      label: xField.config.custom?.axisLabel,\n      theme,\n      grid: { show: xField.config.custom?.axisGridShow },\n      formatValue: (v, decimals) => formattedValueToString(xField.display!(v, decimals)),\n    });\n  }\n\n  let customRenderedFields =\n    renderers?.flatMap((r) => Object.values(r.fieldMap).filter((name) => r.indicesOnly.indexOf(name) === -1)) ?? [];\n\n  let indexByName: Map<string, number> | undefined;\n\n  for (let i = 1; i < frame.fields.length; i++) {\n    const field = frame.fields[i];\n\n    const config: FieldConfig<GraphFieldConfig> = {\n      ...field.config,\n      custom: {\n        ...defaultConfig,\n        ...field.config.custom,\n      },\n    };\n\n    const customConfig: GraphFieldConfig = config.custom!;\n\n    if (field === xField || (field.type !== FieldType.number && field.type !== FieldType.enum)) {\n      continue;\n    }\n\n    let fmt = field.display ?? defaultFormatter;\n    if (field.config.custom?.stacking?.mode === StackingMode.Percent) {\n      fmt = getDisplayProcessor({\n        field: {\n          ...field,\n          config: {\n            ...field.config,\n            unit: 'percentunit',\n          },\n        },\n        theme,\n      });\n    }\n    const scaleKey = buildScaleKey(config, field.type);\n    const colorMode = getFieldColorModeForField(field);\n    const scaleColor = getFieldSeriesColor(field, theme);\n    const seriesColor = scaleColor.color;\n\n    // The builder will manage unique scaleKeys and combine where appropriate\n    builder.addScale(\n      tweakScale(\n        {\n          scaleKey,\n          orientation: ScaleOrientation.Vertical,\n          direction: ScaleDirection.Up,\n          distribution: customConfig.scaleDistribution?.type,\n          log: customConfig.scaleDistribution?.log,\n          linearThreshold: customConfig.scaleDistribution?.linearThreshold,\n          min: field.config.min,\n          max: field.config.max,\n          softMin: customConfig.axisSoftMin,\n          softMax: customConfig.axisSoftMax,\n          centeredZero: customConfig.axisCenteredZero,\n          range:\n            customConfig.stacking?.mode === StackingMode.Percent\n              ? (u: uPlot, dataMin: number, dataMax: number) => {\n                  dataMin = dataMin < 0 ? -1 : 0;\n                  dataMax = dataMax > 0 ? 1 : 0;\n                  return [dataMin, dataMax];\n                }\n              : field.type === FieldType.enum\n                ? (u: uPlot, dataMin: number, dataMax: number) => {\n                    // this is the exhaustive enum (stable)\n                    let len = field.config.type!.enum!.text!.length;\n\n                    return [-1, len];\n\n                    // these are only values that are present\n                    // return [dataMin - 1, dataMax + 1]\n                  }\n                : undefined,\n          decimals: field.config.decimals,\n        },\n        field\n      )\n    );\n\n    if (!yScaleKey) {\n      yScaleKey = scaleKey;\n    }\n\n    if (customConfig.axisPlacement !== AxisPlacement.Hidden) {\n      let axisColor: uPlot.Axis.Stroke | undefined;\n\n      if (customConfig.axisColorMode === AxisColorMode.Series) {\n        if (\n          colorMode.isByValue &&\n          field.config.custom?.gradientMode === GraphGradientMode.Scheme &&\n          colorMode.id === FieldColorModeId.Thresholds\n        ) {\n          axisColor = getScaleGradientFn(1, theme, colorMode, field.config.thresholds);\n        } else {\n          axisColor = seriesColor;\n        }\n      }\n\n      const axisDisplayOptions = {\n        border: {\n          show: customConfig.axisBorderShow || false,\n          width: 1 / devicePixelRatio,\n          stroke: axisColor || theme.colors.text.primary,\n        },\n        ticks: {\n          show: customConfig.axisBorderShow || false,\n          stroke: axisColor || theme.colors.text.primary,\n        },\n        color: axisColor || theme.colors.text.primary,\n      };\n\n      let incrs: uPlot.Axis.Incrs | undefined;\n\n      // TODO: these will be dynamic with frame updates, so need to accept getYTickLabels()\n      let values: uPlot.Axis.Values | undefined;\n      let splits: uPlot.Axis.Splits | undefined;\n\n      if (IEC_UNITS.has(config.unit!)) {\n        incrs = BIN_INCRS;\n      } else if (field.type === FieldType.enum) {\n        let text = field.config.type!.enum!.text!;\n        splits = text.map((v: string, i: number) => i);\n        values = text;\n      }\n\n      builder.addAxis(\n        tweakAxis(\n          {\n            scaleKey,\n            label: customConfig.axisLabel,\n            size: customConfig.axisWidth,\n            placement: customConfig.axisPlacement ?? AxisPlacement.Auto,\n            formatValue: (v, decimals) => formattedValueToString(fmt(v, decimals)),\n            theme,\n            grid: { show: customConfig.axisGridShow },\n            decimals: field.config.decimals,\n            distr: customConfig.scaleDistribution?.type,\n            splits,\n            values,\n            incrs,\n            ...axisDisplayOptions,\n          },\n          field\n        )\n      );\n    }\n\n    const showPoints =\n      customConfig.drawStyle === GraphDrawStyle.Points ? VisibilityMode.Always : customConfig.showPoints;\n\n    let pointsFilter: uPlot.Series.Points.Filter = () => null;\n\n    if (customConfig.spanNulls !== true) {\n      pointsFilter = (u, seriesIdx, show, gaps) => {\n        let filtered = [];\n\n        let series = u.series[seriesIdx];\n\n        if (!show && gaps && gaps.length) {\n          const [firstIdx, lastIdx] = series.idxs!;\n          const xData = u.data[0];\n          const yData = u.data[seriesIdx];\n          const firstPos = Math.round(u.valToPos(xData[firstIdx], 'x', true));\n          const lastPos = Math.round(u.valToPos(xData[lastIdx], 'x', true));\n\n          if (gaps[0][0] === firstPos) {\n            filtered.push(firstIdx);\n          }\n\n          // show single points between consecutive gaps that share end/start\n          for (let i = 0; i < gaps.length; i++) {\n            let thisGap = gaps[i];\n            let nextGap = gaps[i + 1];\n\n            if (nextGap && thisGap[1] === nextGap[0]) {\n              // approx when data density is > 1pt/px, since gap start/end pixels are rounded\n              let approxIdx = u.posToIdx(thisGap[1], true);\n\n              if (yData[approxIdx] == null) {\n                // scan left/right alternating to find closest index with non-null value\n                for (let j = 1; j < 100; j++) {\n                  if (yData[approxIdx + j] != null) {\n                    approxIdx += j;\n                    break;\n                  }\n                  if (yData[approxIdx - j] != null) {\n                    approxIdx -= j;\n                    break;\n                  }\n                }\n              }\n\n              filtered.push(approxIdx);\n            }\n          }\n\n          if (gaps[gaps.length - 1][1] === lastPos) {\n            filtered.push(lastIdx);\n          }\n        }\n\n        return filtered.length ? filtered : null;\n      };\n    }\n\n    let { fillOpacity } = customConfig;\n\n    let pathBuilder: uPlot.Series.PathBuilder | null = null;\n    let pointsBuilder: uPlot.Series.Points.Show | null = null;\n\n    if (field.state?.origin) {\n      if (!indexByName) {\n        indexByName = getNamesToFieldIndex(frame, allFrames);\n      }\n\n      const originFrame = allFrames[field.state.origin.frameIndex];\n      const originField = originFrame?.fields[field.state.origin.fieldIndex];\n\n      const dispName = getFieldDisplayName(originField ?? field, originFrame, allFrames);\n\n      // disable default renderers\n      if (customRenderedFields.indexOf(dispName) >= 0) {\n        pathBuilder = () => null;\n        pointsBuilder = () => undefined;\n      } else if (customConfig.transform === GraphTransform.Constant) {\n        // patch some monkeys!\n        const defaultBuilder = uPlot.paths!.linear!();\n\n        pathBuilder = (u, seriesIdx) => {\n          //eslint-disable-next-line\n          const _data: any[] = (u as any)._data; // uplot.AlignedData not exposed in types\n\n          // the data we want the line renderer to pull is x at each plot edge with paired flat y values\n\n          const r = getTimeRange();\n          let xData = [r.from.valueOf(), r.to.valueOf()];\n          let firstY = _data[seriesIdx].find((v: number | null | undefined) => v != null);\n          let yData = [firstY, firstY];\n          let fauxData = _data.slice();\n          fauxData[0] = xData;\n          fauxData[seriesIdx] = yData;\n\n          //eslint-disable-next-line\n          return defaultBuilder(\n            {\n              ...u,\n              _data: fauxData,\n            } as any,\n            seriesIdx,\n            0,\n            1\n          );\n        };\n      }\n\n      if (customConfig.fillBelowTo) {\n        const fillBelowToField = frame.fields.find(\n          (f) =>\n            customConfig.fillBelowTo === f.name ||\n            customConfig.fillBelowTo === f.config?.displayNameFromDS ||\n            customConfig.fillBelowTo === getFieldDisplayName(f, frame, allFrames)\n        );\n\n        const fillBelowDispName = fillBelowToField\n          ? getFieldDisplayName(fillBelowToField, frame, allFrames)\n          : customConfig.fillBelowTo;\n\n        const t = indexByName.get(dispName);\n        const b = indexByName.get(fillBelowDispName);\n        if (isNumber(b) && isNumber(t)) {\n          builder.addBand({\n            series: [t, b],\n            fill: undefined, // using null will have the band use fill options from `t`\n          });\n\n          if (!fillOpacity) {\n            fillOpacity = 35; // default from flot\n          }\n        } else {\n          fillOpacity = 0;\n        }\n      }\n    }\n\n    let dynamicSeriesColor: ((seriesIdx: number) => string | undefined) | undefined = undefined;\n\n    if (colorMode.id === FieldColorModeId.Thresholds) {\n      dynamicSeriesColor = (seriesIdx) => getFieldSeriesColor(alignedFrame.fields[seriesIdx], theme).color;\n    }\n\n    builder.addSeries({\n      pathBuilder,\n      pointsBuilder,\n      scaleKey,\n      showPoints,\n      pointsFilter,\n      colorMode,\n      fillOpacity,\n      theme,\n      dynamicSeriesColor,\n      drawStyle: customConfig.drawStyle!,\n      lineColor: customConfig.lineColor ?? seriesColor,\n      lineWidth: customConfig.lineWidth,\n      lineInterpolation: customConfig.lineInterpolation,\n      lineStyle: customConfig.lineStyle,\n      barAlignment: customConfig.barAlignment,\n      barWidthFactor: customConfig.barWidthFactor,\n      barMaxWidth: customConfig.barMaxWidth,\n      pointSize: customConfig.pointSize,\n      spanNulls: customConfig.spanNulls || false,\n      show: !customConfig.hideFrom?.viz,\n      gradientMode: customConfig.gradientMode,\n      thresholds: config.thresholds,\n      hardMin: field.config.min,\n      hardMax: field.config.max,\n      softMin: customConfig.axisSoftMin,\n      softMax: customConfig.axisSoftMax,\n      // The following properties are not used in the uPlot config, but are utilized as transport for legend config\n      dataFrameFieldIndex: field.state?.origin,\n    });\n\n    // Render thresholds in graph\n    if (customConfig.thresholdsStyle && config.thresholds) {\n      const thresholdDisplay = customConfig.thresholdsStyle.mode ?? GraphThresholdsStyleMode.Off;\n      if (thresholdDisplay !== GraphThresholdsStyleMode.Off) {\n        builder.addThresholds({\n          config: customConfig.thresholdsStyle,\n          thresholds: config.thresholds,\n          scaleKey,\n          theme,\n          hardMin: field.config.min,\n          hardMax: field.config.max,\n          softMin: customConfig.axisSoftMin,\n          softMax: customConfig.axisSoftMax,\n        });\n      }\n    }\n  }\n\n  let stackingGroups = getStackingGroups(frame);\n\n  builder.setStackingGroups(stackingGroups);\n\n  // hook up custom/composite renderers\n  renderers?.forEach((r) => {\n    if (!indexByName) {\n      indexByName = getNamesToFieldIndex(frame, allFrames);\n    }\n    let fieldIndices: Record<string, number> = {};\n\n    for (let key in r.fieldMap) {\n      let dispName = r.fieldMap[key];\n      fieldIndices[key] = indexByName.get(dispName)!;\n    }\n\n    r.init(builder, fieldIndices);\n  });\n\n  builder.scaleKeys = [xScaleKey, yScaleKey];\n\n  // if hovered value is null, how far we may scan left/right to hover nearest non-null\n  const hoverProximityPx = 15;\n\n  let cursor: Partial<uPlot.Cursor> = {\n    // this scans left and right from cursor position to find nearest data index with value != null\n    // TODO: do we want to only scan past undefined values, but halt at explicit null values?\n    dataIdx: (self, seriesIdx, hoveredIdx, cursorXVal) => {\n      let seriesData = self.data[seriesIdx];\n\n      if (seriesData[hoveredIdx] == null) {\n        let nonNullLft = null,\n          nonNullRgt = null,\n          i;\n\n        i = hoveredIdx;\n        while (nonNullLft == null && i-- > 0) {\n          if (seriesData[i] != null) {\n            nonNullLft = i;\n          }\n        }\n\n        i = hoveredIdx;\n        while (nonNullRgt == null && i++ < seriesData.length) {\n          if (seriesData[i] != null) {\n            nonNullRgt = i;\n          }\n        }\n\n        let xVals = self.data[0];\n\n        let curPos = self.valToPos(cursorXVal, 'x');\n        let rgtPos = nonNullRgt == null ? Infinity : self.valToPos(xVals[nonNullRgt], 'x');\n        let lftPos = nonNullLft == null ? -Infinity : self.valToPos(xVals[nonNullLft], 'x');\n\n        let lftDelta = curPos - lftPos;\n        let rgtDelta = rgtPos - curPos;\n\n        if (lftDelta <= rgtDelta) {\n          if (lftDelta <= hoverProximityPx) {\n            hoveredIdx = nonNullLft!;\n          }\n        } else {\n          if (rgtDelta <= hoverProximityPx) {\n            hoveredIdx = nonNullRgt!;\n          }\n        }\n      }\n\n      return hoveredIdx;\n    },\n  };\n\n  if (sync && sync() !== DashboardCursorSync.Off) {\n    cursor.sync = {\n      key: eventsScope,\n      scales: [xScaleKey, null],\n    };\n  }\n\n  builder.setCursor(cursor);\n\n  return builder;\n};\n\nexport function getNamesToFieldIndex(frame: DataFrame, allFrames: DataFrame[]): Map<string, number> {\n  const originNames = new Map<string, number>();\n  frame.fields.forEach((field, i) => {\n    const origin = field.state?.origin;\n    if (origin) {\n      const origField = allFrames[origin.frameIndex]?.fields[origin.fieldIndex];\n      if (origField) {\n        originNames.set(getFieldDisplayName(origField, allFrames[origin.frameIndex], allFrames), i);\n      }\n    }\n  });\n  return originNames;\n}\n","import { Component } from 'react';\nimport * as React from 'react';\n\nimport { DataFrame, TimeRange } from '@grafana/data';\n\nimport { PanelContextRoot } from '../../components/PanelChrome/PanelContext';\nimport { hasVisibleLegendSeries, PlotLegend } from '../../components/uPlot/PlotLegend';\nimport { UPlotConfigBuilder } from '../../components/uPlot/config/UPlotConfigBuilder';\nimport { withTheme2 } from '../../themes/ThemeContext';\nimport { GraphNG, GraphNGProps, PropDiffFn } from '../GraphNG/GraphNG';\n\nimport { preparePlotConfigBuilder } from './utils';\n\nconst propsToDiff: Array<string | PropDiffFn> = ['legend', 'options', 'theme'];\n\ntype TimeSeriesProps = Omit<GraphNGProps, 'prepConfig' | 'propsToDiff' | 'renderLegend'>;\n\nexport class UnthemedTimeSeries extends Component<TimeSeriesProps> {\n  static contextType = PanelContextRoot;\n  declare context: React.ContextType<typeof PanelContextRoot>;\n\n  prepConfig = (alignedFrame: DataFrame, allFrames: DataFrame[], getTimeRange: () => TimeRange) => {\n    const { sync } = this.context;\n    const { theme, timeZone, renderers, tweakAxis, tweakScale } = this.props;\n\n    return preparePlotConfigBuilder({\n      frame: alignedFrame,\n      theme,\n      timeZones: Array.isArray(timeZone) ? timeZone : [timeZone],\n      getTimeRange,\n      sync,\n      allFrames,\n      renderers,\n      tweakScale,\n      tweakAxis,\n    });\n  };\n\n  renderLegend = (config: UPlotConfigBuilder) => {\n    const { legend, frames } = this.props;\n\n    if (!config || (legend && !legend.showLegend) || !hasVisibleLegendSeries(config, frames)) {\n      return null;\n    }\n\n    return <PlotLegend data={frames} config={config} {...legend} />;\n  };\n\n  render() {\n    return (\n      <GraphNG\n        {...this.props}\n        prepConfig={this.prepConfig}\n        propsToDiff={propsToDiff}\n        renderLegend={this.renderLegend}\n      />\n    );\n  }\n}\n\nexport const TimeSeries = withTheme2(UnthemedTimeSeries);\nTimeSeries.displayName = 'TimeSeries';\n","import { createContext, useCallback, useContext } from 'react';\n\nimport { DataFrame, DataFrameFieldIndex, Field } from '@grafana/data';\n\nimport { XYFieldMatchers } from './types';\n\n/** @deprecated */\ninterface GraphNGContextType {\n  mapSeriesIndexToDataFrameFieldIndex: (index: number) => DataFrameFieldIndex;\n  dimFields: XYFieldMatchers;\n  data: DataFrame;\n}\n\n/** @deprecated */\nexport const GraphNGContext = createContext<GraphNGContextType>({} as GraphNGContextType);\n\n/** @deprecated */\nexport const useGraphNGContext = () => {\n  const { data, dimFields, mapSeriesIndexToDataFrameFieldIndex } = useContext<GraphNGContextType>(GraphNGContext);\n\n  const getXAxisField = useCallback(() => {\n    const xFieldMatcher = dimFields.x;\n    let xField: Field | null = null;\n\n    for (let j = 0; j < data.fields.length; j++) {\n      if (xFieldMatcher(data.fields[j], data, [data])) {\n        xField = data.fields[j];\n        break;\n      }\n    }\n\n    return xField;\n  }, [data, dimFields]);\n\n  return {\n    dimFields,\n    mapSeriesIndexToDataFrameFieldIndex,\n    getXAxisField,\n    alignedData: data,\n  };\n};\n","import { useLayoutEffect } from 'react';\n\nimport { UPlotConfigBuilder } from '../../../components/uPlot/config/UPlotConfigBuilder';\n\ninterface ZoomPluginProps {\n  onZoom: (range: { from: number; to: number }) => void;\n  withZoomY?: boolean;\n  config: UPlotConfigBuilder;\n}\n\n// min px width that triggers zoom\nconst MIN_ZOOM_DIST = 5;\n\nconst maybeZoomAction = (e?: MouseEvent | null) => e != null && !e.ctrlKey && !e.metaKey;\n\n/**\n * @alpha\n */\nexport const ZoomPlugin = ({ onZoom, config, withZoomY = false }: ZoomPluginProps) => {\n  useLayoutEffect(() => {\n    let yZoomed = false;\n    let yDrag = false;\n\n    if (withZoomY) {\n      config.addHook('init', (u) => {\n        u.over!.addEventListener(\n          'mousedown',\n          (e) => {\n            if (!maybeZoomAction(e)) {\n              return;\n            }\n\n            if (e.button === 0 && e.shiftKey) {\n              yDrag = true;\n\n              u.cursor!.drag!.x = false;\n              u.cursor!.drag!.y = true;\n\n              let onUp = (e: MouseEvent) => {\n                u.cursor!.drag!.x = true;\n                u.cursor!.drag!.y = false;\n                document.removeEventListener('mouseup', onUp, true);\n              };\n\n              document.addEventListener('mouseup', onUp, true);\n            }\n          },\n          true\n        );\n      });\n    }\n\n    config.addHook('setSelect', (u) => {\n      const isXAxisHorizontal = u.scales.x.ori === 0;\n      if (maybeZoomAction(u.cursor!.event)) {\n        if (withZoomY && yDrag) {\n          if (u.select.height >= MIN_ZOOM_DIST) {\n            for (let key in u.scales!) {\n              if (key !== 'x') {\n                const maxY = isXAxisHorizontal\n                  ? u.posToVal(u.select.top, key)\n                  : u.posToVal(u.select.left + u.select.width, key);\n                const minY = isXAxisHorizontal\n                  ? u.posToVal(u.select.top + u.select.height, key)\n                  : u.posToVal(u.select.left, key);\n                u.setScale(key, { min: minY, max: maxY });\n              }\n            }\n\n            yZoomed = true;\n          }\n\n          yDrag = false;\n        } else {\n          if (u.select.width >= MIN_ZOOM_DIST) {\n            const minX = isXAxisHorizontal\n              ? u.posToVal(u.select.left, 'x')\n              : u.posToVal(u.select.top + u.select.height, 'x');\n            const maxX = isXAxisHorizontal\n              ? u.posToVal(u.select.left + u.select.width, 'x')\n              : u.posToVal(u.select.top, 'x');\n\n            onZoom({ from: minX, to: maxX });\n\n            yZoomed = false;\n          }\n        }\n      }\n\n      // manually hide selected region (since cursor.drag.setScale = false)\n      u.setSelect({ left: 0, width: 0, top: 0, height: 0 }, false);\n    });\n\n    config.setCursor({\n      bind: {\n        dblclick: (u) => () => {\n          if (!maybeZoomAction(u.cursor!.event)) {\n            return null;\n          }\n\n          if (withZoomY && yZoomed) {\n            for (let key in u.scales!) {\n              if (key !== 'x') {\n                // @ts-ignore (this is not typed correctly in uPlot, assigning nulls means auto-scale / reset)\n                u.setScale(key, { min: null, max: null });\n              }\n            }\n\n            yZoomed = false;\n          } else {\n            let xScale = u.scales.x;\n\n            const frTs = xScale.min!;\n            const toTs = xScale.max!;\n            const pad = (toTs - frTs) / 2;\n\n            onZoom({ from: frTs - pad, to: toTs + pad });\n          }\n\n          return null;\n        },\n      },\n    });\n  }, [config, onZoom, withZoomY]);\n\n  return null;\n};\n","import { css } from '@emotion/css';\nimport { useLayoutEffect, useRef, useState } from 'react';\nimport * as React from 'react';\nimport { useMountedState } from 'react-use';\nimport uPlot from 'uplot';\n\nimport {\n  arrayUtils,\n  CartesianCoords2D,\n  DashboardCursorSync,\n  DataFrame,\n  FALLBACK_COLOR,\n  FieldType,\n  formattedValueToString,\n  getDisplayProcessor,\n  getFieldDisplayName,\n  GrafanaTheme2,\n  TimeZone,\n} from '@grafana/data';\nimport { TooltipDisplayMode, SortOrder } from '@grafana/schema';\n\nimport { Portal } from '../../../components/Portal/Portal';\nimport { SeriesTable, SeriesTableRowProps } from '../../../components/VizTooltip/SeriesTable';\nimport { UPlotConfigBuilder } from '../../../components/uPlot/config/UPlotConfigBuilder';\nimport { VizTooltipContainer } from '../../../components/VizTooltip/VizTooltipContainer';\nimport { findMidPointYPosition } from '../../../components/uPlot/utils';\nimport { useStyles2, useTheme2 } from '../../../themes/ThemeContext';\n\ninterface TooltipPluginProps {\n  timeZone: TimeZone;\n  data: DataFrame;\n  frames?: DataFrame[];\n  config: UPlotConfigBuilder;\n  mode?: TooltipDisplayMode;\n  sortOrder?: SortOrder;\n  sync?: () => DashboardCursorSync;\n  // Allows custom tooltip content rendering. Exposes aligned data frame with relevant indexes for data inspection\n  // Use field.state.origin indexes from alignedData frame field to get access to original data frame and field index.\n  renderTooltip?: (alignedFrame: DataFrame, seriesIdx: number | null, datapointIdx: number | null) => React.ReactNode;\n}\n\nconst TOOLTIP_OFFSET = 10;\n\n/**\n * @alpha\n */\nexport const TooltipPlugin = ({\n  mode = TooltipDisplayMode.Single,\n  sortOrder = SortOrder.None,\n  sync,\n  timeZone,\n  config,\n  renderTooltip,\n  ...otherProps\n}: TooltipPluginProps) => {\n  const plotInstance = useRef<uPlot>();\n  const theme = useTheme2();\n  const [focusedSeriesIdx, setFocusedSeriesIdx] = useState<number | null>(null);\n  const [focusedPointIdx, setFocusedPointIdx] = useState<number | null>(null);\n  const [focusedPointIdxs, setFocusedPointIdxs] = useState<Array<number | null>>([]);\n  const [coords, setCoords] = useState<CartesianCoords2D | null>(null);\n  const [isActive, setIsActive] = useState<boolean>(false);\n  const isMounted = useMountedState();\n  let parentWithFocus: HTMLElement | null = null;\n\n  const style = useStyles2(getStyles);\n\n  // Add uPlot hooks to the config, or re-add when the config changed\n  useLayoutEffect(() => {\n    let bbox: DOMRect | undefined = undefined;\n\n    const plotEnter = () => {\n      if (!isMounted()) {\n        return;\n      }\n      setIsActive(true);\n      plotInstance.current?.root.classList.add('plot-active');\n    };\n\n    const plotLeave = () => {\n      if (!isMounted()) {\n        return;\n      }\n      setCoords(null);\n      setIsActive(false);\n      plotInstance.current?.root.classList.remove('plot-active');\n    };\n\n    // cache uPlot plotting area bounding box\n    config.addHook('syncRect', (u, rect) => (bbox = rect));\n\n    config.addHook('init', (u) => {\n      plotInstance.current = u;\n\n      u.over.addEventListener('mouseenter', plotEnter);\n      u.over.addEventListener('mouseleave', plotLeave);\n\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      parentWithFocus = u.root.closest('[tabindex]');\n\n      if (parentWithFocus) {\n        parentWithFocus.addEventListener('focus', plotEnter);\n        parentWithFocus.addEventListener('blur', plotLeave);\n      }\n\n      if (sync && sync() === DashboardCursorSync.Crosshair) {\n        u.root.classList.add('shared-crosshair');\n      }\n    });\n\n    config.addHook('setLegend', (u) => {\n      if (!isMounted()) {\n        return;\n      }\n      setFocusedPointIdx(u.legend.idx!);\n      setFocusedPointIdxs(u.legend.idxs!.slice());\n    });\n\n    // default series/datapoint idx retireval\n    config.addHook('setCursor', (u) => {\n      if (!bbox || !isMounted()) {\n        return;\n      }\n\n      const { x, y } = positionTooltip(u, bbox);\n      if (x !== undefined && y !== undefined) {\n        setCoords({ x, y });\n      } else {\n        setCoords(null);\n      }\n    });\n\n    config.addHook('setSeries', (_, idx) => {\n      if (!isMounted()) {\n        return;\n      }\n      setFocusedSeriesIdx(idx);\n    });\n\n    return () => {\n      setCoords(null);\n\n      if (plotInstance.current) {\n        plotInstance.current.over.removeEventListener('mouseleave', plotLeave);\n        plotInstance.current.over.removeEventListener('mouseenter', plotEnter);\n\n        if (parentWithFocus) {\n          parentWithFocus.removeEventListener('focus', plotEnter);\n          parentWithFocus.removeEventListener('blur', plotLeave);\n        }\n      }\n    };\n  }, [config, setCoords, setIsActive, setFocusedPointIdx, setFocusedPointIdxs]);\n\n  if (focusedPointIdx === null || (!isActive && sync && sync() === DashboardCursorSync.Crosshair)) {\n    return null;\n  }\n\n  // GraphNG expects aligned data, let's take field 0 as x field. FTW\n  let xField = otherProps.data.fields[0];\n  if (!xField) {\n    return null;\n  }\n  const xFieldFmt = xField.display || getDisplayProcessor({ field: xField, timeZone, theme });\n  let tooltip: React.ReactNode = null;\n\n  let xVal = xFieldFmt(xField!.values[focusedPointIdx]).text;\n\n  if (!renderTooltip) {\n    // when interacting with a point in single mode\n    if (mode === TooltipDisplayMode.Single && focusedSeriesIdx !== null) {\n      const field = otherProps.data.fields[focusedSeriesIdx];\n\n      if (!field) {\n        return null;\n      }\n\n      const dataIdx = focusedPointIdxs?.[focusedSeriesIdx] ?? focusedPointIdx;\n      xVal = xFieldFmt(xField!.values[dataIdx]).text;\n      const fieldFmt = field.display || getDisplayProcessor({ field, timeZone, theme });\n      const display = fieldFmt(field.values[dataIdx]);\n\n      tooltip = (\n        <SeriesTable\n          series={[\n            {\n              color: display.color || FALLBACK_COLOR,\n              label: getFieldDisplayName(field, otherProps.data, otherProps.frames),\n              value: display ? formattedValueToString(display) : null,\n            },\n          ]}\n          timestamp={xVal}\n        />\n      );\n    }\n\n    if (mode === TooltipDisplayMode.Multi) {\n      let series: SeriesTableRowProps[] = [];\n      const frame = otherProps.data;\n      const fields = frame.fields;\n      const sortIdx: unknown[] = [];\n\n      for (let i = 0; i < fields.length; i++) {\n        const field = frame.fields[i];\n        if (\n          !field ||\n          field === xField ||\n          field.type === FieldType.time ||\n          field.type !== FieldType.number ||\n          field.config.custom?.hideFrom?.tooltip ||\n          field.config.custom?.hideFrom?.viz\n        ) {\n          continue;\n        }\n\n        const v = otherProps.data.fields[i].values[focusedPointIdxs[i]!];\n        const display = field.display!(v);\n\n        sortIdx.push(v);\n        series.push({\n          color: display.color || FALLBACK_COLOR,\n          label: getFieldDisplayName(field, frame, otherProps.frames),\n          value: display ? formattedValueToString(display) : null,\n          isActive: focusedSeriesIdx === i,\n        });\n      }\n\n      if (sortOrder !== SortOrder.None) {\n        // create sort reference series array, as Array.sort() mutates the original array\n        const sortRef = [...series];\n        const sortFn = arrayUtils.sortValues(sortOrder);\n\n        series.sort((a, b) => {\n          // get compared values indices to retrieve raw values from sortIdx\n          const aIdx = sortRef.indexOf(a);\n          const bIdx = sortRef.indexOf(b);\n          return sortFn(sortIdx[aIdx], sortIdx[bIdx]);\n        });\n      }\n\n      tooltip = <SeriesTable series={series} timestamp={xVal} />;\n    }\n  } else {\n    tooltip = renderTooltip(otherProps.data, focusedSeriesIdx, focusedPointIdx);\n  }\n\n  return (\n    <Portal className={isActive ? style.tooltipWrapper : undefined}>\n      {tooltip && coords && (\n        <VizTooltipContainer position={{ x: coords.x, y: coords.y }} offset={{ x: TOOLTIP_OFFSET, y: TOOLTIP_OFFSET }}>\n          {tooltip}\n        </VizTooltipContainer>\n      )}\n    </Portal>\n  );\n};\n\nfunction isCursorOutsideCanvas({ left, top }: uPlot.Cursor, canvas: DOMRect) {\n  if (left === undefined || top === undefined) {\n    return false;\n  }\n  return left < 0 || left > canvas.width || top < 0 || top > canvas.height;\n}\n\n/**\n * Given uPlot cursor position, figure out position of the tooltip withing the canvas bbox\n * Tooltip is positioned relatively to a viewport\n * @internal\n **/\nexport function positionTooltip(u: uPlot, bbox: DOMRect) {\n  let x, y;\n  const cL = u.cursor.left || 0;\n  const cT = u.cursor.top || 0;\n\n  if (isCursorOutsideCanvas(u.cursor, bbox)) {\n    const idx = u.posToIdx(cL);\n    // when cursor outside of uPlot's canvas\n    if (cT < 0 || cT > bbox.height) {\n      let pos = findMidPointYPosition(u, idx);\n\n      if (pos) {\n        y = bbox.top + pos;\n        if (cL >= 0 && cL <= bbox.width) {\n          // find x-scale position for a current cursor left position\n          x = bbox.left + u.valToPos(u.data[0][u.posToIdx(cL)], u.series[0].scale!);\n        }\n      }\n    }\n  } else {\n    x = bbox.left + cL;\n    y = bbox.top + cT;\n  }\n\n  return { x, y };\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  tooltipWrapper: css({\n    'z-index': theme.zIndex.portal + 1 + ' !important',\n  }),\n});\n","// Slightly modified, but without dependancies:\n// https://raw.githubusercontent.com/malte-wessel/react-custom-scrollbars/master/src/utils/getScrollbarWidth.js\nlet scrollbarWidth: number | null = null;\n\nexport function getScrollbarWidth() {\n  if (scrollbarWidth !== null) {\n    return scrollbarWidth;\n  }\n\n  if (typeof document !== 'undefined') {\n    const div = document.createElement('div');\n    const newStyles = {\n      width: '100px',\n      height: '100px',\n      position: 'absolute',\n      top: '-9999px',\n      overflow: 'scroll',\n      MsOverflowStyle: 'scrollbar',\n    };\n\n    Object.keys(newStyles).map((style) => {\n      // @ts-ignore\n      div.style[style] = newStyles[style];\n    });\n\n    document.body.appendChild(div);\n    scrollbarWidth = div.offsetWidth - div.clientWidth;\n    document.body.removeChild(div);\n  } else {\n    scrollbarWidth = 0;\n  }\n\n  return scrollbarWidth || 0;\n}\n","import { useCallback, useState } from 'react';\n\n/** @internal */\nexport function useForceUpdate() {\n  const [_, setValue] = useState(0); // integer state\n  return useCallback(() => setValue((prevState) => prevState + 1), []);\n}\n","/**\n * @deprecated use it from @grafana/data. Kept here for backward compatibility.\n */\nexport enum NodeGraphDataFrameFieldNames {\n  id = 'id',\n  title = 'title',\n  subTitle = 'subTitle',\n  mainStat = 'mainStat',\n  secondaryStat = 'secondaryStat',\n  source = 'source',\n  target = 'target',\n  detail = 'detail__',\n  arc = 'arc__',\n  color = 'color',\n}\n","/**\n * This function logs a warning if the amount of items exceeds the recommended amount.\n *\n * @param amount\n * @param id\n * @param ariaLabelledBy\n */\nexport function logOptions(\n  amount: number,\n  recommendedAmount: number,\n  id: string | undefined,\n  ariaLabelledBy: string | undefined\n): void {\n  if (amount > recommendedAmount) {\n    const msg = `[Combobox] Items exceed the recommended amount ${recommendedAmount}.`;\n    console.warn(msg, {\n      itemsCount: '' + amount,\n      recommendedAmount: '' + recommendedAmount,\n      'aria-labelledby': ariaLabelledBy ?? '',\n      id: id ?? '',\n    });\n  }\n}\n","import { createTheme, GrafanaTheme } from '@grafana/data';\n\nlet themeMock: ((name?: string) => GrafanaTheme) | null;\n\n/** @public */\nexport const getTheme = (mode: 'dark' | 'light' = 'dark') => {\n  if (themeMock) {\n    return themeMock(mode);\n  }\n\n  return createTheme({ colors: { mode } }).v1;\n};\n\n/** @public */\nexport const mockTheme = (mock: (name?: string) => GrafanaTheme) => {\n  themeMock = mock;\n  return () => {\n    themeMock = null;\n  };\n};\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getAccessibilityStyles(theme: GrafanaTheme2) {\n  return css({\n    '.sr-only': {\n      position: 'absolute',\n      width: '1px',\n      height: '1px',\n      padding: 0,\n      margin: '-1px',\n      overflow: 'hidden',\n      clip: 'rect(0, 0, 0, 0)',\n      border: 0,\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getAlertingStyles(theme: GrafanaTheme2) {\n  return css({\n    '.alert-state-paused, .alert-state-pending': {\n      color: theme.colors.text.secondary,\n      fontWeight: theme.typography.fontWeightMedium,\n    },\n\n    '.alert-state-ok': {\n      color: theme.colors.success.text,\n      fontWeight: theme.typography.fontWeightMedium,\n    },\n\n    '.alert-state-warning': {\n      color: theme.colors.warning.text,\n      fontWeight: theme.typography.fontWeightMedium,\n    },\n\n    '.alert-state-critical': {\n      color: theme.colors.error.text,\n      fontWeight: theme.typography.fontWeightMedium,\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getCardStyles(theme: GrafanaTheme2) {\n  return css({\n    '.card-section': {\n      marginBottom: theme.spacing(4),\n    },\n\n    '.card-list': {\n      display: 'flex',\n      flexDirection: 'row',\n      flexWrap: 'wrap',\n      listStyleType: 'none',\n    },\n\n    '.card-item': {\n      display: 'block',\n      height: '100%',\n      background: theme.colors.background.secondary,\n      boxShadow: 'none',\n      padding: theme.spacing(2),\n      borderRadius: theme.shape.radius.default,\n\n      '&:hover': {\n        background: theme.colors.emphasize(theme.colors.background.secondary, 0.03),\n      },\n\n      '.label-tag': {\n        marginLeft: theme.spacing(1),\n        fontSize: '11px',\n        padding: '2px 6px',\n      },\n    },\n\n    '.card-item-body': {\n      display: 'flex',\n      overflow: 'hidden',\n    },\n\n    '.card-item-details': {\n      overflow: 'hidden',\n    },\n\n    '.card-item-header': {\n      marginBottom: theme.spacing(2),\n    },\n\n    '.card-item-type': {\n      color: theme.colors.text.secondary,\n      textTransform: 'uppercase',\n      fontSize: theme.typography.size.sm,\n      fontWeight: theme.typography.fontWeightMedium,\n    },\n\n    '.card-item-badge': {\n      margin: '6px 0',\n    },\n\n    '.card-item-notice': {\n      fontSize: theme.typography.size.sm,\n    },\n\n    '.card-item-name': {\n      color: theme.colors.text.primary,\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      width: '100%',\n    },\n\n    '.card-item-label': {\n      marginLeft: theme.spacing(1),\n    },\n\n    '.card-item-sub-name': {\n      color: theme.colors.text.secondary,\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      width: '100%',\n    },\n\n    '.card-item-sub-name--header': {\n      color: theme.colors.text.secondary,\n      textTransform: 'uppercase',\n      marginBottom: theme.spacing(2),\n      fontSize: theme.typography.size.sm,\n      fontWeight: 'bold',\n    },\n\n    '.card-list-layout-grid': {\n      '.card-item-type': {\n        display: 'inline-block',\n      },\n\n      '.card-item-notice': {\n        fontSize: theme.typography.size.sm,\n        display: 'inline-block',\n        marginLeft: theme.spacing(2),\n      },\n\n      '.card-item-header-action': {\n        float: 'right',\n      },\n\n      '.card-item-wrapper': {\n        width: '100%',\n        padding: theme.spacing(0, 2, 2, 0),\n      },\n\n      '.card-item-wrapper--clickable': {\n        cursor: 'pointer',\n      },\n\n      '.card-item-figure': {\n        margin: theme.spacing(0, 2, 2, 0),\n        height: '80px',\n\n        img: {\n          width: '80px',\n        },\n      },\n\n      '.card-item-name': {\n        fontSize: theme.typography.h3.fontSize,\n      },\n\n      [theme.breakpoints.up('md')]: {\n        '.card-item-wrapper': {\n          width: '50%',\n        },\n      },\n\n      [theme.breakpoints.up('lg')]: {\n        '.card-item-wrapper': {\n          width: '33.333333%',\n        },\n      },\n\n      '&.card-list-layout-grid--max-2-col': {\n        [theme.breakpoints.up('lg')]: {\n          '.card-item-wrapper': {\n            width: '50%',\n          },\n        },\n      },\n    },\n\n    '.card-list-layout-list': {\n      '.card-item-wrapper': {\n        padding: 0,\n        width: '100%',\n        marginBottom: theme.spacing(1),\n      },\n\n      '.card-item-wrapper--clickable': {\n        cursor: 'pointer',\n      },\n\n      '.card-item': {\n        borderRadius: theme.shape.radius.default,\n      },\n\n      '.card-item-header': {\n        float: 'right',\n        textAlign: 'right',\n      },\n\n      '.card-item-figure': {\n        margin: theme.spacing(0, 2, 0, 0),\n        img: {\n          width: '48px',\n        },\n      },\n\n      '.card-item-name': {\n        fontSize: theme.typography.h4.fontSize,\n      },\n\n      '.card-item-sub-name': {\n        fontSize: theme.typography.size.sm,\n      },\n\n      '.layout-selector': {\n        marginRight: 0,\n      },\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getCodeStyles(theme: GrafanaTheme2) {\n  return css({\n    'code, pre, kbd, samp': {\n      ...theme.typography.code,\n      fontSize: theme.typography.bodySmall.fontSize,\n      backgroundColor: theme.colors.background.primary,\n      color: theme.colors.text.primary,\n      border: `1px solid ${theme.colors.border.medium}`,\n      borderRadius: theme.shape.radius.default,\n    },\n\n    code: {\n      whiteSpace: 'nowrap',\n      padding: '2px 5px',\n      margin: '0 2px',\n    },\n\n    pre: {\n      display: 'block',\n      margin: theme.spacing(0, 0, 2),\n      lineHeight: theme.typography.body.lineHeight,\n      wordBreak: 'break-all',\n      wordWrap: 'break-word',\n      whiteSpace: 'pre-wrap',\n      overflow: 'auto',\n      padding: '10px',\n\n      code: {\n        padding: 0,\n        color: 'inherit',\n        whiteSpace: 'pre-wrap',\n        backgroundColor: 'transparent',\n        border: 0,\n      },\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getDashboardGridStyles(theme: GrafanaTheme2) {\n  return css({\n    '.react-resizable-handle': {\n      // this needs to use visibility and not display none in order not to cause resize flickering\n      visibility: 'hidden',\n    },\n\n    '.react-grid-item, #grafana-portal-container': {\n      touchAction: 'initial !important',\n\n      '&:hover': {\n        '.react-resizable-handle': {\n          visibility: 'visible',\n        },\n      },\n    },\n\n    '.dragging-active': {\n      '*': {\n        cursor: 'move',\n        userSelect: 'none',\n      },\n    },\n\n    [theme.breakpoints.down('md')]: {\n      '.react-grid-layout': {\n        height: 'unset !important',\n      },\n      '.react-grid-item': {\n        display: 'block !important',\n        transitionProperty: 'none !important',\n        // can't avoid type assertion here due to !important\n        // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n        position: 'unset !important' as 'unset',\n        transform: 'translate(0px, 0px) !important',\n        marginBottom: theme.spacing(2),\n      },\n      '.panel-repeater-grid-item': {\n        height: 'auto !important',\n      },\n    },\n\n    '.react-grid-item.react-grid-placeholder': {\n      boxShadow: `0 0 4px ${theme.colors.primary.border} !important`,\n      background: `${theme.colors.primary.transparent} !important`,\n      zIndex: '-1 !important',\n      opacity: 'unset !important',\n    },\n\n    '.react-grid-item > .react-resizable-handle::after': {\n      borderRight: `2px solid ${theme.isDark ? theme.v1.palette.gray1 : theme.v1.palette.gray3} !important`,\n      borderBottom: `2px solid ${theme.isDark ? theme.v1.palette.gray1 : theme.v1.palette.gray3} !important`,\n    },\n\n    // Hack for preventing panel menu overlapping.\n    '.react-grid-item.resizing.panel, .react-grid-item.panel.dropdown-menu-open, .react-grid-item.react-draggable-dragging.panel':\n      {\n        zIndex: theme.zIndex.dropdown,\n      },\n\n    // Disable animation on initial rendering and enable it when component has been mounted.\n    '.react-grid-item.cssTransforms': {\n      transitionProperty: 'none !important',\n    },\n\n    [theme.transitions.handleMotion('no-preference')]: {\n      '.react-grid-layout--enable-move-animations': {\n        '.react-grid-item.cssTransforms': {\n          transitionProperty: 'transform !important',\n        },\n      },\n    },\n\n    '.dashboard-selected-element': {\n      outline: `1px dashed ${theme.colors.primary.border}`,\n      outlineOffset: '0px',\n      borderRadius: theme.shape.radius.default,\n    },\n\n    '.dashboard-selectable-element': {\n      '&:hover': {\n        outline: `1px dashed ${theme.colors.border.strong}`,\n        outlineOffset: '0px',\n        borderRadius: theme.shape.radius.default,\n        backgroundColor: theme.colors.emphasize(theme.colors.background.canvas, 0.08),\n      },\n    },\n\n    '.dashboard-canvas-add-button': {\n      display: 'flex',\n      opacity: 0.5,\n      transition: theme.transitions.create('opacity'),\n      filter: `grayscale(100%)`,\n      '&:hover,:focus-within': {\n        opacity: 1,\n        filter: 'unset',\n      },\n    },\n\n    '.dashboard-visible-hidden-element': {\n      position: 'relative',\n    },\n\n    // Universal style for marking drop targets when dragging between layouts\n    '.dashboard-drop-target': {\n      // Setting same options for hovered and not hovered to overwrite any conflicting styles\n      // There was a race condition with selectable elements styles\n      '&:is(:hover),&:not(:hover)': {\n        outline: `2px solid ${theme.colors.primary.border}`,\n        outlineOffset: '0px',\n        borderRadius: theme.shape.radius.default,\n      },\n    },\n\n    // Body style for preventing selection when dragging\n    '.dashboard-draggable-transparent-selection': {\n      '*::selection': {\n        all: 'inherit',\n      },\n    },\n\n    '.react-draggable-dragging': {\n      opacity: 0.8,\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getDashDiffStyles(theme: GrafanaTheme2) {\n  return css({\n    '.delta-html': {\n      background: theme.colors.background.secondary,\n      paddingTop: '5px',\n      paddingBottom: '5px',\n      userSelect: 'none',\n    },\n\n    '.diff-line': {\n      color: theme.colors.text.primary,\n      fontFamily: theme.typography.fontFamilyMonospace,\n      fontSize: theme.typography.size.sm,\n      lineHeight: 2,\n      marginBottom: 0,\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      whiteSpace: 'nowrap',\n      position: 'relative',\n\n      '&:after': {\n        left: '-40px',\n      },\n    },\n\n    '.diff-line-number': {\n      color: theme.colors.text.secondary,\n      display: 'inline-block',\n      fontSize: theme.typography.size.xs,\n      lineHeight: 2.3,\n      textAlign: 'right',\n      width: '30px',\n    },\n\n    '.diff-line-number-hide': {\n      visibility: 'hidden',\n    },\n\n    '.diff-line-icon': {\n      color: theme.colors.text.primary,\n      fontSize: theme.typography.size.xs,\n      float: 'right',\n      position: 'relative',\n      top: '2px',\n      right: '10px',\n    },\n\n    '.diff-json-new, .diff-json-old, .diff-json-deleted, .diff-json-added': {\n      color: theme.v1.palette.gray5,\n\n      '.diff-line-number': {\n        color: theme.colors.text.primary,\n      },\n    },\n\n    '.diff-json-new': {\n      backgroundColor: theme.isDark ? '#457740' : '#664e33',\n    },\n    '.diff-json-old': {\n      backgroundColor: theme.isDark ? '#a04338' : '#5a372a',\n    },\n    '.diff-json-added': {\n      backgroundColor: theme.colors.primary.shade,\n    },\n    '.diff-json-deleted': {\n      backgroundColor: theme.colors.error.shade,\n    },\n\n    '.diff-value': {\n      userSelect: 'all',\n    },\n\n    // Basic\n    '.diff-circle': {\n      marginRight: '0.5em',\n      '*': {\n        marginBottom: '1px',\n      },\n    },\n    '.diff-circle-changed': {\n      color: '#f59433',\n    },\n    '.diff-circle-added': {\n      color: '#29d761',\n    },\n    '.diff-circle-deleted': {\n      color: '#fd474a',\n    },\n\n    '.diff-item-added, .diff-item-deleted': {\n      listStyle: 'none',\n    },\n\n    '.diff-group': {\n      background: theme.colors.background.secondary,\n      fontSize: '16px',\n      fontStyle: 'normal',\n      padding: '10px 15px',\n      margin: theme.spacing(2, 0),\n\n      '.diff-group': {\n        padding: '0 5px',\n      },\n    },\n\n    '.diff-group-name': {\n      display: 'inline-block',\n      width: '100%',\n      fontSize: '16px',\n      paddingLeft: '1.75em',\n      margin: '0 0 14px 0',\n    },\n\n    '.diff-summary-key': {\n      paddingLeft: '0.25em',\n    },\n\n    '.diff-list': {\n      paddingLeft: '40px',\n\n      '.diff-list': {\n        paddingLeft: 0,\n      },\n    },\n\n    '.diff-item': {\n      color: theme.v1.palette.gray2,\n      lineHeight: 2.5,\n\n      '> div': {\n        display: 'inline',\n      },\n    },\n\n    '.diff-item-changeset': {\n      listStyle: 'none',\n    },\n\n    '.diff-label': {\n      backgroundColor: theme.colors.action.hover,\n      borderRadius: theme.shape.radius.default,\n      color: theme.colors.text.primary,\n      display: 'inline',\n      fontSize: `${theme.typography.fontSize}px`,\n      margin: '0 5px',\n      padding: '3px 8px',\n    },\n\n    '.diff-linenum': {\n      float: 'right',\n    },\n\n    '.diff-arrow': {\n      color: theme.colors.text.primary,\n    },\n\n    '.diff-block': {\n      width: '100%',\n      display: 'inline-block',\n    },\n\n    '.diff-block-title': {\n      fontSize: '16px',\n      display: 'inline-block',\n    },\n\n    '.diff-title': {\n      fontSize: '16px',\n    },\n\n    '.diff-change-container': {\n      margin: '0 0',\n      paddingLeft: '3em',\n      paddingRight: 0,\n    },\n\n    '.diff-change-group': {\n      width: '100%',\n      color: theme.colors.text.primary,\n      marginBottom: '14px',\n    },\n\n    '.diff-change-item': {\n      display: 'inline-block',\n    },\n\n    '.diff-change-title': {\n      fontSize: '16px',\n    },\n\n    '.bullet-position-container': {\n      position: 'relative',\n      left: '-6px',\n    },\n\n    '.diff-list-circle': {\n      marginBottom: '3px',\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2, ThemeTypographyVariant } from '@grafana/data';\n\nimport { getFeatureToggle } from '../../utils/featureToggle';\nimport { getFocusStyles } from '../mixins';\n\nexport function getElementStyles(theme: GrafanaTheme2, isExtensionSidebarOpen?: boolean) {\n  // in case the sidebar is closed, we want the body to scroll\n  // react select tries prevent scrolling by setting overflow/padding-right on the body\n  // Need type assertion here due to the use of !important\n  // see https://github.com/frenic/csstype/issues/114#issuecomment-697201978\n  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n  const bodyOverflow = isExtensionSidebarOpen ? {} : { overflowY: 'auto !important' as 'auto' };\n  return css({\n    '*, *::before, *::after': {\n      boxSizing: 'inherit',\n    },\n\n    // Suppress the focus outline on elements that cannot be accessed via keyboard.\n    // This prevents an unwanted focus outline from appearing around elements that\n    // might still respond to pointer events.\n    //\n    // Credit: https://github.com/suitcss/base\n    \"[tabindex='-1']:focus\": {\n      outline: 'none !important',\n    },\n\n    html: {\n      MsOverflowStyle: 'scrollbar',\n      WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n      boxSizing: 'border-box',\n      height: '100%',\n      fontSize: `${theme.typography.htmlFontSize}px`,\n      fontFamily: theme.typography.fontFamily,\n      lineHeight: theme.typography.body.lineHeight,\n      fontKerning: 'normal',\n    },\n\n    ':root': {\n      colorScheme: theme.colors.mode,\n    },\n\n    body: {\n      height: '100%',\n      width: '100%',\n      position: 'unset',\n      color: theme.colors.text.primary,\n      backgroundColor: theme.colors.background.canvas,\n      paddingRight: '0 !important',\n      '@media print': {\n        overflow: 'visible',\n      },\n      '@page': {\n        margin: 0,\n        size: 'auto',\n        padding: 0,\n      },\n      // disable contextual font ligatures. otherwise, in firefox and safari,\n      // an \"x\" between 2 numbers is replaced by a multiplication ligature\n      // see https://github.com/rsms/inter/issues/222\n      fontVariantLigatures: 'no-contextual',\n      ...theme.typography.body,\n      ...bodyOverflow,\n      fontVariantNumeric: getFeatureToggle('tabularNumbers') ? 'tabular-nums' : 'initial',\n    },\n\n    'h1, .h1': getVariantStyles(theme.typography.h1),\n    'h2, .h2': getVariantStyles(theme.typography.h2),\n    'h3, .h3': getVariantStyles(theme.typography.h3),\n    'h4, .h4': getVariantStyles(theme.typography.h4),\n    'h5, .h5': getVariantStyles(theme.typography.h5),\n    'h6, .h6': getVariantStyles(theme.typography.h6),\n\n    p: {\n      margin: theme.spacing(0, 0, 2),\n    },\n\n    textarea: {\n      overflow: 'auto',\n      // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n      resize: 'vertical',\n    },\n\n    button: {\n      letterSpacing: theme.typography.body.letterSpacing,\n\n      '&:focus-visible': getFocusStyles(theme),\n      '&:focus': {\n        outline: 'none',\n      },\n    },\n\n    label: {\n      // Allow labels to use `margin` for spacing.\n      display: 'inline-block',\n    },\n\n    figure: {\n      margin: theme.spacing(0, 0, 2),\n    },\n\n    img: {\n      // By default, `<img>`s are `inline-block`. This assumes that, and vertically\n      // centers them. This won't apply should you reset them to `block` level.\n      verticalAlign: 'middle',\n      // Note: `<img>`s are deliberately not made responsive by default.\n      // For the rationale behind this, see the comments on the `.img-fluid` class.\n    },\n\n    fieldset: {\n      // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n      // so we reset that to ensure it behaves more like a standard block element.\n      // See https://github.com/twbs/bootstrap/issues/12359.\n      minWidth: 0,\n      // Reset the default outline behavior of fieldsets so they don't affect page layout.\n      padding: 0,\n      margin: 0,\n      border: 0,\n    },\n\n    legend: {\n      // Reset the entire legend element to match the `fieldset`\n      display: 'block',\n      width: '100%',\n      padding: 0,\n      marginBottom: theme.spacing(1),\n      fontSize: theme.spacing(3),\n      lineHeight: 'inherit',\n      border: 0,\n    },\n\n    // Ex: 14px base font * 85% = about 12px\n    'small, .small': {\n      fontSize: theme.typography.bodySmall.fontSize,\n      fontWeight: 'normal',\n    },\n\n    'b, strong': {\n      fontWeight: theme.typography.fontWeightMedium,\n    },\n\n    em: {\n      fontStyle: 'italic',\n      color: theme.colors.text.primary,\n    },\n\n    cite: {\n      fontStyle: 'normal',\n    },\n\n    blockquote: {\n      padding: theme.spacing(0, 0, 0, 2),\n      margin: theme.spacing(0, 0, 2),\n      borderLeft: `5px solid ${theme.v1.palette.gray3}`,\n      p: {\n        marginBottom: 0,\n        fontSize: theme.typography.fontSize * 1.25,\n        fontWeight: 300,\n        lineHeight: 1.25,\n      },\n      small: {\n        display: 'block',\n        lineHeight: theme.typography.body.lineHeight,\n        color: theme.v1.palette.gray2,\n        '&:before': {\n          content: \"'\\\\2014 \\\\00A0'\",\n        },\n      },\n    },\n\n    // Quotes\n    'q:before, q:after, blockquote:before, blockquote:after': {\n      content: \"''\",\n    },\n\n    // Addresses\n    address: {\n      display: 'block',\n      marginBottom: theme.spacing(2),\n      fontStyle: 'normal',\n      lineHeight: theme.typography.body.lineHeight,\n    },\n\n    'a.external-link': {\n      color: theme.colors.text.link,\n      textDecoration: 'normal',\n\n      '&:hover': {\n        color: theme.colors.text.link,\n        textDecoration: 'underline',\n      },\n    },\n\n    '.link': {\n      color: theme.colors.text.primary,\n      cursor: 'pointer',\n    },\n\n    '.link:hover': {\n      color: theme.colors.text.maxContrast,\n    },\n\n    '.pointer': {\n      cursor: 'pointer',\n    },\n\n    'audio, canvas, progress, video': {\n      display: 'inline-block',\n      verticalAlign: 'baseline',\n    },\n\n    // Prevent modern browsers from displaying `audio` without controls.\n    // Remove excess height in iOS 5 devices.\n    'audio:not([controls])': {\n      display: 'none',\n      height: 0,\n    },\n\n    // Address styling not present in Safari.\n    'abbr[title]': {\n      borderBottom: '1px dotted',\n      cursor: 'help',\n    },\n    dfn: {\n      fontStyle: 'italic',\n    },\n\n    // Prevent `sub` and `sup` affecting `line-height` in all browsers.\n    'sub, sup': {\n      fontSize: '75%',\n      lineHeight: 0,\n      position: 'relative',\n      verticalAlign: 'baseline',\n    },\n    sup: {\n      top: '-0.5em',\n    },\n    sub: {\n      bottom: '-0.25em',\n    },\n\n    hr: {\n      marginTop: theme.spacing(2),\n      marginBottom: theme.spacing(2),\n      border: 0,\n      borderTop: `1px solid ${theme.colors.border.medium}`,\n    },\n\n    'mark, .mark': {\n      background: theme.colors.warning.main,\n    },\n\n    'ul, ol, dl': {\n      marginTop: 0,\n      marginBottom: 0,\n      padding: 0,\n    },\n    'ul ul, ul ol, ol ol, ol ul': {\n      marginBottom: 0,\n    },\n    li: {\n      lineHeight: theme.typography.body.lineHeight,\n    },\n    dd: {\n      marginBottom: theme.spacing(1),\n      marginLeft: 0, // Undo browser default\n    },\n    'dt, dd': {\n      lineHeight: theme.typography.body.lineHeight,\n    },\n    dt: {\n      fontWeight: theme.typography.fontWeightMedium,\n    },\n\n    // 1. Correct color not being inherited.\n    //    Known issue: affects color of disabled elements.\n    // 2. Correct font properties not being inherited.\n    // 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n    'button, input, optgroup, select, textarea': {\n      // eslint-disable-next-line @grafana/no-border-radius-literal\n      borderRadius: 0,\n      color: 'inherit',\n      font: 'inherit',\n      lineHeight: 'inherit',\n      margin: 0,\n    },\n\n    // Don't inherit the `font-weight` (applied by a rule above).\n    // NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n    optgroup: {\n      fontWeight: 'bold',\n    },\n\n    // 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n    //    and `video` controls.\n    // 2. Correct inability to style clickable `input` types in iOS.\n    // 3. Improve usability and consistency of cursor style between image-type\n    //    `input` and others.\n    'button, html input[type=\"button\"], input[type=\"submit\"]': {\n      WebkitAppearance: 'button',\n      cursor: 'pointer',\n    },\n\n    'input[type=\"search\"]': {\n      // This overrides the extra rounded corners on search inputs in iOS so that our\n      // `.form-control` class can properly style them. Note that this cannot simply\n      // be added to `.form-control` as it's not specific enough. For details, see\n      // https://github.com/twbs/bootstrap/issues/11586.\n      WebkitAppearance: 'none',\n    },\n\n    // Remove inner padding and search cancel button in Safari and Chrome on OS X.\n    // Safari (but not Chrome) clips the cancel button when the search input has\n    // padding (and `textfield` appearance).\n    'input[type=\"search\"]::-webkit-search-cancel-button, input[type=\"search\"]::-webkit-search-decoration': {\n      WebkitAppearance: 'none',\n    },\n\n    table: {\n      // Reset for nesting within parents with `background-color`.\n      backgroundColor: 'transparent',\n      borderCollapse: 'collapse',\n      borderSpacing: 0,\n    },\n\n    caption: {\n      paddingTop: theme.spacing(0.5),\n      paddingBottom: theme.spacing(0.5),\n      color: theme.colors.text.secondary,\n      textAlign: 'left',\n      captionSide: 'bottom',\n    },\n\n    th: {\n      fontWeight: theme.typography.fontWeightMedium,\n      textAlign: 'left',\n    },\n\n    'td, th': {\n      padding: 0,\n    },\n\n    // Utility classes\n    '.muted': {\n      color: theme.colors.text.secondary,\n    },\n\n    'a.muted:hover, a.muted:focus': {\n      color: theme.colors.text.primary,\n    },\n\n    '.text-warning': {\n      color: theme.colors.warning.text,\n\n      '&:hover, &:focus': {\n        color: theme.colors.emphasize(theme.colors.warning.text, 0.15),\n      },\n    },\n\n    '.text-error': {\n      color: theme.colors.error.text,\n\n      '&:hover, &:focus': {\n        color: theme.colors.emphasize(theme.colors.error.text, 0.15),\n      },\n    },\n\n    '.text-success': {\n      color: '$success-text-color',\n\n      '&:hover, &:focus': {\n        color: theme.colors.emphasize(theme.colors.success.text, 0.15),\n      },\n    },\n\n    a: {\n      cursor: 'pointer',\n      color: theme.colors.text.primary,\n      textDecoration: 'none',\n\n      '&:focus': {\n        outline: 'none',\n      },\n\n      '&:focus-visible': getFocusStyles(theme),\n\n      '&:[disabled]': {\n        cursor: 'default',\n        // Need type assertion here due to the use of !important\n        // see https://github.com/frenic/csstype/issues/114#issuecomment-697201978\n        // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n        pointerEvents: 'none !important' as 'none',\n      },\n    },\n\n    // iOS \"clickable elements\" fix for role=\"button\"\n    //\n    // Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n    // for traditionally non-focusable elements with role=\"button\"\n    // see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n    \"[role='button']\": {\n      cursor: 'pointer',\n    },\n\n    // Always hide an element with the `hidden` HTML attribute (from PureCSS).\n    '[hidden]': {\n      display: 'none !important',\n    },\n\n    // Avoid 300ms click delay on touch devices that support the `touch-action` CSS property.\n    //\n    // In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11\n    // DON'T remove the click delay when `<meta name=\"viewport\" content=\"width=device-width\">` is present.\n    // However, they DO support removing the click delay via `touch-action: manipulation`.\n    // See:\n    // * http://v4-alpha.getbootstrap.com/content/reboot/#click-delay-optimization-for-touch\n    // * http://caniuse.com/#feat=css-touch-action\n    // * http://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay\n    \"a, area, button, [role='button'], input, label, select, summary, textarea\": {\n      touchAction: 'manipulation',\n    },\n\n    '.text-link': {\n      textDecoration: 'underline',\n    },\n\n    '.text-left': {\n      textAlign: 'left',\n    },\n\n    '.text-right': {\n      textAlign: 'right',\n    },\n\n    '.text-center': {\n      textAlign: 'center',\n    },\n\n    '.highlight-search-match': {\n      background: theme.components.textHighlight.background,\n      color: theme.components.textHighlight.text,\n      padding: 0,\n    },\n\n    '.template-variable': {\n      color: theme.colors.primary.text,\n    },\n\n    '.modal-header-title': {\n      fontSize: theme.typography.size.lg,\n      float: 'left',\n      paddingTop: theme.spacing(1),\n      margin: theme.spacing(0, 2),\n    },\n  });\n}\n\nexport function getVariantStyles(variant: ThemeTypographyVariant) {\n  return {\n    margin: 0,\n    fontSize: variant.fontSize,\n    lineHeight: variant.lineHeight,\n    fontWeight: variant.fontWeight,\n    letterSpacing: variant.letterSpacing,\n    fontFamily: variant.fontFamily,\n    marginBottom: '0.45em',\n  };\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getExtraStyles(theme: GrafanaTheme2) {\n  return css({\n    // fix white background on intercom in dark mode\n    'iframe.intercom-borderless-frame': {\n      colorScheme: theme.colors.mode,\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getFilterTableStyles(theme: GrafanaTheme2) {\n  return css({\n    '.filter-table *': {\n      boxSizing: 'border-box',\n    },\n\n    '.filter-table': {\n      width: '100%',\n      borderCollapse: 'separate',\n\n      tbody: {\n        'tr:nth-of-type(odd)': {\n          background: theme.colors.emphasize(theme.colors.background.primary, 0.02),\n        },\n      },\n\n      th: {\n        width: 'auto',\n        padding: theme.spacing(0.5, 1),\n        textAlign: 'left',\n        lineHeight: '30px',\n        height: '30px',\n        whiteSpace: 'nowrap',\n      },\n\n      td: {\n        padding: theme.spacing(0.5, 1),\n        lineHeight: '30px',\n        height: '30px',\n        whiteSpace: 'nowrap',\n      },\n\n      '.link-td': {\n        padding: 0,\n        lineHeight: '30px',\n        height: '30px',\n        whiteSpace: 'nowrap',\n\n        a: {\n          display: 'block',\n          padding: theme.spacing(0, 1),\n          height: '30px',\n        },\n      },\n\n      '.ellipsis': {\n        display: 'block',\n        width: '100%',\n        whiteSpace: 'nowrap',\n        overflow: 'hidden',\n        textOverflow: 'ellipsis',\n      },\n\n      '.expanded': {\n        borderColor: theme.components.panel.background,\n      },\n\n      '.expanded > td': {\n        paddingBottom: 0,\n      },\n\n      '.filter-table__avatar': {\n        width: '25px',\n        height: '25px',\n        borderRadius: theme.shape.radius.circle,\n      },\n\n      '&--hover': {\n        'tbody tr:hover': {\n          background: theme.colors.emphasize(theme.colors.background.primary, 0.05),\n        },\n      },\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getFontStyles(theme: GrafanaTheme2) {\n  const grafanaPublicPath = typeof window !== 'undefined' && window.__grafana_public_path__;\n  const fontRoot = grafanaPublicPath ? `${grafanaPublicPath}fonts/` : 'public/fonts/';\n\n  return css([\n    {\n      /* latin */\n      '@font-face': {\n        fontFamily: 'Roboto Mono',\n        fontStyle: 'normal',\n        fontWeight: 400,\n        fontDisplay: 'swap',\n        src: `url('${fontRoot}roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2') format('woff2')`,\n        unicodeRange:\n          'U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD',\n      },\n    },\n    {\n      /* latin */\n      '@font-face': {\n        fontFamily: 'Roboto Mono',\n        fontStyle: 'normal',\n        fontWeight: 500,\n        fontDisplay: 'swap',\n        src: `url('${fontRoot}roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2') format('woff2')`,\n        unicodeRange:\n          'U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD',\n      },\n    },\n    {\n      /*\n    To add new variations/version of Inter, download from https://rsms.me/inter/ and add the\n    web font files to the public/fonts/inter folder. Do not download the fonts from Google Fonts\n    or somewhere else because they don't support the features we require (like tabular numerals).\n\n    If adding additional weights, consider switching to the InterVariable variable font as combined\n    it may take less space than multiple static weights.\n    */\n      '@font-face': {\n        fontFamily: 'Inter',\n        fontStyle: 'normal',\n        fontWeight: 400,\n        fontDisplay: 'swap',\n        src: `url('${fontRoot}inter/Inter-Regular.woff2') format('woff2')`,\n      },\n    },\n    {\n      '@font-face': {\n        fontFamily: 'Inter',\n        fontStyle: 'normal',\n        fontWeight: 500,\n        fontDisplay: 'swap',\n        src: `url('${fontRoot}inter/Inter-Medium.woff2') format('woff2')`,\n      },\n    },\n    {\n      '@font-face': {\n        fontFamily: 'Inter',\n        fontStyle: 'italic',\n        fontWeight: 400,\n        fontDisplay: 'swap',\n        src: `url('${fontRoot}inter/Inter-Italic.woff2') format('woff2')`,\n      },\n    },\n    {\n      '@font-face': {\n        fontFamily: 'Inter',\n        fontStyle: 'italic',\n        fontWeight: 500,\n        fontDisplay: 'swap',\n        src: `url('${fontRoot}inter/Inter-MediumItalic.woff2') format('woff2')`,\n      },\n    },\n  ]);\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getFormElementStyles(theme: GrafanaTheme2) {\n  return css({\n    'input, button, select, textarea': {\n      fontFamily: theme.typography.body.fontFamily,\n      fontSize: theme.typography.body.fontSize,\n      fontWeight: theme.typography.body.fontWeight,\n      lineHeight: theme.typography.body.lineHeight,\n    },\n\n    'input, select': {\n      backgroundColor: theme.components.input.background,\n      color: theme.components.input.text,\n      border: 'none',\n      boxShadow: 'none',\n    },\n\n    // Placeholder text gets special styles because when browsers invalidate entire lines if it doesn't understand a selector\n    'input, textarea': {\n      '&::placeholder': {\n        color: theme.colors.text.disabled,\n      },\n    },\n\n    // not a big fan of number fields\n    'input[type=\"number\"]::-webkit-outer-spin-button, input[type=\"number\"]::-webkit-inner-spin-button': {\n      WebkitAppearance: 'none',\n      margin: 0,\n    },\n    'input[type=\"number\"]': {\n      MozAppearance: 'textfield',\n    },\n\n    // Set the height of select and file controls to match text inputs\n    'select, input[type=\"file\"]': {\n      height:\n        theme.components.height\n          .md /* In IE7, the height of the select element cannot be changed by height, only font-size */,\n      lineHeight: theme.components.height.md,\n    },\n\n    // Make select elements obey height by applying a border\n    select: {\n      width: '220px', // default input width + 10px of padding that doesn't get applied\n      border: `1px solid ${theme.components.input.borderColor}`,\n      backgroundColor: theme.components.input.background, // Chrome on Linux and Mobile Safari need background-color\n    },\n\n    'select[multiple], select[size], textarea': {\n      height: 'auto',\n    },\n\n    // Focus for select, file, radio, and checkbox\n    'select:focus, input[type=\"file\"]:focus, input[type=\"radio\"]:focus, input[type=\"checkbox\"]:focus': {\n      // WebKit\n      outline: '5px auto -webkit-focus-ring-color',\n      outlineOffset: '-2px',\n    },\n\n    // Reset width of input images, buttons, radios, checkboxes\n    \"input[type='file'], input[type='image'], input[type='submit'], input[type='reset'], input[type='button'], input[type='radio'], input[type='checkbox']\":\n      {\n        width: 'auto', // Override of generic input selector\n      },\n\n    // Disabled and read-only inputs\n    'input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly]': {\n      cursor: 'not-allowed',\n      backgroundColor: theme.colors.action.disabledBackground,\n    },\n\n    // Explicitly reset the colors here\n    'input[type=\"radio\"][disabled], input[type=\"checkbox\"][disabled], input[type=\"radio\"][readonly], input[type=\"checkbox\"][readonly]':\n      {\n        cursor: 'not-allowed',\n        backgroundColor: 'transparent',\n      },\n\n    'input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:focus, input:-webkit-autofill, textarea:-webkit-autofill, textarea:-webkit-autofill:hover, textarea:-webkit-autofill:focus, select:-webkit-autofill, select:-webkit-autofill:hover, select:-webkit-autofill:focus':\n      {\n        WebkitBoxShadow: `0 0 0px 1000px ${theme.components.input.background} inset !important`,\n        WebkitTextFillColor: theme.components.input.text,\n        boxShadow: `0 0 0px 1000px ${theme.components.input.background} inset`,\n        border: `1px solid ${theme.components.input.background}`,\n      },\n\n    '.gf-form': {\n      display: 'flex',\n      flexDirection: 'row',\n      alignItems: 'flex-start',\n      textAlign: 'left',\n      position: 'relative',\n      marginBottom: theme.spacing(0.5),\n\n      '&--offset-1': {\n        marginLeft: theme.spacing(2),\n      },\n\n      '&--grow': {\n        flexGrow: 1,\n      },\n\n      '&--flex-end': {\n        justifyContent: 'flex-end',\n      },\n\n      '&--align-center': {\n        alignContent: 'center',\n      },\n\n      '&--alt': {\n        flexDirection: 'column',\n        alignItems: 'flex-start',\n\n        '.gf-form-label': {\n          padding: '4px 0',\n        },\n      },\n    },\n    '.gf-form--has-input-icon': {\n      position: 'relative',\n      marginRight: theme.spacing(0.5),\n\n      '.gf-form-input-icon': {\n        position: 'absolute',\n        top: '8px',\n        fontSize: theme.typography.size.lg,\n        left: '10px',\n        color: theme.colors.text.disabled,\n      },\n\n      '> input': {\n        paddingLeft: '35px',\n\n        '&:focus + .gf-form-input-icon': {\n          color: theme.colors.text.secondary,\n        },\n      },\n\n      '.Select--multi .Select-multi-value-wrapper, .Select-placeholder': {\n        paddingLeft: '30px',\n      },\n    },\n\n    '.gf-form-disabled': {\n      color: theme.colors.text.secondary,\n\n      '.gf-form-select-wrapper::after': {\n        color: theme.colors.text.secondary,\n      },\n\n      'a, .gf-form-input': {\n        color: theme.colors.text.secondary,\n      },\n    },\n\n    '.gf-form-group': {\n      marginBottom: theme.spacing(5),\n    },\n    '.gf-form-inline': {\n      display: 'flex',\n      flexDirection: 'row',\n      flexWrap: 'wrap',\n      alignContent: 'flex-start',\n\n      '&--nowrap': {\n        flexWrap: 'nowrap',\n      },\n\n      '&--xs-view-flex-column': {\n        flexDirection: 'row',\n        flexWrap: 'nowrap',\n        [theme.breakpoints.down('sm')]: {\n          flexDirection: 'column',\n        },\n      },\n\n      '.select-container': {\n        marginRight: theme.spacing(0.5),\n      },\n\n      '.gf-form-spacing': {\n        marginRight: theme.spacing(0.5),\n      },\n    },\n\n    '.gf-form-button-row': {\n      paddingTop: theme.spacing(3),\n      'a, button': {\n        marginRight: theme.spacing(2),\n      },\n    },\n    '.gf-form-label': {\n      display: 'flex',\n      alignItems: 'center',\n      padding: theme.spacing(0, 1),\n      flexShrink: 0,\n      fontWeight: theme.typography.fontWeightMedium,\n      fontSize: theme.typography.size.sm,\n      backgroundColor: theme.colors.background.secondary,\n      height: '32px',\n      lineHeight: '32px',\n      marginRight: theme.spacing(0.5),\n      borderRadius: theme.shape.radius.default,\n      justifyContent: 'space-between',\n      border: 'none',\n\n      '&--grow': {\n        flexGrow: 1,\n      },\n\n      '&--transparent': {\n        backgroundColor: 'transparent',\n        border: 0,\n        textAlign: 'right',\n        paddingLeft: 0,\n      },\n\n      '&--variable': {\n        color: theme.colors.primary.text,\n        background: theme.components.panel.background,\n        border: `1px solid ${theme.components.panel.borderColor}`,\n      },\n\n      '&--btn': {\n        border: 'none',\n        borderRadius: theme.shape.radius.default,\n        '&:hover': {\n          background: theme.colors.background.secondary,\n          color: theme.colors.text.primary,\n        },\n      },\n\n      '&:disabled': {\n        color: theme.colors.text.secondary,\n      },\n    },\n    '.gf-form-label + .gf-form-label': {\n      marginRight: theme.spacing(0.5),\n    },\n    '.gf-form-pre': {\n      display: 'block !important',\n      flexGrow: 1,\n      margin: 0,\n      marginRight: theme.spacing(0.5),\n      border: `1px solid transparent`,\n      borderLeft: 'none',\n      borderRadius: theme.shape.radius.default,\n    },\n    '.gf-form-textarea': {\n      maxWidth: '650px',\n    },\n    '.gf-form-input': {\n      display: 'block',\n      width: '100%',\n      height: '32px',\n      padding: theme.spacing(0, 1),\n      fontSize: theme.typography.size.md,\n      lineHeight: '18px',\n      color: theme.components.input.text,\n      backgroundColor: theme.components.input.background,\n      backgroundImage: 'none',\n      backgroundClip: 'padding-box',\n      border: `1px solid ${theme.components.input.borderColor}`,\n      borderRadius: theme.shape.radius.default,\n      marginRight: theme.spacing(0.5),\n      whiteSpace: 'nowrap',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n\n      // text areas should be scrollable\n      '&textarea': {\n        overflow: 'auto',\n        whiteSpace: 'pre-wrap',\n        padding: `6px ${theme.spacing(1)}`,\n        minHeight: '32px',\n        height: 'auto',\n      },\n\n      // Unstyle the caret on `<select>`s in IE10+.\n      '&::-ms-expand': {\n        backgroundColor: 'transparent',\n        border: 0,\n        display: 'none',\n      },\n\n      // Customize the `:focus` state to imitate native WebKit styles.\n      '&:focus': {\n        borderColor: theme.colors.primary.border,\n        outline: 'none',\n      },\n\n      // Placeholder\n      '&::placeholder': {\n        color: theme.colors.text.disabled,\n        opacity: 1,\n      },\n\n      '&:disabled, &[readonly]': {\n        backgroundColor: theme.colors.action.disabledBackground,\n        // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n        opacity: 1,\n      },\n\n      '&:disabled': {\n        cursor: 'not-allowed',\n      },\n\n      '&.gf-size-auto': {\n        width: 'auto',\n      },\n\n      '&--dropdown': {\n        paddingRight: theme.spacing(3),\n        position: 'relative',\n        display: 'flex',\n        alignItems: 'center',\n\n        '&::after': {\n          position: 'absolute',\n          top: '36%',\n          right: '11px',\n          fontSize: '11px',\n          backgroundColor: 'transparent',\n          color: theme.colors.text.primary,\n          font: `normal normal normal ${theme.typography.size.sm}/1 FontAwesome`,\n          content: '\"\\f0d7\"',\n          pointerEvents: 'none',\n        },\n      },\n\n      '&--has-help-icon': {\n        paddingRight: theme.spacing(4),\n      },\n    },\n    '.gf-form-select-wrapper': {\n      position: 'relative',\n      backgroundColor: theme.components.input.background,\n      marginRight: theme.spacing(0.5),\n\n      '.gf-form-select-icon': {\n        position: 'absolute',\n        zIndex: 1,\n        top: '50%',\n        marginTop: '-7px',\n\n        '+ .gf-form-input': {\n          position: 'relative',\n          zIndex: 2,\n          paddingLeft: theme.spacing(4),\n          backgroundColor: 'transparent',\n\n          option: {\n            // Firefox\n            color: theme.v1.palette.black,\n          },\n        },\n      },\n\n      '.gf-form-input': {\n        marginRight: 0,\n        lineHeight: '32px',\n      },\n\n      'select.gf-form-input': {\n        textIndent: '0.01px',\n        textOverflow: \"''\",\n        paddingRight: theme.spacing(4),\n        appearance: 'none',\n\n        '&:-moz-focusring': {\n          outline: 'none',\n          color: 'transparent',\n          textShadow: `0 0 0 ${theme.colors.text.primary}`,\n        },\n\n        '&.ng-empty': {\n          color: theme.colors.text.secondary,\n        },\n      },\n\n      '&::after': {\n        position: 'absolute',\n        top: '36%',\n        right: '11px',\n        backgroundColor: 'transparent',\n        color: theme.colors.text.primary,\n        font: `normal normal normal ${theme.typography.size.sm}/1 FontAwesome`,\n        content: '\"\\f0d7\"',\n        pointerEvents: 'none',\n        fontSize: '11px',\n      },\n\n      '&--has-help-icon': {\n        '&::after': {\n          right: theme.spacing(4),\n        },\n      },\n    },\n    '.gf-form--v-stretch': {\n      alignItems: 'stretch',\n    },\n\n    '.gf-form-btn': {\n      padding: theme.spacing(0, 1),\n      marginRight: theme.spacing(0.5),\n      lineHeight: '18px',\n      fontSize: theme.typography.size.sm,\n      flexShrink: 0,\n      flexGrow: 0,\n    },\n    '.gf-form-help-icon': {\n      flexGrow: 0,\n      color: theme.colors.text.secondary,\n\n      '&:hover': {\n        color: theme.colors.text.primary,\n      },\n    },\n    '.cta-form': {\n      position: 'relative',\n      padding: theme.spacing(3),\n      backgroundColor: theme.colors.background.secondary,\n      marginBottom: theme.spacing(3),\n      borderTop: `3px solid ${theme.colors.success.main}`,\n    },\n    '.input-small': {\n      width: '90px',\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nexport interface Hacks {}\n\nexport function getHacksStyles(hacks: Hacks) {\n  // No hacks for now! Look how good we are!\n  return css([]);\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getJsonFormatterStyles(theme: GrafanaTheme2) {\n  return css({\n    '.json-formatter-row': {\n      fontFamily: 'monospace',\n\n      '&, a, a:hover': {\n        color: theme.colors.text.primary,\n        textDecoration: 'none',\n      },\n\n      '.json-formatter-row': {\n        marginLeft: theme.spacing(2),\n      },\n\n      '.json-formatter-children': {\n        '&.json-formatter-empty': {\n          opacity: 0.5,\n          marginLeft: theme.spacing(2),\n\n          '&::after': {\n            display: 'none',\n          },\n          '&.json-formatter-object::after': {\n            content: \"'No properties'\",\n          },\n          '&.json-formatter-array::after': {\n            content: \"'[]'\",\n          },\n        },\n      },\n\n      '.json-formatter-string': {\n        color: theme.isDark ? '#23d662' : 'green',\n        whiteSpace: 'pre-wrap',\n        wordWrap: 'break-word',\n        wordBreak: 'break-all',\n      },\n\n      '.json-formatter-number': {\n        color: theme.isDark ? theme.colors.primary.text : theme.colors.primary.main,\n      },\n      '.json-formatter-boolean': {\n        color: theme.isDark ? theme.colors.primary.text : theme.colors.error.main,\n      },\n      '.json-formatter-null': {\n        color: theme.isDark ? '#eec97d' : '#855a00',\n      },\n      '.json-formatter-undefined': {\n        color: theme.isDark ? 'rgb(239, 143, 190)' : 'rgb(202, 11, 105)',\n      },\n      '.json-formatter-function': {\n        color: theme.isDark ? '#fd48cb' : '#ff20ed',\n      },\n      '.json-formatter-url': {\n        textDecoration: 'underline',\n        color: theme.isDark ? '#027bff' : theme.colors.primary.main,\n        cursor: 'pointer',\n      },\n\n      '.json-formatter-bracket': {\n        color: theme.isDark ? '#9494ff' : theme.colors.primary.main,\n      },\n      '.json-formatter-key': {\n        color: theme.isDark ? '#23a0db' : '#00008b',\n        cursor: 'pointer',\n        paddingRight: theme.spacing(0.25),\n        marginRight: theme.spacing(0.5),\n      },\n\n      '.json-formatter-constructor-name': {\n        cursor: 'pointer',\n      },\n\n      '.json-formatter-array-comma': {\n        marginRight: theme.spacing(0.5),\n      },\n\n      '.json-formatter-toggler': {\n        lineHeight: '16px',\n        fontSize: theme.typography.size.xs,\n        verticalAlign: 'middle',\n        opacity: 0.6,\n        cursor: 'pointer',\n        paddingRight: theme.spacing(0.25),\n\n        '&::after': {\n          display: 'inline-block',\n          transition: 'transform 100ms ease-in',\n          content: \"'►'\",\n        },\n      },\n\n      // Inline preview on hover (optional)\n      '> a > .json-formatter-preview-text': {\n        opacity: 0,\n        transition: 'opacity 0.15s ease-in',\n        fontStyle: 'italic',\n      },\n\n      '&:hover > a > .json-formatter-preview-text': {\n        opacity: 0.6,\n      },\n\n      // Open state\n      '&.json-formatter-open': {\n        '> .json-formatter-toggler-link .json-formatter-toggler::after': {\n          transform: 'rotate(90deg)',\n        },\n        '> .json-formatter-children::after': {\n          display: 'inline-block',\n        },\n        '> a > .json-formatter-preview-text': {\n          display: 'none',\n        },\n        '&.json-formatter-empty::after': {\n          display: 'block',\n        },\n      },\n    },\n  });\n}\n","// some plugins depend on these classes\n// TODO we should aim to remove this for Grafana 12\nimport { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getLegacySelectStyles(theme: GrafanaTheme2) {\n  return css({\n    '.gf-form-select-box__control': {\n      width: '100%',\n      marginRight: theme.spacing(0.5),\n      backgroundColor: theme.components.input.background,\n      border: `1px solid ${theme.components.input.borderColor}`,\n      borderRadius: theme.shape.radius.default,\n      color: theme.components.input.text,\n      cursor: 'default',\n      height: theme.spacing(4),\n      outline: 'none',\n      overflow: 'hidden',\n      position: 'relative',\n    },\n\n    '.gf-form-select-box__control--is-focused': {\n      backgroundColor: theme.components.input.background,\n      borderColor: theme.colors.primary.border,\n      outline: 'none',\n      boxShadow: `inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px ${theme.colors.primary.border}`,\n    },\n\n    '.gf-form-select-box__control--is-disabled': {\n      backgroundColor: theme.colors.action.disabledBackground,\n    },\n\n    '.gf-form-select-box__control--menu-right': {\n      '.gf-form-select-box__menu': {\n        right: 0,\n        left: 'unset',\n      },\n    },\n\n    '.gf-form-select-box__input': {\n      input: {\n        lineHeight: 'inherit',\n      },\n    },\n\n    '.gf-form-select-box__menu': {\n      background: theme.colors.background.primary,\n      boxShadow: theme.shadows.z3,\n      position: 'absolute',\n      zIndex: theme.zIndex.dropdown,\n      minWidth: '100%',\n\n      '&-notice--no-options': {\n        backgroundColor: theme.components.input.background,\n        padding: '10px',\n      },\n    },\n\n    '.gf-form-select-box__menu-list': {\n      overflowY: 'auto',\n      maxHeight: '300px',\n      maxWidth: '600px',\n    },\n\n    '.tag-filter .gf-form-select-box__menu': {\n      width: '100%',\n    },\n\n    '.gf-form-select-box__multi-value': {\n      display: 'inline',\n      margin: '0 6px 0 0',\n      cursor: 'pointer',\n    },\n\n    '.gf-form-select-box__multi-value__remove': {\n      textAlign: 'center',\n      display: 'inline-block',\n      marginLeft: '2px',\n      position: 'relative',\n    },\n\n    '.gf-form-select-box__multi-value__label': {\n      display: 'inline',\n      verticalAlign: 'middle',\n    },\n\n    '.gf-form-select-box__option': {\n      borderLeft: '2px solid transparent',\n      whiteSpace: 'nowrap',\n      backgroundColor: theme.components.input.background,\n\n      '&.gf-form-select-box__option--is-focused': {\n        color: theme.colors.text.primary,\n        background: theme.colors.action.hover,\n        borderImage: theme.colors.gradients.brandVertical,\n        borderImageSlice: 1,\n        borderStyle: 'solid',\n        borderTop: 0,\n        borderRight: 0,\n        borderBottom: 0,\n        borderLeftWidth: '2px',\n      },\n\n      '&.gf-form-select-box__option--is-selected': {\n        '.fa': {\n          color: theme.colors.text.primary,\n        },\n      },\n    },\n\n    '.gf-form-select-box__placeholder': {\n      color: theme.colors.text.disabled,\n    },\n\n    '.gf-form-select-box__control--is-focused .gf-form-select-box__placeholder': {\n      display: 'none',\n    },\n\n    '.gf-form-select-box__value-container': {\n      display: 'inline-block',\n      padding: '6px 20px 6px 10px',\n      verticalAlign: 'middle',\n\n      '> div': {\n        display: 'inline-block',\n        verticalAlign: 'middle',\n      },\n    },\n\n    '.gf-form-select-box__indicators': {\n      position: 'absolute',\n      height: '100%',\n      right: '8px',\n      top: '1px',\n      display: 'inline-block',\n      textAlign: 'right',\n    },\n\n    '.gf-form-input--form-dropdown': {\n      padding: 0,\n      border: 0,\n      overflow: 'visible',\n      position: 'relative',\n    },\n\n    '.gf-form--has-input-icon': {\n      '.gf-form-select-box__value-container': {\n        paddingLeft: '30px',\n      },\n    },\n\n    '.gf-form-select-box__desc-option': {\n      display: 'flex',\n      alignItems: 'center',\n      justifyContent: 'flex-start',\n      justifyItems: 'center',\n      cursor: 'pointer',\n      padding: '7px 10px',\n      width: '100%',\n    },\n\n    '.gf-form-select-box__desc-option__body': {\n      display: 'flex',\n      flexDirection: 'column',\n      flexGrow: 1,\n      paddingRight: '10px',\n      fontWeight: theme.typography.fontWeightMedium,\n    },\n\n    '.gf-form-select-box__desc-option__desc': {\n      fontWeight: 'normal',\n      fontSize: theme.typography.bodySmall.fontSize,\n      color: theme.colors.text.secondary,\n    },\n\n    '.gf-form-select-box__desc-option__img': {\n      width: '16px',\n      marginRight: '10px',\n    },\n\n    '.gf-form-select-box__option-group__header': {\n      display: 'flex',\n      alignItems: 'center',\n      justifyContent: 'flex-start',\n      justifyItems: 'center',\n      cursor: 'pointer',\n      padding: '7px 10px',\n      width: '100%',\n      borderBottom: `1px solid ${theme.v1.palette.dark9}`,\n      textTransform: 'capitalize',\n\n      '.fa': {\n        paddingRight: '2px',\n      },\n    },\n\n    '.gf-form-select-box-button-select': {\n      height: 'auto',\n    },\n\n    '.select-button': {\n      display: 'flex',\n      alignItems: 'center',\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getMarkdownStyles(theme: GrafanaTheme2) {\n  return css({\n    '.markdown-html': {\n      img: {\n        maxWidth: '100%',\n      },\n\n      'ul, ol': {\n        paddingLeft: theme.spacing(3),\n        marginBottom: theme.spacing(2),\n      },\n\n      table: {\n        marginBottom: theme.spacing(2),\n        'td, th': {\n          padding: theme.spacing(0.5, 1),\n        },\n        th: {\n          fontWeight: theme.typography.fontWeightMedium,\n          background: theme.colors.background.secondary,\n        },\n      },\n\n      'table, th, td': {\n        border: `1px solid ${theme.colors.border.medium}`,\n        borderCollapse: 'collapse',\n      },\n\n      a: {\n        color: theme.colors.text.link,\n        textDecoration: 'none',\n\n        '&:hover': {\n          color: theme.colors.text.link,\n          textDecoration: 'underline',\n        },\n      },\n\n      'p:last-child': {\n        marginBottom: 0,\n      },\n\n      'table:last-child, ul:last-child, ol:last-child': {\n        marginBottom: 0,\n      },\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getPageStyles(theme: GrafanaTheme2) {\n  const maxWidthBreakpoint =\n    theme.breakpoints.values.xxl + theme.spacing.gridSize * 2 + theme.components.sidemenu.width;\n\n  return css({\n    '.grafana-app': {\n      display: 'flex',\n      flexDirection: 'column',\n      height: '100vh',\n    },\n\n    '.main-view': {\n      display: 'flex',\n      flexDirection: 'column',\n      flexGrow: 1,\n      position: 'relative',\n      minWidth: 0,\n    },\n\n    '.page-scrollbar-content': {\n      display: 'flex',\n      minHeight: '100%',\n      flexDirection: 'column',\n      width: '100%',\n      height: '100%',\n    },\n\n    '.page-container': {\n      flexGrow: 1,\n      flexBasis: '100%',\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n\n      [theme.breakpoints.up('sm')]: {\n        margin: theme.spacing(0, 1),\n      },\n\n      [theme.breakpoints.up('md')]: {\n        margin: theme.spacing(0, 2),\n      },\n\n      [`@media (min-width: ${maxWidthBreakpoint}px)`]: {\n        maxWidth: `${theme.breakpoints.values.xxl}px`,\n        marginLeft: 'auto',\n        marginRight: 'auto',\n        width: '100%',\n      },\n    },\n\n    '.page-full': {\n      marginLeft: theme.spacing(2),\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n    },\n\n    '.page-body': {\n      padding: theme.spacing(1),\n      background: theme.components.panel.background,\n      border: `1px solid ${theme.components.panel.borderColor}`,\n      marginBottom: '32px',\n\n      [theme.breakpoints.up('md')]: {\n        padding: theme.spacing(2),\n      },\n\n      [theme.breakpoints.up('lg')]: {\n        padding: theme.spacing(3),\n      },\n    },\n\n    '.page-heading': {\n      fontSize: theme.typography.h4.fontSize,\n      marginTop: 0,\n      marginBottom: theme.spacing(2),\n    },\n\n    '.page-action-bar': {\n      marginBottom: theme.spacing(2),\n      display: 'flex',\n      alignItems: 'flex-start',\n      gap: theme.spacing(2),\n    },\n\n    '.page-action-bar--narrow': {\n      marginBottom: 0,\n    },\n\n    '.page-action-bar__spacer': {\n      width: theme.spacing(2),\n      flexGrow: 1,\n    },\n\n    '.page-sub-heading': {\n      marginBottom: theme.spacing(2),\n    },\n\n    '.page-sub-heading-icon': {\n      marginLeft: theme.spacing(1),\n      marginTop: theme.spacing(0.5),\n    },\n\n    '.page-hidden': {\n      display: 'none',\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getQueryEditorStyles(theme: GrafanaTheme2) {\n  return css({\n    '.query-editor-row': {\n      marginBottom: '2px',\n\n      '&--disabled': {\n        '.query-keyword': {\n          color: theme.colors.text.secondary,\n        },\n      },\n    },\n    '.query-keyword': {\n      fontWeight: theme.typography.fontWeightMedium,\n      color: `${theme.colors.primary.text} !important`,\n    },\n    '.query-part': {\n      backgroundColor: theme.colors.background.secondary,\n\n      '&:hover': {\n        background: theme.colors.emphasize(theme.colors.background.secondary, 0.03),\n      },\n    },\n    '.query-segment-operator': {\n      color: `${theme.v1.palette.orange} !important`,\n    },\n    '.tight-form-func': {\n      background: theme.colors.background.secondary,\n    },\n\n    'input[type=\"text\"].tight-form-func-param': {\n      fontSize: theme.typography.bodySmall.fontSize,\n      background: 'transparent',\n      border: 'none',\n      margin: 0,\n      padding: 0,\n    },\n\n    '.tight-form-func-controls': {\n      textAlign: 'center',\n\n      '.fa-arrow-left': {\n        float: 'left',\n        position: 'relative',\n        top: 2,\n      },\n      '.fa-arrow-right': {\n        float: 'right',\n        position: 'relative',\n        top: 2,\n      },\n      '.fa-remove': {\n        marginLeft: '10px',\n      },\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { skeletonAnimation } from '../../utils/skeleton';\n\nexport const getSkeletonStyles = (theme: GrafanaTheme2) => {\n  return css({\n    '.react-loading-skeleton': skeletonAnimation,\n  });\n};\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getSlateStyles(theme: GrafanaTheme2) {\n  return css({\n    '.slate-query-field': {\n      fontSize: theme.typography.fontSize,\n      fontFamily: theme.typography.fontFamilyMonospace,\n      height: 'auto',\n      wordBreak: 'break-word',\n      // Affects only placeholder in query field. Adds scrollbar only if content is cropped.\n      overflow: 'auto',\n    },\n\n    '.slate-query-field__wrapper': {\n      position: 'relative',\n      display: 'inline-block',\n      padding: '6px 8px',\n      minHeight: '32px',\n      width: '100%',\n      color: theme.colors.text.primary,\n      backgroundColor: theme.components.input.background,\n      backgroundImage: 'none',\n      border: `1px solid ${theme.components.input.borderColor}`,\n      borderRadius: theme.shape.radius.default,\n      transition: 'all 0.3s',\n      lineHeight: '18px',\n    },\n\n    '.slate-query-field__wrapper--disabled': {\n      backgroundColor: 'inherit',\n      cursor: 'not-allowed',\n    },\n\n    '.slate-typeahead': {\n      '.typeahead': {\n        position: 'relative',\n        zIndex: theme.zIndex.typeahead,\n        borderRadius: theme.shape.radius.default,\n        border: `1px solid ${theme.components.panel.borderColor}`,\n        maxHeight: '66vh',\n        overflowY: 'scroll',\n        overflowX: 'hidden',\n        outline: 'none',\n        listStyle: 'none',\n        background: theme.components.panel.background,\n        color: theme.colors.text.primary,\n        boxShadow: theme.shadows.z2,\n      },\n\n      '.typeahead-group__title': {\n        color: theme.colors.text.secondary,\n        fontSize: theme.typography.size.sm,\n        lineHeight: theme.typography.body.lineHeight,\n        padding: theme.spacing(1),\n      },\n\n      '.typeahead-item': {\n        height: 'auto',\n        fontFamily: theme.typography.fontFamilyMonospace,\n        padding: theme.spacing(1, 1, 1, 2),\n        fontSize: theme.typography.size.sm,\n        textOverflow: 'ellipsis',\n        overflow: 'hidden',\n        zIndex: 1,\n        display: 'block',\n        whiteSpace: 'nowrap',\n        cursor: 'pointer',\n        transition:\n          'color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1)',\n      },\n\n      '.typeahead-item__selected': {\n        backgroundColor: theme.isDark ? theme.v1.palette.dark9 : theme.v1.palette.gray6,\n\n        '.typeahead-item-hint': {\n          fontSize: theme.typography.size.xs,\n          color: theme.colors.text.primary,\n          whiteSpace: 'normal',\n        },\n      },\n\n      '.typeahead-match': {\n        color: theme.v1.palette.yellow,\n        borderBottom: `1px solid ${theme.v1.palette.yellow}`,\n        // Undoing mark styling\n        padding: 'inherit',\n        background: 'inherit',\n      },\n    },\n\n    /* SYNTAX */\n\n    '.slate-query-field, .prism-syntax-highlight': {\n      '.token.comment, .token.block-comment, .token.prolog, .token.doctype, .token.cdata': {\n        color: theme.colors.text.secondary,\n      },\n\n      '.token.variable, .token.entity': {\n        color: theme.colors.text.primary,\n      },\n\n      '.token.property, .token.tag, .token.constant, .token.symbol, .token.deleted': {\n        color: theme.colors.error.text,\n      },\n\n      '.token.attr-value, .token.selector, .token.string, .token.char, .token.builtin, .token.inserted': {\n        color: theme.colors.success.text,\n      },\n\n      '.token.boolean, .token.number, .token.operator, .token.url': {\n        color: '#fe85fc',\n      },\n\n      '.token.function, .token.attr-name, .token.function-name, .token.atrule, .token.keyword, .token.class-name': {\n        color: theme.colors.primary.text,\n      },\n\n      '.token.punctuation, .token.regex, .token.important': {\n        color: theme.v1.palette.orange,\n      },\n\n      '.token.important': {\n        fontWeight: 'normal',\n      },\n\n      '.token.bold': {\n        fontWeight: 'bold',\n      },\n\n      '.token.italic': {\n        fontStyle: 'italic',\n      },\n\n      '.token.entity': {\n        cursor: 'help',\n      },\n\n      '.namespace': {\n        opacity: 0.7,\n      },\n    },\n  });\n}\n","import { css } from '@emotion/react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nexport function getUplotStyles(theme: GrafanaTheme2) {\n  return css({\n    '.uplot': {\n      fontFamily: 'inherit',\n    },\n\n    '.u-select': {\n      background: 'rgba(120, 120, 130, 0.2)',\n    },\n\n    '.u-hz .u-cursor-x, .u-vt .u-cursor-y': {\n      borderRight: '1px dashed rgba(120, 120, 130, 0.5)',\n    },\n\n    '.u-hz .u-cursor-y, .u-vt .u-cursor-x': {\n      borderBottom: '1px dashed rgba(120, 120, 130, 0.5)',\n    },\n\n    '.shared-crosshair:not(.plot-active) .u-cursor-pt': {\n      display: 'none !important',\n    },\n  });\n}\n","import { css } from '@emotion/react';\nimport { CSSInterpolation } from '@emotion/serialize';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nfunction buttonBackgroundMixin(\n  startColor: string,\n  endColor: string,\n  textColor = '#fff',\n  textShadow = '0px 1px 0 rgba(0, 0, 0, 0.1)'\n) {\n  return {\n    backgroundColor: startColor,\n    backgroundImage: `linear-gradient(to bottom, ${startColor}, ${endColor})`,\n    backgroundRepeat: 'repeat-x',\n    color: textColor,\n    textShadow: textShadow,\n    borderColor: startColor,\n\n    // in these cases the gradient won't cover the background, so we override\n    '&:hover, &:focus, &:active, &.active, &.disabled, &[disabled]': {\n      color: textColor,\n      backgroundImage: 'none',\n      backgroundColor: startColor,\n    },\n  };\n}\n\nfunction buttonSizeMixin(paddingY: string, paddingX: string, fontSize: string, borderRadius: string) {\n  return {\n    padding: `${paddingY} ${paddingX}`,\n    fontSize: fontSize,\n    borderRadius: borderRadius,\n  };\n}\n\nfunction widthMixin(theme: GrafanaTheme2, max: number) {\n  let result: CSSInterpolation = {};\n  for (let i = 1; i <= max; i++) {\n    const width = `${theme.spacing(2 * i)} !important`;\n    result[`.width-${i}`] = {\n      width,\n    };\n    result[`.max-width-${i}`] = {\n      maxWidth: width,\n      flexGrow: 1,\n    };\n    result[`.min-width-${i}`] = {\n      minWidth: width,\n    };\n    result[`.offset-width-${i}`] = {\n      marginLeft: width,\n    };\n  }\n  return result;\n}\n\nexport function getUtilityClassStyles(theme: GrafanaTheme2) {\n  return css({\n    '.highlight-word': {\n      color: theme.v1.palette.orange,\n    },\n    '.hide': {\n      display: 'none',\n    },\n    '.show': {\n      display: 'block',\n    },\n    '.invisible': {\n      // can't avoid type assertion here due to !important\n      // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n      visibility: 'hidden !important' as 'hidden',\n    },\n    '.absolute': {\n      position: 'absolute',\n    },\n    '.flex-grow-1': {\n      flexGrow: 1,\n    },\n    '.flex-shrink-1': {\n      flexShrink: 1,\n    },\n    '.flex-shrink-0': {\n      flexShrink: 0,\n    },\n    '.center-vh': {\n      height: '100%',\n      display: 'flex',\n      flexDirection: 'column',\n      alignItems: 'center',\n      justifyContent: 'center',\n      justifyItems: 'center',\n    },\n    '.btn': {\n      display: 'inline-flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n      fontWeight: theme.typography.fontWeightMedium,\n      lineHeight: theme.typography.body.lineHeight,\n      textAlign: 'center',\n      verticalAlign: 'middle',\n      cursor: 'pointer',\n      border: 'none',\n      height: `${theme.spacing.gridSize * theme.components.height.md}px`,\n      ...buttonSizeMixin(\n        theme.spacing(0),\n        theme.spacing(2),\n        `${theme.typography.fontSize}px`,\n        theme.shape.radius.default\n      ),\n\n      '&, &:active, &.active': {\n        '&:focus, &.focus': {\n          outline: 'none',\n        },\n      },\n      '&:focus, &:hover': {\n        textDecoration: 'none',\n      },\n      '&.focus': {\n        textDecoration: 'none',\n      },\n      '&:active, &.active': {\n        backgroundImage: 'none',\n        outline: 0,\n      },\n      '&.disabled, &[disabled], &:disabled': {\n        cursor: 'not-allowed',\n        opacity: 0.65,\n        boxShadow: 'none',\n        pointerEvents: 'none',\n      },\n    },\n    '.btn-small': {\n      ...buttonSizeMixin(theme.spacing(0.5), theme.spacing(1), theme.typography.size.sm, theme.shape.radius.default),\n      height: `${theme.spacing.gridSize * theme.components.height.sm}px`,\n    },\n    // Deprecated, only used by old plugins\n    '.btn-mini': {\n      ...buttonSizeMixin(theme.spacing(0.5), theme.spacing(1), theme.typography.size.sm, theme.shape.radius.default),\n      height: `${theme.spacing.gridSize * theme.components.height.sm}px`,\n    },\n    '.btn-success, .btn-primary': {\n      ...buttonBackgroundMixin(theme.colors.primary.main, theme.colors.primary.shade),\n    },\n    '.btn-danger': {\n      ...buttonBackgroundMixin(theme.colors.error.main, theme.colors.error.shade),\n    },\n    '.btn-secondary': {\n      ...buttonBackgroundMixin(theme.colors.secondary.main, theme.colors.secondary.shade, theme.colors.text.primary),\n    },\n    '.btn-inverse': {\n      ...buttonBackgroundMixin(\n        theme.isDark ? theme.v1.palette.dark6 : theme.v1.palette.gray5,\n        theme.isDark ? theme.v1.palette.dark5 : theme.v1.palette.gray4,\n        theme.colors.text.primary\n      ),\n      '&': {\n        boxShadow: 'none',\n      },\n    },\n    '.typeahead': {\n      zIndex: theme.zIndex.typeahead,\n    },\n    ...widthMixin(theme, 30),\n    '.row': {\n      display: 'flex',\n      flexWrap: 'wrap',\n      marginLeft: `calc(${theme.spacing(4)} / -2)`,\n      marginRight: `calc(${theme.spacing(4)} / -2)`,\n    },\n    '.container': {\n      marginLeft: 'auto',\n      marginRight: 'auto',\n      paddingLeft: `calc(${theme.spacing(4)} / 2)`,\n      paddingRight: `calc(${theme.spacing(4)} / 2)`,\n      [theme.breakpoints.up('sm')]: {\n        maxWidth: theme.breakpoints.values.sm,\n      },\n      [theme.breakpoints.up('md')]: {\n        maxWidth: theme.breakpoints.values.md,\n      },\n      [theme.breakpoints.up('lg')]: {\n        maxWidth: theme.breakpoints.values.lg,\n      },\n      [theme.breakpoints.up('xl')]: {\n        maxWidth: theme.breakpoints.values.xl,\n      },\n    },\n  });\n}\n","import { Global } from '@emotion/react';\n\nimport { useTheme2 } from '../ThemeContext';\n\nimport { getAccessibilityStyles } from './accessibility';\nimport { getAlertingStyles } from './alerting';\nimport { getCardStyles } from './card';\nimport { getCodeStyles } from './code';\nimport { getDashboardGridStyles } from './dashboardGrid';\nimport { getDashDiffStyles } from './dashdiff';\nimport { getElementStyles } from './elements';\nimport { getExtraStyles } from './extra';\nimport { getFilterTableStyles } from './filterTable';\nimport { getFontStyles } from './fonts';\nimport { getFormElementStyles } from './forms';\nimport { getHacksStyles } from './hacks';\nimport { getJsonFormatterStyles } from './jsonFormatter';\nimport { getLegacySelectStyles } from './legacySelect';\nimport { getMarkdownStyles } from './markdownStyles';\nimport { getPageStyles } from './page';\nimport { getQueryEditorStyles } from './queryEditor';\nimport { getSkeletonStyles } from './skeletonStyles';\nimport { getSlateStyles } from './slate';\nimport { getUplotStyles } from './uPlot';\nimport { getUtilityClassStyles } from './utilityClasses';\n\ninterface GlobalStylesProps {\n  isExtensionSidebarOpen?: boolean;\n}\n\n/** @internal */\nexport function GlobalStyles(props: GlobalStylesProps) {\n  const theme = useTheme2();\n  const { isExtensionSidebarOpen } = props;\n\n  return (\n    <Global\n      styles={[\n        getAccessibilityStyles(theme),\n        getAlertingStyles(theme),\n        getCodeStyles(theme),\n        getDashDiffStyles(theme),\n        getDashboardGridStyles(theme),\n        getElementStyles(theme, isExtensionSidebarOpen),\n        getExtraStyles(theme),\n        getFilterTableStyles(theme),\n        getFontStyles(theme),\n        getFormElementStyles(theme),\n        getJsonFormatterStyles(theme),\n        getCardStyles(theme),\n        getMarkdownStyles(theme),\n        getPageStyles(theme),\n        getQueryEditorStyles(theme),\n        getSkeletonStyles(theme),\n        getSlateStyles(theme),\n        getUplotStyles(theme),\n        getUtilityClassStyles(theme),\n        getLegacySelectStyles(theme),\n        getHacksStyles({}),\n      ]}\n    />\n  );\n}\n","import { Annotation } from 'slate';\nimport { Plugin } from 'slate-react';\nimport { v4 as uuidv4 } from 'uuid';\n\nconst BRACES: Record<string, string> = {\n  '[': ']',\n  '{': '}',\n  '(': ')',\n};\n\nconst MATCH_MARK = 'brace_match';\n\nexport function BracesPlugin(): Plugin {\n  return {\n    onKeyDown(event, editor, next) {\n      const { value } = editor;\n\n      switch (event.key) {\n        case '(':\n        case '{':\n        case '[': {\n          const {\n            start: { offset: startOffset, key: startKey },\n            end: { offset: endOffset, key: endKey },\n            focus: { offset: focusOffset },\n          } = value.selection;\n          const text = value.focusText.text;\n\n          // If text is selected, wrap selected text in parens\n          if (value.selection.isExpanded) {\n            event.preventDefault();\n            editor\n              .insertTextByKey(startKey, startOffset, event.key)\n              .insertTextByKey(endKey, endOffset + 1, BRACES[event.key])\n              .moveEndBackward(1);\n            return true;\n          } else if (\n            // Insert matching brace when there is no input after caret\n            focusOffset === text.length ||\n            text[focusOffset] === ' ' ||\n            Object.values(BRACES).includes(text[focusOffset])\n          ) {\n            event.preventDefault();\n            const complement = BRACES[event.key];\n            const matchAnnotation = {\n              key: `${MATCH_MARK}-${uuidv4()}`,\n              type: `${MATCH_MARK}-${complement}`,\n              anchor: {\n                key: startKey,\n                offset: startOffset,\n                object: 'point',\n              },\n              focus: {\n                key: endKey,\n                offset: endOffset + 1,\n                object: 'point',\n              },\n              object: 'annotation',\n            } as Annotation;\n            editor.insertText(event.key).insertText(complement).addAnnotation(matchAnnotation).moveBackward(1);\n\n            return true;\n          }\n          break;\n        }\n\n        case ')':\n        case '}':\n        case ']': {\n          const text = value.anchorText.text;\n          const offset = value.selection.anchor.offset;\n          const nextChar = text[offset];\n          // Handle closing brace when it's already the next character\n          const complement = event.key;\n          const annotationType = `${MATCH_MARK}-${complement}`;\n          const annotation = value.annotations.find(\n            (a) => a?.type === annotationType && a.anchor.key === value.anchorText.key\n          );\n          if (annotation && nextChar === complement && !value.selection.isExpanded) {\n            event.preventDefault();\n            editor.moveFocusForward(1).removeAnnotation(annotation).moveAnchorForward(1);\n            return true;\n          }\n          break;\n        }\n\n        case 'Backspace': {\n          const text = value.anchorText.text;\n          const offset = value.selection.anchor.offset;\n          const previousChar = text[offset - 1];\n          const nextChar = text[offset];\n          if (BRACES[previousChar] && BRACES[previousChar] === nextChar) {\n            event.preventDefault();\n            // Remove closing brace if directly following\n            editor.deleteBackward(1).deleteForward(1).focus();\n            return true;\n          }\n        }\n\n        default: {\n          break;\n        }\n      }\n\n      return next();\n    },\n  };\n}\n","/**\n * A library containing the different design components of the Grafana ecosystem.\n *\n * @packageDocumentation\n */\n\nimport { FormField } from './components/FormField/FormField';\nimport { Input, LegacyInputStatus } from './components/Forms/Legacy/Input/Input';\nimport { IndicatorsContainer } from './components/Forms/Legacy/Select/IndicatorsContainer';\nimport { NoOptionsMessage } from './components/Forms/Legacy/Select/NoOptionsMessage';\nimport { AsyncSelect, Select } from './components/Forms/Legacy/Select/Select';\nimport { Switch } from './components/Forms/Legacy/Switch/Switch';\nimport { SecretFormField } from './components/SecretFormField/SecretFormField';\nimport * as commonOptionsBuilder from './options/builder';\nimport * as styleMixins from './themes/mixins';\nimport * as DOMUtil from './utils/dom';\nimport * as ReactUtils from './utils/reactUtils';\n\nexport { Icon } from './components/Icon/Icon';\nexport { IconButton, type IconButtonVariant } from './components/IconButton/IconButton';\nexport { ConfirmButton } from './components/ConfirmButton/ConfirmButton';\nexport { DeleteButton } from './components/ConfirmButton/DeleteButton';\nexport { Tooltip } from './components/Tooltip/Tooltip';\nexport type { PopoverContent } from './components/Tooltip/types';\nexport { PopoverController } from './components/Tooltip/PopoverController';\nexport { Popover } from './components/Tooltip/Popover';\nexport { Toggletip } from './components/Toggletip/Toggletip';\nexport { Portal, getPortalContainer, PortalContainer } from './components/Portal/Portal';\nexport { CustomScrollbar, type ScrollbarPosition } from './components/CustomScrollbar/CustomScrollbar';\nexport { TabbedContainer, type TabConfig } from './components/TabbedContainer/TabbedContainer';\nexport { ClipboardButton } from './components/ClipboardButton/ClipboardButton';\nexport { Cascader, type CascaderOption } from './components/Cascader/Cascader';\nexport { Carousel } from './components/Carousel/Carousel';\nexport { ButtonCascader } from './components/ButtonCascader/ButtonCascader';\nexport { InlineToast } from './components/InlineToast/InlineToast';\nexport { LoadingPlaceholder, type LoadingPlaceholderProps } from './components/LoadingPlaceholder/LoadingPlaceholder';\nexport { LoadingBar, type LoadingBarProps } from './components/LoadingBar/LoadingBar';\nexport { ColorPicker, SeriesColorPicker } from './components/ColorPicker/ColorPicker';\nexport { ColorPickerInput } from './components/ColorPicker/ColorPickerInput';\nexport {\n  SeriesColorPickerPopover,\n  SeriesColorPickerPopoverWithTheme,\n} from './components/ColorPicker/SeriesColorPickerPopover';\nexport { EmptySearchResult } from './components/EmptySearchResult/EmptySearchResult';\nexport { EmptyState } from './components/EmptyState/EmptyState';\nexport { UnitPicker } from './components/UnitPicker/UnitPicker';\nexport { StatsPicker } from './components/StatsPicker/StatsPicker';\nexport { RefreshPicker, defaultIntervals } from './components/RefreshPicker/RefreshPicker';\nexport { TimeRangePicker, type TimeRangePickerProps } from './components/DateTimePickers/TimeRangePicker';\nexport { TimeRangeProvider } from './components/DateTimePickers/TimeRangeContext';\nexport { TimePickerTooltip } from './components/DateTimePickers/TimeRangePicker';\nexport { TimeRangeLabel } from './components/DateTimePickers/TimeRangePicker/TimeRangeLabel';\nexport { TimeOfDayPicker } from './components/DateTimePickers/TimeOfDayPicker';\nexport { TimeZonePicker } from './components/DateTimePickers/TimeZonePicker';\nexport {\n  WeekStartPicker,\n  getWeekStart,\n  type WeekStart,\n  isWeekStart,\n} from './components/DateTimePickers/WeekStartPicker';\nexport { DatePicker, type DatePickerProps } from './components/DateTimePickers/DatePicker/DatePicker';\nexport {\n  DatePickerWithInput,\n  type DatePickerWithInputProps,\n} from './components/DateTimePickers/DatePickerWithInput/DatePickerWithInput';\nexport { DateTimePicker } from './components/DateTimePickers/DateTimePicker/DateTimePicker';\nexport { List } from './components/List/List';\nexport {\n  InteractiveTable,\n  type FetchDataArgs,\n  type FetchDataFunc,\n} from './components/InteractiveTable/InteractiveTable';\nexport { TagsInput } from './components/TagsInput/TagsInput';\nexport { AutoSaveField } from './components/AutoSaveField/AutoSaveField';\nexport { Pagination } from './components/Pagination/Pagination';\nexport { Tag, type OnTagClick } from './components/Tags/Tag';\nexport { TagList } from './components/Tags/TagList';\nexport { FilterPill } from './components/FilterPill/FilterPill';\n\nexport { ConfirmModal, type ConfirmModalProps } from './components/ConfirmModal/ConfirmModal';\nexport { QueryField, type QueryFieldProps } from './components/QueryField/QueryField';\nexport { CodeEditor } from './components/Monaco/CodeEditor';\nexport { ReactMonacoEditorLazy as ReactMonacoEditor } from './components/Monaco/ReactMonacoEditorLazy';\nexport {\n  type Monaco,\n  type monacoTypes,\n  type MonacoEditor,\n  type MonacoOptions as CodeEditorMonacoOptions,\n  type CodeEditorSuggestionItem,\n  CodeEditorSuggestionItemKind,\n} from './components/Monaco/types';\nexport { variableSuggestionToCodeEditorSuggestion } from './components/Monaco/utils';\n\n// TODO: namespace\nexport { Modal, type Props as ModalProps } from './components/Modal/Modal';\nexport { ModalHeader } from './components/Modal/ModalHeader';\nexport { ModalTabsHeader } from './components/Modal/ModalTabsHeader';\nexport { ModalTabContent } from './components/Modal/ModalTabContent';\nexport { ModalsProvider, ModalRoot, ModalsController, ModalsContext } from './components/Modal/ModalsContext';\nexport { PageToolbar } from './components/PageLayout/PageToolbar';\n\n// Renderless\nexport { SetInterval } from './components/SetInterval/SetInterval';\nexport { Table } from './components/Table/Table';\nexport { TableCellInspector, TableCellInspectorMode } from './components/Table/TableCellInspector';\nexport {\n  type TableCustomCellOptions,\n  type CustomCellRendererProps,\n  type TableFieldOptions,\n  type TableSortByFieldState,\n  type TableFooterCalc,\n  type AdHocFilterItem,\n  type TableAutoCellOptions,\n  type TableSparklineCellOptions,\n  type TableBarGaugeCellOptions,\n  type TableColoredBackgroundCellOptions,\n  type TableColorTextCellOptions,\n  type TableImageCellOptions,\n  type TableJsonViewCellOptions,\n} from './components/Table/types';\n\nexport { TableInputCSV } from './components/TableInputCSV/TableInputCSV';\nexport { TabsBar } from './components/Tabs/TabsBar';\nexport { Tab, type TabProps } from './components/Tabs/Tab';\nexport { VerticalTab } from './components/Tabs/VerticalTab';\nexport { TabContent } from './components/Tabs/TabContent';\nexport { Counter } from './components/Tabs/Counter';\nexport { RenderUserContentAsHTML } from './components/RenderUserContentAsHTML/RenderUserContentAsHTML';\n\n// Visualizations\nexport {\n  BigValue,\n  BigValueColorMode,\n  BigValueGraphMode,\n  BigValueJustifyMode,\n  BigValueTextMode,\n} from './components/BigValue/BigValue';\nexport { Sparkline } from './components/Sparkline/Sparkline';\n\nexport { Gauge } from './components/Gauge/Gauge';\nexport { BarGauge } from './components/BarGauge/BarGauge';\nexport {\n  VizTooltip,\n  VizTooltipContainer,\n  SeriesTable,\n  type SeriesTableProps,\n  SeriesTableRow,\n  type SeriesTableRowProps,\n} from './components/VizTooltip';\nexport { VizRepeater, type VizRepeaterRenderValueProps } from './components/VizRepeater/VizRepeater';\nexport {\n  PanelChrome,\n  type PanelChromeProps,\n  type PanelPadding,\n  type PanelChromeType,\n  PanelChromeLoadingIndicator,\n  type PanelChromeLoadingIndicatorProps,\n  PanelContextProvider,\n  type PanelContext,\n  PanelContextRoot,\n  usePanelContext,\n} from './components/PanelChrome';\nexport {\n  VizLayout,\n  type VizLayoutComponentType,\n  type VizLayoutLegendProps,\n  type VizLayoutProps,\n} from './components/VizLayout/VizLayout';\nexport { type VizLegendItem, SeriesVisibilityChangeBehavior } from './components/VizLegend/types';\nexport { VizLegend } from './components/VizLegend/VizLegend';\nexport { VizLegendListItem } from './components/VizLegend/VizLegendListItem';\n\nexport { Alert, type AlertVariant } from './components/Alert/Alert';\nexport { Collapse, ControlledCollapse } from './components/Collapse/Collapse';\nexport { CollapsableSection } from './components/Collapse/CollapsableSection';\nexport { DataLinkButton } from './components/DataLinks/DataLinkButton';\nexport { FieldLinkList } from './components/DataLinks/FieldLinkList';\n// Panel editors\nexport { FullWidthButtonContainer } from './components/Button/FullWidthButtonContainer';\nexport { ClickOutsideWrapper } from './components/ClickOutsideWrapper/ClickOutsideWrapper';\nexport {\n  type SingleStatBaseOptions,\n  sharedSingleStatMigrationHandler,\n  convertOldAngularValueMapping,\n  sharedSingleStatPanelChangedHandler,\n} from './components/SingleStatShared/SingleStatBaseOptions';\nexport { CallToActionCard } from './components/CallToActionCard/CallToActionCard';\nexport { ContextMenu, type ContextMenuProps } from './components/ContextMenu/ContextMenu';\nexport { Menu, type MenuProps } from './components/Menu/Menu';\nexport { MenuGroup, type MenuItemsGroup, type MenuGroupProps } from './components/Menu/MenuGroup';\nexport { MenuItem, type MenuItemProps } from './components/Menu/MenuItem';\nexport { WithContextMenu } from './components/ContextMenu/WithContextMenu';\nexport { DataLinksInlineEditor } from './components/DataLinks/DataLinksInlineEditor/DataLinksInlineEditor';\nexport {\n  DataLinksInlineEditorBase,\n  type DataLinksInlineEditorBaseProps,\n} from './components/DataLinks/DataLinksInlineEditor/DataLinksInlineEditorBase';\nexport { DataLinkInput } from './components/DataLinks/DataLinkInput';\nexport {\n  DataLinksContextMenu,\n  type DataLinksContextMenuProps,\n  type DataLinksContextMenuApi,\n} from './components/DataLinks/DataLinksContextMenu';\nexport { SeriesIcon } from './components/VizLegend/SeriesIcon';\nexport { InfoBox } from './components/InfoBox/InfoBox';\nexport { FeatureInfoBox } from './components/InfoBox/FeatureInfoBox';\nexport { FeatureBadge } from './components/FeatureBadge/FeatureBadge';\n\nexport { JSONFormatter } from './components/JSONFormatter/JSONFormatter';\nexport { JsonExplorer } from './components/JSONFormatter/json_explorer/json_explorer';\nexport {\n  ErrorBoundary,\n  ErrorBoundaryAlert,\n  type ErrorBoundaryAlertProps,\n  withErrorBoundary,\n} from './components/ErrorBoundary/ErrorBoundary';\nexport { ErrorWithStack } from './components/ErrorBoundary/ErrorWithStack';\nexport { DataSourceHttpSettings } from './components/DataSourceSettings/DataSourceHttpSettings';\nexport { CustomHeadersSettings } from './components/DataSourceSettings/CustomHeadersSettings';\nexport { AlertingSettings } from './components/DataSourceSettings/AlertingSettings';\nexport { SecureSocksProxySettings } from './components/DataSourceSettings/SecureSocksProxySettings';\nexport { TLSAuthSettings } from './components/DataSourceSettings/TLSAuthSettings';\nexport { CertificationKey } from './components/DataSourceSettings/CertificationKey';\nexport { Spinner } from './components/Spinner/Spinner';\nexport { FadeTransition } from './components/transitions/FadeTransition';\nexport { SlideOutTransition } from './components/transitions/SlideOutTransition';\nexport { Segment } from './components/Segment/Segment';\nexport { SegmentAsync } from './components/Segment/SegmentAsync';\nexport { SegmentInput } from './components/Segment/SegmentInput';\nexport { SegmentSelect } from './components/Segment/SegmentSelect';\nexport { SegmentSection } from './components/Segment/SegmentSection';\nexport { Drawer } from './components/Drawer/Drawer';\nexport { Slider } from './components/Slider/Slider';\nexport { RangeSlider } from './components/Slider/RangeSlider';\n\n// Next-gen forms\nexport { Form } from './components/Forms/Form';\nexport { sharedInputStyle } from './components/Forms/commonStyles';\nexport { InputControl } from './components/InputControl';\nexport {\n  Button,\n  LinkButton,\n  type ButtonVariant,\n  type ButtonProps,\n  clearButtonStyles,\n} from './components/Button/Button';\nexport { ButtonGroup } from './components/Button/ButtonGroup';\nexport { ToolbarButton } from './components/ToolbarButton/ToolbarButton';\nexport { ToolbarButtonRow } from './components/ToolbarButton/ToolbarButtonRow';\nexport { ValuePicker } from './components/ValuePicker/ValuePicker';\nexport { fieldMatchersUI } from './components/MatchersUI/fieldMatchersUI';\nexport { Link } from './components/Link/Link';\nexport { TextLink } from './components/Link/TextLink';\nexport { Text } from './components/Text/Text';\nexport { Box } from './components/Layout/Box/Box';\nexport { Stack } from './components/Layout/Stack/Stack';\nexport { Grid } from './components/Layout/Grid/Grid';\nexport { Space } from './components/Layout/Space';\nexport { ScrollContainer } from './components/ScrollContainer/ScrollContainer';\n\nexport { Label } from './components/Forms/Label';\nexport { Field, type FieldProps } from './components/Forms/Field';\nexport { Legend } from './components/Forms/Legend';\nexport { FieldSet } from './components/Forms/FieldSet';\nexport { FieldValidationMessage } from './components/Forms/FieldValidationMessage';\nexport { InlineField } from './components/Forms/InlineField';\nexport { InlineSegmentGroup } from './components/Forms/InlineSegmentGroup';\nexport { InlineLabel } from './components/Forms/InlineLabel';\nexport { InlineFieldRow } from './components/Forms/InlineFieldRow';\nexport { FieldArray } from './components/Forms/FieldArray';\n\n// Select\n// Note - Select is nearly deprecated in favor of Combobox\nexport { default as resetSelectStyles } from './components/Select/resetSelectStyles';\nexport * from './components/Select/Select';\nexport { SelectMenuOptions } from './components/Select/SelectMenu';\nexport { getSelectStyles } from './components/Select/getSelectStyles';\nexport * from './components/Select/types';\n\nexport { Combobox } from './components/Combobox/Combobox';\nexport { MultiCombobox } from './components/Combobox/MultiCombobox';\nexport { type ComboboxOption } from './components/Combobox/types';\n\nexport { HorizontalGroup, VerticalGroup, Container } from './components/Layout/Layout';\nexport { Badge, type BadgeColor, type BadgeProps } from './components/Badge/Badge';\nexport { RadioButtonGroup } from './components/Forms/RadioButtonGroup/RadioButtonGroup';\nexport { RadioButtonDot } from './components/Forms/RadioButtonList/RadioButtonDot';\nexport { RadioButtonList } from './components/Forms/RadioButtonList/RadioButtonList';\n\nexport { Input, getInputStyles } from './components/Input/Input';\nexport { AutoSizeInput } from './components/Input/AutoSizeInput';\nexport { FilterInput } from './components/FilterInput/FilterInput';\nexport type { FormInputSize } from './components/Forms/types';\nexport * from './components/SecretInput';\nexport * from './components/SecretTextArea';\n\nexport { Switch, InlineSwitch } from './components/Switch/Switch';\nexport { Checkbox } from './components/Forms/Checkbox';\n\nexport { TextArea } from './components/TextArea/TextArea';\nexport { FileUpload } from './components/FileUpload/FileUpload';\nexport {\n  FileDropzone,\n  FileDropzoneDefaultChildren,\n  type FileDropzoneProps,\n  type DropzoneFile,\n} from './components/FileDropzone/FileDropzone';\nexport { FileListItem, type FileListItemProps } from './components/FileDropzone/FileListItem';\nexport { TimeRangeInput } from './components/DateTimePickers/TimeRangeInput';\nexport { RelativeTimeRangePicker } from './components/DateTimePickers/RelativeTimeRangePicker/RelativeTimeRangePicker';\nexport { Card, type Props as CardProps, getCardStyles } from './components/Card/Card';\nexport { CardContainer, type CardContainerProps } from './components/Card/CardContainer';\nexport { FormattedValueDisplay } from './components/FormattedValueDisplay/FormattedValueDisplay';\nexport { ButtonSelect } from './components/Dropdown/ButtonSelect';\nexport { Dropdown } from './components/Dropdown/Dropdown';\nexport {\n  PluginSignatureBadge,\n  type PluginSignatureBadgeProps,\n} from './components/PluginSignatureBadge/PluginSignatureBadge';\nexport { UserIcon, type UserIconProps } from './components/UsersIndicator/UserIcon';\nexport { UsersIndicator, type UsersIndicatorProps } from './components/UsersIndicator/UsersIndicator';\nexport { type UserView } from './components/UsersIndicator/types';\nexport { Avatar } from './components/UsersIndicator/Avatar';\n// Export this until we've figured out a good approach to inline form styles.\nexport { InlineFormLabel } from './components/FormLabel/FormLabel';\nexport { Divider } from './components/Divider/Divider';\nexport { getDragStyles, type DragHandlePosition } from './components/DragHandle/DragHandle';\nexport { useSplitter } from './components/Splitter/useSplitter';\n\n/** @deprecated Please use non-legacy versions of these components */\nconst LegacyForms = {\n  SecretFormField,\n  FormField,\n  Select,\n  AsyncSelect,\n  IndicatorsContainer,\n  NoOptionsMessage,\n  Input,\n  Switch,\n};\nexport { LegacyForms, LegacyInputStatus };\n\n// WIP, need renames and exports cleanup\nexport { graphFieldOptions, getGraphFieldOptions } from './components/uPlot/config';\nexport { UPlotConfigBuilder } from './components/uPlot/config/UPlotConfigBuilder';\nexport { UPLOT_AXIS_FONT_SIZE } from './components/uPlot/config/UPlotAxisBuilder';\nexport { UPlotChart } from './components/uPlot/Plot';\nexport { PlotLegend } from './components/uPlot/PlotLegend';\nexport { XYCanvas } from './components/uPlot/geometries/XYCanvas';\nexport { Marker } from './components/uPlot/geometries/Marker';\nexport { EventsCanvas } from './components/uPlot/geometries/EventsCanvas';\nexport { TooltipPlugin2 } from './components/uPlot/plugins/TooltipPlugin2';\nexport { EventBusPlugin } from './components/uPlot/plugins/EventBusPlugin';\nexport { KeyboardPlugin } from './components/uPlot/plugins/KeyboardPlugin';\n\nexport { type PlotTooltipInterpolator, type PlotSelection, FIXED_UNIT } from './components/uPlot/types';\nexport { type UPlotConfigPrepFn } from './components/uPlot/config/UPlotConfigBuilder';\nexport * from './components/PanelChrome/types';\nexport { Label as BrowserLabel } from './components/BrowserLabel/Label';\nexport { PanelContainer } from './components/PanelContainer/PanelContainer';\nexport { VariablesInputModal } from './components/Actions/VariablesInputModal';\n\n// -----------------------------------------------------\n// Graveyard: exported, but no longer used internally\n// These will be removed in the future\n// -----------------------------------------------------\n\nexport { Graph } from './graveyard/Graph/Graph';\nexport { GraphWithLegend } from './graveyard/Graph/GraphWithLegend';\nexport { GraphContextMenu, GraphContextMenuHeader } from './graveyard/Graph/GraphContextMenu';\nexport { graphTimeFormat, graphTickFormatter } from './graveyard/Graph/utils';\nexport { GraphSeriesToggler, type GraphSeriesTogglerAPI } from './graveyard/Graph/GraphSeriesToggler';\n\nexport { GraphNG, type GraphNGProps } from './graveyard/GraphNG/GraphNG';\nexport { TimeSeries } from './graveyard/TimeSeries/TimeSeries';\nexport { useGraphNGContext } from './graveyard/GraphNG/hooks';\nexport { preparePlotFrame, buildScaleKey } from './graveyard/GraphNG/utils';\nexport { type GraphNGLegendEvent } from './graveyard/GraphNG/types';\n\nexport { ZoomPlugin } from './graveyard/uPlot/plugins/ZoomPlugin';\nexport { TooltipPlugin } from './graveyard/uPlot/plugins/TooltipPlugin';\n\nexport {\n  ElementSelectionContext,\n  useElementSelection,\n  type ElementSelectionContextState,\n  type ElementSelectionContextItem,\n  type ElementSelectionOnSelectOptions,\n  type UseElementSelectionResult,\n} from './components/ElementSelectionContext/ElementSelectionContext';\n\nexport type { Themeable, Themeable2 } from './types/theme';\nexport type { ValidationRule, ValidationEvents } from './types/input';\nexport type {\n  SearchFunction,\n  CompletionItemGroup,\n  HighlightPart,\n  CompletionItem,\n  TypeaheadOutput,\n  TypeaheadInput,\n  SuggestionsState,\n} from './types/completion';\nexport { CompletionItemKind } from './types/completion';\nexport type { FormsOnSubmit, FormFieldErrors, FormAPI, FieldArrayApi } from './types/forms';\nexport type { IconName, IconType, IconSize } from './types/icon';\nexport { toIconName, isIconSize, getAvailableIcons, getFieldTypeIcon, getFieldTypeIconName } from './types/icon';\nexport type { ActionMeta } from './types/select';\nexport type { ComponentSize } from './types/size';\nexport type { Column } from './types/interactiveTable';\nexport type { CellProps, SortByFn } from 'react-table';\n\nexport {\n  DEFAULT_ANNOTATION_COLOR,\n  OK_COLOR,\n  ALERTING_COLOR,\n  NO_DATA_COLOR,\n  PENDING_COLOR,\n  REGION_FILL_ALPHA,\n  colors,\n  getTextColorForBackground,\n  getTextColorForAlphaBackground,\n  sortedColors,\n} from './utils/colors';\nexport { EventsWithValidation, validate, hasValidationEvent, regexValidation } from './utils/validate';\nexport { SCHEMA, makeFragment, makeValue } from './utils/slate';\nexport { linkModelToContextMenuItems } from './utils/dataLinks';\nexport { getTagColorIndexFromName, getTagColorsFromName, getTagColor } from './utils/tags';\nexport { getScrollbarWidth } from './utils/scrollbar';\nexport { getCellLinks } from './utils/table';\nexport { getCanvasContext, measureText, calculateFontSize } from './utils/measureText';\nexport { createPointerDistance, usePointerDistance } from './utils/usePointerDistance';\nexport { useForceUpdate } from './utils/useForceUpdate';\nexport { SearchFunctionType } from './utils/searchFunctions';\nexport { createLogger } from './utils/logger';\nexport { attachDebugger } from './utils/debug';\nexport { NodeGraphDataFrameFieldNames } from './utils/nodeGraph';\nexport { fuzzyMatch } from './utils/fuzzy';\nexport { logOptions } from './utils/logOptions';\n\nexport { DOMUtil, ReactUtils };\n\nexport { ThemeContext } from '@grafana/data';\nexport {\n  withTheme,\n  withTheme2,\n  useTheme,\n  useTheme2,\n  useStyles,\n  useStyles2,\n  mockThemeContext,\n} from './themes/ThemeContext';\nexport { getTheme, mockTheme } from './themes/getTheme';\nexport { stylesFactory } from './themes/stylesFactory';\nexport { GlobalStyles } from './themes/GlobalStyles/GlobalStyles';\n\nexport { styleMixins, commonOptionsBuilder };\n\nexport { BracesPlugin } from './slate-plugins/braces';\nexport { ClearPlugin } from './slate-plugins/clear';\nexport { ClipboardPlugin } from './slate-plugins/clipboard';\nexport { IndentationPlugin } from './slate-plugins/indentation';\nexport { NewlinePlugin } from './slate-plugins/newline';\nexport { RunnerPlugin } from './slate-plugins/runner';\nexport { SelectionShortcutsPlugin } from './slate-plugins/selection_shortcuts';\nexport { SlatePrism, type Token } from './slate-plugins/slate-prism';\nexport { SuggestionsPlugin } from './slate-plugins/suggestions';\n\n// @deprecated import from @grafana/schema\nexport {\n  // Styles that changed\n  GraphDrawStyle as DrawStyle,\n  // All exports\n  AxisPlacement,\n  VisibilityMode as PointVisibility,\n  LineInterpolation,\n  ScaleDistribution,\n  GraphGradientMode,\n  BarGaugeDisplayMode,\n  type LineStyle,\n  type PointsConfig,\n  type ScaleDistributionConfig,\n  type HideSeriesConfig,\n  BarAlignment,\n  VisibilityMode as BarValueVisibility,\n  ScaleOrientation,\n  ScaleDirection,\n  type LineConfig,\n  type BarConfig,\n  type FillConfig,\n  type AxisConfig,\n  type HideableFieldConfig,\n  StackingMode,\n  type StackingConfig,\n  type StackableFieldConfig,\n  GraphThresholdsStyleMode,\n  type GraphThresholdsStyleConfig,\n  type GraphFieldConfig,\n  type LegendPlacement,\n  LegendDisplayMode,\n  type VizLegendOptions,\n  type OptionsWithLegend,\n  TableCellDisplayMode,\n  type FieldTextAlignment,\n  type VizTextDisplayOptions,\n  type OptionsWithTextFormatting,\n  TooltipDisplayMode,\n  type VizTooltipOptions,\n  type OptionsWithTooltip,\n} from '@grafana/schema';\n"],"names":["memoize","ThemeContext","jsx","hoistNonReactStatics","useContext","React","spin","keyframes","iconRoot","css","isIconName","cx","SVG","Portal","useRef","useLayoutEffect","ReactDOM","getStyles","selectors","forwardRef","useState","offset","flip","shift","arrow","useFloating","autoUpdate","useId","useHover","safePolygon","useFocus","useDismiss","useInteractions","useCallback","jsxs","Fragment","cloneElement","FloatingArrow","isValidElement","classNames","EventsWithValidation","LegacyInputStatus","PureComponent","Input","IndicatorsContainer","components","ScrollIndicators","useEffect","availableIconsIndex","FieldType","t","CSSTransition","data","toIconName","useMemo","SelectOptionGroup","ReactSelect","Creatable","Select","ReactAsyncSelect","AsyncSelect","uniqueId","Switch","tinycolor","omit","Trans","Label","getLabelStyles","useMeasure","InputControl","deprecationWarning","colorManipulator","ToggleAllState","_a","max","List","useImperativeHandle","children","ReactDOMServer","ref","createElement","Component","createRef","isEqual","value","toOption","AsyncCreatable","isArray","negate","GraphDrawStyle","LineInterpolation","BarAlignment","VisibilityMode","AxisPlacement","GraphGradientMode","StackingMode","GraphThresholdsStyleMode","AxisColorMode","ScaleDistribution","identityOverrideProcessor","startCase","LegendDisplayMode","standardEditorsRegistry","TooltipDisplayMode","SortOrder","_b","useTransitionStyles","memo","useClick","FloatingFocusManager","className","Scrollbars","locale","SHOW_SUCCESS_DURATION","RCCascader","useOverlay","useDialog","OverlayContainer","FocusScope","ColorSwatchVariant","useFocusRing","upperFirst","debounce","useThrottleFn","RgbaStringColorPicker","getPaletteStyles","getValueFormats","fieldReducers","difference","modulo","useEffectOnce","parseDuration","formatDuration","unEscapeStringFromRegex","escapeStringForRegex","locationUtil","textUtil","RouterLink","VIRTUAL_OVERSCAN_ITEMS","useVirtualizer","fuzzySearch","getScrollbarWidth","autoPlacement","size","groupStartIndices","noop","useCombobox","selectedItem","isOpen","highlightedIndex","isString","dateTimeFormat","getTimeZoneInfo","getTimeZoneGroups","options","toLower","group","isEmpty","InternalTimeZones","timeZone","isDateTime","dateMath","dateTimeParse","getZone","Body","Calendar","fromValue","toValue","rangeUtil","from","to","TimePickerCalendar","uuidv4","Options","timeOption","createContext","usePrevious","timeZoneFormatUserFriendly","RcPicker","generateConfig","dateTimeAsMoment","isDateTimeInput","dateTime","useMedia","date","dateTimeForTimeZone","getTimeZone","Components","getColumns","useSortBy","useExpanded","usePagination","useTable","isTruthy","key","getTagStyles","getSkeletonStyles","Skeleton","useForm","isKeyHotkey","Plain","SlateRange","CompletionItemKind","all","calculateSize","renderMarkdown","Highlighter","FixedSizeList","last","SearchFunctionType","Block","Text","Document","Value","sortBy","classnames","Editor","useAsync","CodeEditorSuggestionItemKind","monacoLanguageRegistry","Children","stringToMs","Subject","switchMap","of","NEVER","interval","tap","RcDrawer","TableCellInspectorMode","getFieldDisplayName","map","chunk","flattenDeep","zip","BarGaugeValueMode","GAUGE_DEFAULT_MINIMUM","GAUGE_DEFAULT_MAXIMUM","BarGaugeDisplayMode","VizOrientation","ThresholdsMode","BarGaugeNamePlacement","maxTitleHeightRatio","titleHeight","formattedValueToString","FALLBACK_COLOR","getFieldColorMode","FieldColorModeId","getFieldConfigWithMinMax","TableCellDisplayMode","isFunction","Geometry","WKT","throttle","buildScaleKey","getScaleDistributionPart","StackDirection","GraphTransform","i","reduceField","ReducerID","getDisplayProcessor","uPlot","scaleKey","incrRoundDn","incrRoundUp","isBooleanUnit","splits","values","decimals","guessDecimals","roundDecimals","systemDateFormats","ScaleOrientation","GradientDirection","lineColor","theme","DefaultTimeZone","merge","preparePlotFrame","isLikelyAscendingVector","sortDataFrame","applyNullInsertThreshold","defaultConfig","nullToValue","compareDataFrameStructures","ScaleDirection","getFieldColorModeForField","getMinMaxAndDelta","isDataFrameWithValue","isDataFrame","isTimeSeriesFrame","clone","f","TableCellBackgroundDisplayMode","sampleSize","getValueFormat","floatingUIOffset","e2eSelectors","PanelChrome","useToggle","LoadingState","EventBusSrv","SeriesVisibilityChangeMode","PanelChromeComponent","TableCellHeight","DataHoverEvent","DataHoverClearEvent","hasTimeField","Subscription","debounceTime","rowHighlightIndex","index","scrollTop","VariableSizeList","state","getRowUniqueId","useFilters","useAbsoluteLayout","useResizeColumns","footerItems","getFieldMatcher","readCSV","PercentChangeColorMode","BigValueColorMode","BigValueGraphMode","BigValueJustifyMode","BigValueTextMode","getActiveThreshold","$","ColorIndicator","ColorPlacement","_c","_d","_e","useWindowSize","fieldColorModeRegistry","clamp","SeriesVisibilityChangeBehavior","color","capitalize","stat","items","cloneDeep","pickBy","identity","convertOldAngularValueMappings","validateFieldConfig","isNumber","sortThresholds","useClickAway","Record","Prism","groupBy","VariableOrigin","DataLinkBuiltInVars","link","Draggable","item","DragDropContext","Droppable","FeatureState","requestAnimationFrame","faro","LABEL_WIDTH","expanded","isObject","useAsyncFn","FONT_SIZE","cssCore","SliderComponent","Global","Tooltip","Slider","Controller","FieldMatcherID","fieldMatchers","useSelectOptions","FieldNamePickerBaseNameMode","ComparisonOperation","v","getFrameDisplayName","Registry","useFieldArray","useMultipleSelection","inputValue","Orientation","CONFIGURED_TEXT","RESET_BUTTON_TEXT","fileToModify","event","useDropzone","ErrorCode","getDefaultTimeRange","units","timeRange","getCardStyles","PluginSignatureType","PluginSignatureStatus","PIXELS_PER_MS","getFieldSeriesColor","useMountedState","TOOLTIP_OFFSET","TooltipHoverMode","MIN_ZOOM_DIST","maybeZoomAction","DashboardCursorSync","useReducer","dismiss","e","yDrag","createPortal","u","LegacyGraphHoverEvent","throttleTime","getValueFromDimension","getColumnFromDimension","createDimension","uniqBy","newHiddenSeries","series","toggledSeries","outerJoinDataFrames","defaultPreparePlotFrame","arrayUtils","NodeGraphDataFrameFieldNames","createTheme"],"mappings":"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"}