{"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/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/mixins.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/utils/skeleton.tsx","../../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/components/Portal/Portal.tsx","../../src/components/Tooltip/Tooltip.tsx","../../src/components/Tooltip/PopoverController.tsx","../../src/components/FormLabel/FormLabel.tsx","../../src/components/FormField/FormField.tsx","../../src/utils/dom.ts","../../src/utils/reactUtils.ts","../../src/utils/colors.ts","../../src/utils/validate.ts","../../src/utils/slate.ts","../../src/utils/dataLinks.ts","../../src/utils/tags.ts","../../src/utils/scrollbar.ts","../../src/utils/table.ts","../../src/utils/measureText.ts","../../src/utils/usePointerDistance.ts","../../src/utils/useForceUpdate.ts","../../src/utils/fuzzy.ts","../../src/utils/searchFunctions.ts","../../src/utils/logger.ts","../../src/utils/debug.ts","../../src/utils/nodeGraph.ts","../../src/utils/logOptions.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/completion.ts","../../src/types/icon.ts","../../src/utils/i18n.tsx","../../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/components/Forms/commonStyles.ts","../../src/components/Button/Button.tsx","../../src/components/SecretFormField/SecretFormField.tsx","../../src/components/Button/ButtonGroup.tsx","../../src/components/IconButton/IconButton.tsx","../../src/components/ConfirmButton/ConfirmButton.tsx","../../src/components/ConfirmButton/DeleteButton.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/TabsBar.tsx","../../src/components/Tabs/TabContent.tsx","../../src/components/TabbedContainer/TabbedContainer.tsx","../../src/components/InlineToast/InlineToast.tsx","../../src/components/ClipboardButton/ClipboardButton.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/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/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/utils/reverseMap.ts","../../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/FieldValidationMessage.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/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/ToolbarButton/ToolbarButtonRow.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/Input/AutoSizeInput.tsx","../../src/components/Forms/Label.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/filter.ts","../../src/components/Combobox/useComboboxFloat.ts","../../src/components/Combobox/useLatestAsyncCall.ts","../../src/components/Combobox/useOptions.ts","../../src/components/Combobox/Combobox.tsx","../../src/components/Forms/Field.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/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/components/TagsInput/TagItem.tsx","../../src/components/TagsInput/TagsInput.tsx","../../src/components/AutoSaveField/EllipsisAnimated.tsx","../../src/components/AutoSaveField/AutoSaveField.tsx","../../src/components/Tags/Tag.tsx","../../src/components/Tags/TagList.tsx","../../src/components/FilterPill/FilterPill.tsx","../../src/components/Modal/ModalHeader.tsx","../../src/components/Modal/Modal.tsx","../../src/components/ConfirmModal/ConfirmContent.tsx","../../src/components/ConfirmModal/ConfirmModal.tsx","../../src/slate-plugins/braces.ts","../../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/slate-plugins/slate-prism/TOKEN_MARK.ts","../../src/slate-plugins/slate-prism/options.tsx","../../src/slate-plugins/slate-prism/index.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/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/Link/Link.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/components/Actions/ActionButton.tsx","../../src/components/Table/ActionsCell.tsx","../../src/components/FormattedValueDisplay/FormattedValueDisplay.tsx","../../src/components/BarGauge/BarGauge.tsx","../../src/components/ContextMenu/ContextMenu.tsx","../../src/components/ContextMenu/WithContextMenu.tsx","../../src/components/DataLinks/DataLinksContextMenu.tsx","../../src/components/Table/Cells/BarGaugeCell.tsx","../../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/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/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/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/graveyard/Graph/GraphSeriesToggler.tsx","../../src/components/Collapse/Collapse.tsx","../../src/components/Collapse/CollapsableSection.tsx","../../src/components/DataLinks/DataLinkButton.tsx","../../src/components/DataLinks/FieldLinkList.tsx","../../src/components/Button/FullWidthButtonContainer.tsx","../../src/components/SingleStatShared/SingleStatBaseOptions.ts","../../src/components/CallToActionCard/CallToActionCard.tsx","../../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/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/Forms/RadioButtonGroup/RadioButton.tsx","../../src/components/Forms/RadioButtonGroup/RadioButtonGroup.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/Link/TextLink.tsx","../../src/components/Layout/Grid/Grid.tsx","../../src/components/Layout/Space.tsx","../../src/components/Forms/Legend.tsx","../../src/components/Forms/FieldSet.tsx","../../src/components/Forms/InlineSegmentGroup.tsx","../../src/components/Forms/FieldArray.tsx","../../src/components/Combobox/SuffixIcon.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/config.ts","../../src/components/uPlot/PlotLegend.tsx","../../src/components/uPlot/geometries/Marker.tsx","../../src/components/uPlot/geometries/XYCanvas.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/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/components/index.ts","../../src/options/builder/axis.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"],"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 + 'img/icons/';\n  } else {\n    iconRoot = 'public/img/icons/';\n  }\n\n  return iconRoot;\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 { getIconRoot, getIconSubDir, 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.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 iconRoot = getIconRoot();\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 subDir = getIconSubDir(iconName, type);\n    const svgPath = `${iconRoot}${subDir}/${iconName}.svg`;\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 div 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          <div\n            className={cx(\n              css({\n                width: svgWid,\n                height: svgHgt,\n              }),\n              composedClassName\n            )}\n          />\n        }\n        {...rest}\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';\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 { 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: '4px',\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: '2px',\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: '4px',\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\n      '&:hover': {\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: '2px',\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: '3px',\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 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 } from '@emotion/react';\n\nimport { GrafanaTheme2, ThemeTypographyVariant } from '@grafana/data';\n\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    },\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      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: '50%',\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}\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 { 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 { 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 { 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';\n\ninterface Props {\n  className?: string;\n  root?: HTMLElement;\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 = `${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 { 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 classNames from 'classnames';\nimport { ReactNode } from 'react';\n\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip, PopoverContent } from '../Tooltip';\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 } 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';\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  return (\n    <div className={cx(styles.formField, className)}>\n      <InlineFormLabel width={labelWidth} tooltip={tooltip} interactive={interactive}>\n        {label}\n      </InlineFormLabel>\n      {inputEl || (\n        <input\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","// 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 { 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 { 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 { 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 { 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","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","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","// 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 { 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<unknown>> | 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;\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 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 { 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","import { last } from 'lodash';\n\nimport { HighlightPart } from '../types';\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';\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 { 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 { 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","/**\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 classNames from 'classnames';\nimport { PureComponent, ChangeEvent } from 'react';\nimport * as React from 'react';\n\nimport { ValidationEvents, ValidationRule } from '../../../../types';\nimport { validate, EventsWithValidation, hasValidationEvent } from '../../../../utils';\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';\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';\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';\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        <div 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 { Value } from 'slate';\nimport { Editor } from 'slate-react';\n\nimport { SearchFunctionType } from '../utils';\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 { 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 i18next from 'i18next';\nimport { ReactElement } from 'react';\nimport { Trans as I18NextTrans, initReactI18next } from 'react-i18next'; // eslint-disable-line no-restricted-imports\n\n// We want to translate grafana-ui without introducing any breaking changes for consumers\n// who use grafana-ui outside of grafana (such as grafana.com self serve). The other struggle\n// is that grafana-ui does not require a top-level provider component, so we don't get the\n// chance to do the mandatory i18next setup that <Trans /> and t() requires\n//\n// We wrap <Trans /> and t() and do a simple check if it hasn't already been set up\n// (Grafana will init i18next in app.ts), and just set it up with a minimal config\n// to use the default phrases in the source jsx.\n\n// Creates a default, english i18next instance when running outside of grafana.\n// we don't support changing the locale of grafana ui when outside of Grafana\nfunction initI18n() {\n  // resources is undefined by default and set either by grafana app.ts or here\n  if (typeof i18next.options.resources !== 'object') {\n    i18next.use(initReactI18next).init({\n      resources: {},\n      returnEmptyString: false,\n      lng: 'en-US', // this should be the locale of the phrases in our source JSX\n    });\n  }\n}\n\ntype I18NextTransType = typeof I18NextTrans;\ntype I18NextTransProps = Parameters<I18NextTransType>[0];\n\ninterface TransProps extends I18NextTransProps {\n  i18nKey: string;\n}\n\nexport const Trans = (props: TransProps): ReactElement => {\n  initI18n();\n  return <I18NextTrans {...props} />;\n};\n\n// Reassign t() so i18next-parser doesn't warn on dynamic key, and we can have 'failOnWarnings' enabled\nconst tFunc = i18next.t;\n\nexport const t = (id: string, defaultMessage: string, values?: Record<string, unknown>) => {\n  initI18n();\n\n  return tFunc(id, defaultMessage, values);\n};\n","import { cx, css } from '@emotion/css';\nimport * as React from 'react';\nimport SVG from 'react-inlinesvg';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\nimport { IconSize, isIconSize } from '../../types';\nimport { t } from '../../utils/i18n';\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  }),\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';\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';\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';\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 { stylesFactory, withTheme2 } from '../../../../themes';\nimport { Themeable2 } from '../../../../types';\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, PopoverContent } from '../../../Tooltip';\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';\nimport { Themeable2 } from '../../../../types';\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 { 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';\nimport { getFocusStyles, getMouseFocusStyles } from '../../themes/mixins';\nimport { ComponentSize, IconSize, IconType } from '../../types';\nimport { IconName } from '../../types/icon';\nimport { getPropertiesForButtonSize } from '../Forms/commonStyles';\nimport { Icon } from '../Icon/Icon';\nimport { PopoverContent, Tooltip, TooltipPlacement } from '../Tooltip';\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 CommonProps = {\n  size?: ComponentSize;\n  variant?: ButtonVariant;\n  fill?: ButtonFill;\n  icon?: IconName | React.ReactElement;\n  className?: string;\n  children?: React.ReactNode;\n  fullWidth?: boolean;\n  type?: string;\n  /** Tooltip content to display on hover */\n  tooltip?: PopoverContent;\n  /** Position of the tooltip */\n  tooltipPlacement?: TooltipPlacement;\n};\n\nexport type ButtonProps = CommonProps & ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  (\n    {\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      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    // 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      >\n        <IconRenderer icon={icon} size={size} className={styles.icon} />\n        {children && <span className={styles.content}>{children}</span>}\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 = CommonProps &\n  ButtonHTMLAttributes<HTMLButtonElement> &\n  AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const LinkButton = React.forwardRef<HTMLAnchorElement, ButtonLinkProps>(\n  (\n    {\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      >\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      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      : css({\n          marginRight: theme.spacing(padding / 2),\n        }),\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 { css, cx } from '@emotion/css';\nimport { omit } from 'lodash';\nimport { InputHTMLAttributes } from 'react';\nimport * as React from 'react';\n\nimport { Trans } from '../../utils/i18n';\nimport { Button } from '../Button/Button';\nimport { FormField } from '../FormField/FormField';\nimport { Field } from '../Forms/Field';\nimport { SecretInput } from '../SecretInput';\nimport { PopoverContent } from '../Tooltip';\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\nconst getSecretFormFieldStyles = () => {\n  return {\n    noRadiusInput: css({\n      borderBottomRightRadius: '0 !important',\n      borderTopRightRadius: '0 !important',\n    }),\n    noRadiusButton: css({\n      borderBottomLeftRadius: '0 !important',\n      borderTopLeftRadius: '0 !important',\n    }),\n  };\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  const styles = getSecretFormFieldStyles();\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={cx(`gf-form-input width-${inputWidth}`, styles.noRadiusInput)}\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 { css, cx } from '@emotion/css';\nimport { forwardRef, HTMLAttributes } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\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: 0,\n      borderBottomLeftRadius: 0,\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: 0,\n      borderBottomRightRadius: 0,\n      borderRight: `1px solid rgba(0, 0, 0, 0.12)`,\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';\nimport { getFocusStyles, getMouseFocusStyles } from '../../themes/mixins';\nimport { ComponentSize } from '../../types';\nimport { IconName, IconSize, IconType } from '../../types/icon';\nimport { IconRenderer } from '../Button';\nimport { getSvgSize } from '../Icon/utils';\nimport { TooltipPlacement, PopoverContent, Tooltip } from '../Tooltip';\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 { cx, css } from '@emotion/css';\nimport { ReactElement, useEffect, useRef, useState } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\nimport { ComponentSize } from '../../types/size';\nimport { Trans } from '../../utils/i18n';\nimport { Button, ButtonVariant } from '../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 { ComponentSize } from '../../types/size';\nimport { Button } from '../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=\"Delete\"\n      confirmVariant=\"destructive\"\n      size={size || 'md'}\n      disabled={disabled}\n      onConfirm={onConfirm}\n      closeOnConfirm={closeOnConfirm}\n    >\n      <Button aria-label={ariaLabel} variant=\"destructive\" icon=\"times\" size={size || 'sm'} />\n    </ConfirmButton>\n  );\n};\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';\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}\n\nexport function Popover({\n  content,\n  show,\n  placement,\n  className,\n  wrapperClassName,\n  referenceElement,\n  renderArrow,\n  hidePopper,\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        }}\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';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\nimport { t } from '../../utils/i18n';\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';\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';\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';\n\nexport interface CounterProps {\n  value: number;\n}\n\nexport const Counter = ({ value }: CounterProps) => {\n  const styles = useStyles2(getStyles);\n\n  return <span className={styles.counter}>{locale(value, 0).text}</span>;\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  counter: css({\n    label: 'counter',\n    marginLeft: theme.spacing(1),\n    borderRadius: theme.spacing(3),\n    backgroundColor: 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';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { IconName } from '../../types';\nimport { clearButtonStyles } from '../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}\n\nexport const Tab = React.forwardRef<HTMLElement, TabProps>(\n  (\n    { label, active, icon, onChangeTab, counter, suffix: Suffix, className, href, truncate, tooltip, ...otherProps },\n    ref\n  ) => {\n    const tabsStyles = useStyles2(getStyles);\n    const clearStyles = useStyles2(clearButtonStyles);\n\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(\n      clearStyles,\n      tabsStyles.link,\n      active ? tabsStyles.activeStyle : tabsStyles.notActive,\n      truncate && tabsStyles.linkTruncate\n    );\n\n    const commonProps = {\n      className: linkClass,\n      'data-testid': selectors.components.Tab.title(label),\n      ...otherProps,\n      onClick: onChangeTab,\n      role: 'tab',\n      'aria-selected': active,\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={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  };\n};\n","import { css, cx } from '@emotion/css';\nimport { forwardRef, ReactNode } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\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, cx } from '@emotion/css';\nimport { HTMLAttributes, ReactNode } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\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 } 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 { TabsBar, Tab, TabContent } from '../../components/Tabs';\nimport { useStyles2 } from '../../themes';\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';\nimport { IconName } from '../../types';\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';\n\nimport { t } from '../../../src/utils/i18n';\nimport { useStyles2 } from '../../themes';\nimport { Button, ButtonProps } from '../Button';\nimport { Icon } from '../Icon/Icon';\nimport { InlineToast } from '../InlineToast/InlineToast';\n\nexport interface Props extends 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        aria-label={showCopySuccess ? copiedText : undefined}\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 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/lib/useMeasure';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { stylesFactory, useTheme2 } from '../../themes';\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: 0,\n          borderBottomLeftRadius: 0,\n        },\n      },\n\n      /* when input rendered with addon after only*/\n      '&:first-child:not(:last-child)': {\n        '> input': {\n          borderRight: 'none',\n          borderTopRightRadius: 0,\n          borderBottomRightRadius: 0,\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: 0,\n          borderBottomRightRadius: 0,\n          borderTopLeftRadius: 0,\n          borderBottomLeftRadius: 0,\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: 0,\n        borderBottomRightRadius: 0,\n        '> :last-child': {\n          borderTopRightRadius: 0,\n          borderBottomRightRadius: 0,\n        },\n      },\n\n      '&:last-child': {\n        borderTopLeftRadius: 0,\n        borderBottomLeftRadius: 0,\n        '> :first-child': {\n          borderTopLeftRadius: 0,\n          borderBottomLeftRadius: 0,\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: 0,\n        borderBottomRightRadius: 0,\n      })\n    ),\n    suffix: cx(\n      prefixSuffix,\n      css({\n        label: 'input-suffix',\n        paddingLeft: theme.spacing(1),\n        paddingRight: theme.spacing(1),\n        marginBottom: '-2px',\n        borderLeft: 'none',\n        borderTopLeftRadius: 0,\n        borderBottomLeftRadius: 0,\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';\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';\n\nexport function DropdownIndicator({ selectProps }: DropdownIndicatorProps) {\n  const isOpen = selectProps.menuIsOpen;\n  const icon = isOpen ? 'search' : 'angle-down';\n  const size = isOpen ? 'sm' : 'md';\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 } 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 { useTheme2 } from '../../themes';\nimport { t } from '../../utils/i18n';\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}\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  invalid: 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';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { t, Trans } from '../../utils/i18n';\nimport { clearButtonStyles } from '../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';\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';\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 { Component, ReactNode } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { withTheme2 } from '../../themes/ThemeContext';\n\nimport { getSelectStyles } from './getSelectStyles';\n\nclass UnthemedValueContainer extends Component<any & { theme: GrafanaTheme2 }> {\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 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 } 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';\n\nimport { useTheme2 } from '../../themes';\nimport { t, Trans } from '../../utils/i18n';\nimport { Icon } from '../Icon/Icon';\nimport { Spinner } from '../Spinner/Spinner';\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  ...rest\n}: SelectBaseProps<T> & Rest) {\n  const theme = useTheme2();\n  const styles = getSelectStyles(theme);\n\n  const reactSelectRef = useRef<{ 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  // 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            return <Spinner inline />;\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        {...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 { 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\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  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.background.secondary,\n              content: \"''\",\n              height: theme.spacing(3),\n              mask: 'url(../img/icons/unicons/angle-right.svg)',\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","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';\n\nimport { withTheme2 } from '../../themes';\nimport { Themeable2 } from '../../types';\nimport { t } from '../../utils/i18n';\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';\n\nimport { useTheme2 } from '../../themes';\nimport { IconName } from '../../types/icon';\nimport { t } from '../../utils/i18n';\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 { useState, useEffect } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\nimport { t } from '../../utils/i18n';\nimport { Alert } from '../Alert/Alert';\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\n  const styles = useStyles2(getStyles());\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  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    <div onKeyDown={handleKeyDown} tabIndex={0}>\n      <div className={cx(styles.imageGrid)}>\n        {validImages.map((image, index) => (\n          <div key={image.path} onClick={() => openPreview(index)} style={{ cursor: 'pointer' }}>\n            <img src={image.path} alt={image.name} onError={() => handleImageError(image.path)} />\n            <p>{image.name}</p>\n          </div>\n        ))}\n      </div>\n\n      {selectedIndex !== null && (\n        <div className={cx(styles.fullScreenDiv)} onClick={closePreview} data-testid=\"carousel-full-screen\">\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={(e) => {\n              e.stopPropagation();\n              goToPrevious();\n            }}\n            className={cx(styles.navigationButton, styles.previousButton)}\n            data-testid=\"previous-button\"\n          />\n\n          <div\n            style={{ position: 'relative', maxWidth: '90%', maxHeight: '90%' }}\n            onClick={(e) => e.stopPropagation()}\n            data-testid=\"carousel-full-image\"\n          >\n            <img\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={(e) => {\n              e.stopPropagation();\n              goToNext();\n            }}\n            className={cx(styles.navigationButton, styles.nextButton)}\n            data-testid=\"next-button\"\n          />\n        </div>\n      )}\n    </div>\n  );\n};\n\nconst getStyles = () => (theme: GrafanaTheme2) => ({\n  imageGrid: css({\n    display: 'grid',\n    gridTemplateColumns: `repeat(auto-fill, minmax(200px, 1fr))`,\n    gap: '16px',\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: '4px 0',\n      fontWeight: theme.typography.fontWeightMedium,\n      color: theme.colors.text.primary,\n    },\n  }),\n  fullScreenDiv: 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    alignItems: 'center',\n    justifyContent: 'center',\n    display: 'flex',\n\n    '& img': {\n      maxWidth: '100%',\n      maxHeight: '80vh',\n      objectFit: 'contain',\n    },\n  }),\n  closeButton: css({\n    position: 'absolute',\n    top: '20px',\n    right: '20px',\n    backgroundColor: 'transparent',\n    color: theme.colors.text.primary,\n  }),\n  navigationButton: css({\n    position: 'absolute',\n    backgroundColor: 'transparent',\n    color: theme.colors.text.primary,\n    cursor: 'pointer',\n    display: 'flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n  }),\n  nextButton: css({\n    right: '20px',\n  }),\n  previousButton: css({\n    left: '20px',\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';\nimport { IconName } from '../../types/icon';\nimport { Button, ButtonProps } from '../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?: ButtonProps;\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';\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';\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} 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';\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={colorLabel ? `${colorLabel} color` : 'Pick a color'}\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","export function reverseMap<T, Q>(arr: ArrayLike<T>, callbackfn: (value: T, index: number, array: ArrayLike<T>) => Q) {\n  const reversedAndMapped = new Array<Q>(arr.length);\n  for (let i = 0; i < arr.length; i++) {\n    const reverseIndex = arr.length - 1 - i;\n    reversedAndMapped[i] = callbackfn(arr[reverseIndex], reverseIndex, arr);\n  }\n\n  return reversedAndMapped;\n}\n","import { css } from '@emotion/css';\nimport { Property } from 'csstype';\nimport { upperFirst } from 'lodash';\n\nimport { GrafanaTheme2, ThemeVizHue } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { reverseMap } from '../../utils/reverseMap';\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\n  return (\n    <div className={styles.colorRow}>\n      <div className={styles.colorLabel}>{label}</div>\n      <div {...otherProps} className={styles.swatchRow}>\n        {reverseMap(hue.shades, (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';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\nimport { t } from '../../utils/i18n';\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';\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';\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';\n\nimport { stylesFactory, withTheme2 } from '../../themes';\nimport { Themeable2 } from '../../types/theme';\nimport { t } from '../../utils/i18n';\nimport { Tab, TabsBar } from '../Tabs';\nimport { PopoverContentProps } from '../Tooltip';\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}\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';\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';\nimport { Icon } from '../Icon/Icon';\nimport { PopoverContent, Tooltip } from '../Tooltip';\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';\nimport { getChildId } from '../../utils/reactUtils';\nimport { PopoverContent } from '../Tooltip';\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';\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: 'rgba(204, 204, 220, 0.04)',\n    color: 'rgba(204, 204, 220, 0.6)',\n    border: '1px solid 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 { withTheme2 } from '../../themes';\nimport { t } from '../../utils/i18n';\nimport { InlineField } from '../Forms/InlineField';\nimport { InlineSwitch } from '../Switch/Switch';\nimport { PopoverContentProps } from '../Tooltip';\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, stylesFactory } from '../../themes';\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 } = 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                    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    }),\n  };\n});\n","import { PureComponent, createRef } from 'react';\nimport * as React from 'react';\n\nexport interface Props {\n  /**\n   *  Callback to trigger when clicking outside of current element occurs.\n   */\n  onClick: () => void;\n  /**\n   *  Runs the 'onClick' function when pressing a key outside of the current element. Defaults to true.\n   */\n  includeButtonPress: boolean;\n  /** Object to attach the click event listener to. */\n  parent: Window | Document;\n  /**\n   * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener. Defaults to false.\n   */\n  useCapture?: boolean;\n}\n\ninterface State {\n  hasEventListener: boolean;\n}\n\nexport class ClickOutsideWrapper extends PureComponent<React.PropsWithChildren<Props>, State> {\n  static defaultProps = {\n    includeButtonPress: true,\n    parent: typeof window !== 'undefined' ? window : undefined,\n    useCapture: false,\n  };\n  myRef = createRef<HTMLDivElement>();\n  state = {\n    hasEventListener: false,\n  };\n\n  componentDidMount() {\n    this.props.parent.addEventListener('click', this.onOutsideClick, this.props.useCapture);\n    if (this.props.includeButtonPress) {\n      // Use keyup since keydown already has an event listener on window\n      this.props.parent.addEventListener('keyup', this.onOutsideClick, this.props.useCapture);\n    }\n  }\n\n  componentWillUnmount() {\n    this.props.parent.removeEventListener('click', this.onOutsideClick, this.props.useCapture);\n    if (this.props.includeButtonPress) {\n      this.props.parent.removeEventListener('keyup', this.onOutsideClick, this.props.useCapture);\n    }\n  }\n\n  onOutsideClick: EventListener = (event) => {\n    const domNode = this.myRef.current;\n\n    if (!domNode || (event.target instanceof Node && !domNode.contains(event.target))) {\n      this.props.onClick();\n    }\n  };\n\n  render() {\n    return <div ref={this.myRef}>{this.props.children}</div>;\n  }\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';\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';\n\nexport interface Props {\n  children: JSX.Element | string;\n}\n\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';\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';\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';\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';\n\nimport { t } from '../../utils/i18n';\nimport { Cascader, CascaderOption } from '../Cascader/Cascader';\n\nexport interface UnitPickerProps {\n  onChange: (item?: string) => void;\n  value?: string;\n  width?: number;\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 } = 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        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 } from '@emotion/css';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\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';\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';\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';\n\nimport { useStyles2 } from '../../themes';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { IconName } from '../../types/icon';\nimport { t } from '../../utils/i18n';\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      opacity: 0.7,\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';\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 { styleMixins, useStyles2 } from '../../themes';\nimport { getFocusStyles, getMouseFocusStyles } from '../../themes/mixins';\nimport { IconSize } from '../../types/icon';\nimport { getPropertiesForVariant } from '../Button';\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip } from '../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 ${styleMixins.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, 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';\n\nimport { useTheme2 } from '../../themes';\nimport { t } from '../../utils/i18n';\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 } 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';\nimport { PopoverContent } from '../Tooltip';\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 * @internal\n * A temporary component until we have a proper dropdown component\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    }),\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';\n\nimport { t } from '../../utils/i18n';\nimport { ButtonGroup } from '../Button';\nimport { ButtonSelect } from '../Dropdown/ButtonSelect';\nimport { ToolbarButtonVariant, ToolbarButton } from '../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: 0,\n              borderBottomLeftRadius: 0,\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    }),\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';\n\nimport { Trans } from '../../utils/i18n';\nimport { useCombinedRefs } from '../../utils/useCombinedRefs';\nimport { Button } from '../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 { 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 * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\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 { HTMLProps, useCallback } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\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 '../../utils/i18n';\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    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    addaptToParent: css({\n      label: 'combobox-addapt-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};\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';\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 && 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 && styles.optionFocused\n                )}\n                {...getItemProps({\n                  item: item,\n                  index: virtualRow.index,\n                  id: itemId,\n                  'aria-describedby': groupHeaderId,\n                })}\n              >\n                {isMultiSelect && (\n                  <div className={styles.optionAccessory}>\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                    />\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 uFuzzy from '@leeoniya/ufuzzy';\n\nimport { ALL_OPTION_VALUE, ComboboxOption } from './types';\n\n// https://catonmat.net/my-favorite-regex :)\nconst REGEXP_NON_ASCII = /[^ -~]/m;\n// https://www.asciitable.com/\n// matches only these: `~!@#$%^&*()_+-=[]\\{}|;':\",./<>?\nconst REGEXP_ONLY_SYMBOLS = /^[\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E]+$/m;\n// limit max terms in needle that qualify for re-ordering\nconst outOfOrderLimit = 5;\n// beyond 25 chars fall back to substring search\nconst maxNeedleLength = 25;\n// beyond 5 terms fall back to substring match\nconst maxFuzzyTerms = 5;\n// when number of matches <= 1e4, do ranking + sorting by quality\nconst rankThreshold = 1e4;\n\n// typo tolerance mode\nconst uf = new uFuzzy({ intraMode: 1 });\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\n//TODO: Remove when MutliCombobox async has been merged\nexport function itemFilter<T extends string | number>(inputValue: string) {\n  const lowerCasedInputValue = inputValue.toLowerCase();\n\n  return (item: ComboboxOption<T>) => {\n    return (\n      !inputValue ||\n      item.label?.toLowerCase().includes(lowerCasedInputValue) ||\n      item.value?.toString().toLowerCase().includes(lowerCasedInputValue) ||\n      item.value.toString() === ALL_OPTION_VALUE\n    );\n  };\n}\n\nexport function fuzzyFind<T extends string | number>(\n  options: Array<ComboboxOption<T>>,\n  haystack: string[],\n  needle: string\n) {\n  let matches: Array<ComboboxOption<T>> = [];\n\n  if (needle === '') {\n    matches = options;\n  }\n  // fallback to substring matches to avoid badness\n  else if (\n    // contains non-ascii\n    REGEXP_NON_ASCII.test(needle) ||\n    // is only ascii symbols (operators)\n    REGEXP_ONLY_SYMBOLS.test(needle) ||\n    // too long (often copy-paste from somewhere)\n    needle.length > maxNeedleLength ||\n    uf.split(needle).length > maxFuzzyTerms\n  ) {\n    for (let i = 0; i < haystack.length; i++) {\n      let item = haystack[i];\n\n      if (item.includes(needle)) {\n        matches.push(options[i]);\n      }\n    }\n  }\n  // fuzzy search\n  else {\n    const [idxs, info, order] = uf.search(haystack, needle, outOfOrderLimit, rankThreshold);\n\n    if (idxs?.length) {\n      if (info && order) {\n        matches = order.map((idx) => options[info.idx[idx]]);\n      } else {\n        matches = idxs.map((idx) => options[idx]);\n      }\n    }\n  }\n\n  return matches;\n}\n","import { autoUpdate, autoPlacement, size, useFloating } from '@floating-ui/react';\nimport { useMemo, useRef, useState } from 'react';\n\nimport { measureText } from '../../utils';\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 '../../utils/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 { useCallback, useId, useMemo } from 'react';\n\nimport { useStyles2 } from '../../themes';\nimport { t } from '../../utils/i18n';\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 { 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.\nexport interface ComboboxBaseProps<T extends string | number>\n  extends Pick<\n    InputProps,\n    'placeholder' | 'autoFocus' | 'id' | 'aria-labelledby' | 'disabled' | 'loading' | 'invalid'\n  > {\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?: boolean;\n  /**\n   * Allows the user to set a value which is not in the list of options.\n   */\n  createCustomValue?: boolean;\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   * onChange handler is called with the newly selected option.\n   */\n  onChange: (option: ComboboxOption<T>) => void;\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\ntype ClearableConditionals<T extends number | string> =\n  | {\n      /**\n       * Allow the user to clear the selected value. `null` is emitted from the onChange handler\n       */\n      isClearable: true;\n      /**\n       * The onChange handler is called with `null` when clearing the Combobox.\n       */\n      onChange: (option: ComboboxOption<T> | null) => void;\n    }\n  | { isClearable?: false; onChange: (option: ComboboxOption<T>) => void };\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> &\n  AutoSizeConditionals &\n  ClearableConditionals<T>;\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 = false,\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    loading,\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      onChange(selectedItem);\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 suffixIcon = asyncLoading\n    ? 'spinner'\n    : // If it's loading, show loading icon. Otherwise, icon indicating menu state\n      isOpen\n      ? 'search'\n      : 'angle-down';\n\n  const inputSuffix = (\n    <>\n      {value && 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      <Icon name={suffixIcon} />\n    </>\n  );\n\n  return (\n    <div className={isAutoSize ? styles.addaptToParent : undefined}>\n      <InputComponent\n        width={isAutoSize ? undefined : width}\n        {...(isAutoSize ? { minWidth, maxWidth } : {})}\n        autoFocus={autoFocus}\n        onBlur={onBlur}\n        disabled={disabled}\n        loading={loading}\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>\n        <div\n          className={cx(styles.menu, !isOpen && styles.menuClosed)}\n          style={floatStyles}\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    </div>\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';\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}\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      ...otherProps\n    }: FieldProps,\n    ref\n  ) => {\n    const styles = useStyles2(getFieldStyles);\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) => ({\n  field: css({\n    display: 'flex',\n    flexDirection: 'column',\n    marginBottom: theme.spacing(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';\n\nimport { useStyles2 } from '../../../themes';\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';\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';\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';\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';\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';\n\nimport { t } from '../../utils/i18n';\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 = 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      options.push({\n        label: info.name,\n        value: info.zone,\n        searchIndex: getSearchIndex(info, now),\n      });\n\n      return options;\n    }, []);\n\n    return {\n      label: group.name,\n      options,\n    };\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 = (info: TimeZoneInfo, timestamp: number): string => {\n  const parts: string[] = [\n    toLower(info.name),\n    toLower(info.abbreviation),\n    toLower(formatUtcOffset(timestamp, info.zone)),\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';\n\nimport { ComboboxOption } from '../Combobox/types';\n\nexport const quickOptions: TimeOption[] = [\n  { from: 'now-5m', to: 'now', display: 'Last 5 minutes' },\n  { from: 'now-15m', to: 'now', display: 'Last 15 minutes' },\n  { from: 'now-30m', to: 'now', display: 'Last 30 minutes' },\n  { from: 'now-1h', to: 'now', display: 'Last 1 hour' },\n  { from: 'now-3h', to: 'now', display: 'Last 3 hours' },\n  { from: 'now-6h', to: 'now', display: 'Last 6 hours' },\n  { from: 'now-12h', to: 'now', display: 'Last 12 hours' },\n  { from: 'now-24h', to: 'now', display: 'Last 24 hours' },\n  { from: 'now-2d', to: 'now', display: 'Last 2 days' },\n  { from: 'now-7d', to: 'now', display: 'Last 7 days' },\n  { from: 'now-30d', to: 'now', display: 'Last 30 days' },\n  { from: 'now-90d', to: 'now', display: 'Last 90 days' },\n  { from: 'now-6M', to: 'now', display: 'Last 6 months' },\n  { from: 'now-1y', to: 'now', display: 'Last 1 year' },\n  { from: 'now-2y', to: 'now', display: 'Last 2 years' },\n  { from: 'now-5y', to: 'now', display: 'Last 5 years' },\n  { from: 'now-1d/d', to: 'now-1d/d', display: 'Yesterday' },\n  { from: 'now-2d/d', to: 'now-2d/d', display: 'Day before yesterday' },\n  { from: 'now-7d/d', to: 'now-7d/d', display: 'This day last week' },\n  { from: 'now-1w/w', to: 'now-1w/w', display: 'Previous week' },\n  { from: 'now-1M/M', to: 'now-1M/M', display: 'Previous month' },\n  { from: 'now-1Q/fQ', to: 'now-1Q/fQ', display: 'Previous fiscal quarter' },\n  { from: 'now-1y/y', to: 'now-1y/y', display: 'Previous year' },\n  { from: 'now-1y/fy', to: 'now-1y/fy', display: 'Previous fiscal year' },\n  { from: 'now/d', to: 'now/d', display: 'Today' },\n  { from: 'now/d', to: 'now', display: 'Today so far' },\n  { from: 'now/w', to: 'now/w', display: 'This week' },\n  { from: 'now/w', to: 'now', display: 'This week so far' },\n  { from: 'now/M', to: 'now/M', display: 'This month' },\n  { from: 'now/M', to: 'now', display: 'This month so far' },\n  { from: 'now/y', to: 'now/y', display: 'This year' },\n  { from: 'now/y', to: 'now', display: 'This year so far' },\n  { from: 'now/fQ', to: 'now', display: 'This fiscal quarter so far' },\n  { from: 'now/fQ', to: 'now/fQ', display: 'This fiscal quarter' },\n  { from: 'now/fy', to: 'now', display: 'This fiscal year so far' },\n  { from: 'now/fy', to: 'now/fy', display: 'This fiscal year' },\n];\n\nexport const monthOptions: Array<ComboboxOption<number>> = [\n  { label: 'January', value: 0 },\n  { label: 'February', value: 1 },\n  { label: 'March', value: 2 },\n  { label: 'April', value: 3 },\n  { label: 'May', value: 4 },\n  { label: 'June', value: 5 },\n  { label: 'July', value: 6 },\n  { label: 'August', value: 7 },\n  { label: 'September', value: 8 },\n  { label: 'October', value: 9 },\n  { label: 'November', value: 10 },\n  { label: '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';\n\nimport { useStyles2 } from '../../../themes';\nimport { t, Trans } from '../../../utils/i18n';\nimport { Button } from '../../Button';\nimport { Combobox } from '../../Combobox/Combobox';\nimport { Field } from '../../Forms/Field';\nimport { Tab, TabContent, TabsBar } from '../../Tabs';\nimport { TimeZonePicker } from '../TimeZonePicker';\nimport { TimeZoneDescription } from '../TimeZonePicker/TimeZoneDescription';\nimport { TimeZoneOffset } from '../TimeZonePicker/TimeZoneOffset';\nimport { TimeZoneTitle } from '../TimeZonePicker/TimeZoneTitle';\nimport { monthOptions } 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>\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={monthOptions}\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  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';\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 { dateMath, dateTimeParse, isDateTime, TimeRange, TimeZone } from '@grafana/data';\n\nexport function isValid(value: string, roundUp?: boolean, timeZone?: TimeZone): boolean {\n  if (isDateTime(value)) {\n    return value.isValid();\n  }\n\n  if (dateMath.isMathString(value)) {\n    return dateMath.isValid(value);\n  }\n\n  const parsed = dateTimeParse(value, { roundUp, timeZone });\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 { BootData } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\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';\nconst weekStarts: ComboboxOption[] = [\n  { value: '', label: 'Default' },\n  { value: 'saturday', label: 'Saturday' },\n  { value: 'sunday', label: 'Sunday' },\n  { value: 'monday', label: 'Monday' },\n];\n\nexport function isWeekStart(value: string): value is WeekStart {\n  return ['saturday', 'sunday', 'monday'].includes(value);\n}\n\ndeclare global {\n  interface Window {\n    grafanaBootData?: BootData;\n  }\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\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]);\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';\n\nimport { useStyles2 } from '../../../themes';\nimport { t } from '../../../utils/i18n';\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  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      },\n    }),\n    body: css({\n      zIndex: theme.zIndex.modal,\n      backgroundColor: theme.colors.background.primary,\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      [`${hasActiveSelector}, .react-calendar__tile--active, .react-calendar__tile--active:hover`]: {\n        color: theme.colors.primary.contrastText,\n        fontWeight: theme.typography.fontWeightMedium,\n        background: theme.colors.primary.main,\n        border: '0px',\n      },\n\n      '.react-calendar__tile--rangeEnd, .react-calendar__tile--rangeStart': {\n        padding: 0,\n        border: '0px',\n        color: theme.colors.primary.contrastText,\n        fontWeight: theme.typography.fontWeightMedium,\n        background: theme.colors.primary.main,\n\n        abbr: {\n          backgroundColor: theme.colors.primary.main,\n          borderRadius: '100px',\n          display: 'block',\n          paddingTop: '2px',\n          height: '26px',\n        },\n      },\n\n      [`${hasActiveSelector}, .react-calendar__tile--rangeStart`]: {\n        borderTopLeftRadius: '20px',\n        borderBottomLeftRadius: '20px',\n      },\n\n      [`${hasActiveSelector}, .react-calendar__tile--rangeEnd`]: {\n        borderTopRightRadius: '20px',\n        borderBottomRightRadius: '20px',\n      },\n    }),\n  };\n};\n","import { Trans } from '../../../utils/i18n';\nimport { Button } from '../../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';\n\nimport { Trans, t } from '../../../utils/i18n';\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';\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.primary,\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';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { t, Trans } from '../../../utils/i18n';\nimport { Button } from '../../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 { 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\"'),\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);\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 raw: RawTimeRange = { from: from.value, to: to.value };\n    navigator.clipboard.writeText(JSON.stringify(raw));\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  const fiscalYearMessage = t('time-picker.range-content.fiscal-year', 'Fiscal year');\n\n  const fyTooltip = (\n    <div className={style.tooltip}>\n      {rangeUtil.isFiscal(value) ? (\n        <Tooltip\n          content={`${fiscalYearMessage}: ${fiscalYear.from.format('MMM-DD')} - ${fiscalYear.to.format('MMM-DD')}`}\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);\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 });\n  }\n\n  if (value.endsWith('Z')) {\n    const dt = dateTimeParse(value);\n    return dateTimeFormat(dt, { timeZone });\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';\n\nimport { useStyles2 } from '../../../themes';\nimport { t } from '../../../utils/i18n';\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\nexport const mapOptionToTimeRange = (option: TimeOption, timeZone?: TimeZone): TimeRange => {\n  return rangeUtil.convertRawToRange({ from: option.from, to: option.to }, timeZone);\n};\n\nexport const mapRangeToTimeOption = (range: TimeRange, timeZone?: TimeZone): TimeOption => {\n  const from = dateTimeFormat(range.from, { timeZone });\n  const to = dateTimeFormat(range.to, { timeZone });\n\n  return {\n    from,\n    to,\n    display: `${from} to ${to}`,\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';\n\nimport { useStyles2, useTheme2 } from '../../../themes';\nimport { getFocusStyles } from '../../../themes/mixins';\nimport { t, Trans } from '../../../utils/i18n';\nimport { FilterInput } from '../../FilterInput/FilterInput';\nimport { Icon } from '../../Icon/Icon';\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          <a\n            className={styles.link}\n            href=\"https://grafana.com/docs/grafana/latest/dashboards/time-range-controls\"\n            target=\"_new\"\n          >\n            Read the documentation\n          </a>\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  link: css({\n    color: theme.colors.text.link,\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 { ToolbarButton } from '../ToolbarButton';\nimport { Tooltip } from '../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={isSynced ? 'Un sync times' : 'Sync times'}\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} from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { t, Trans } from '../../utils/i18n';\nimport { ButtonGroup } from '../Button';\nimport { getModalStyles } from '../Modal/getModalStyles';\nimport { getPortalContainer } from '../Portal/Portal';\nimport { ToolbarButton } from '../ToolbarButton';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\nimport { TimePickerContent } from './TimeRangePicker/TimePickerContent';\nimport { WeekStart } from './WeekStartPicker';\nimport { quickOptions } 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  const hasAbsolute = !rangeUtil.isRelativeTime(value.raw.from) || !rangeUtil.isRelativeTime(value.raw.to);\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      {hasAbsolute && (\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\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 || quickOptions}\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      {hasAbsolute && (\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\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\n  return (\n    <>\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 className=\"text-center\">\n        <span className={styles.utc}>{timeZoneFormatUserFriendly(timeZone)}</span>\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    }),\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 '../../../../src/themes';\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}\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  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      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';\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, useState } from 'react';\n\nimport { GrafanaTheme2, dateTime } from '@grafana/data';\n\nimport { useStyles2 } from '../../../themes';\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, 'ref' | '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 = ({\n  value,\n  minDate,\n  maxDate,\n  onChange,\n  closeOnSelect,\n  placeholder = 'Date',\n  ...rest\n}: DatePickerWithInputProps) => {\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({\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  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\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';\n\nimport { useStyles2, useTheme2 } from '../../../themes';\nimport { t, Trans } from '../../../utils/i18n';\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';\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\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 { useStyles2 } from '../../themes';\nimport { t } from '../../utils/i18n';\nimport { Button, ButtonVariant } from '../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\" />\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)}>\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 '../../../utils/i18n';\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={!isAllRowsExpanded ? 'Expand all rows' : 'Collapse all rows'}\n        name={!isAllRowsExpanded ? 'table-expand-all' : 'table-collapse-all'}\n        onClick={() => toggleAllRowsExpanded()}\n        size={'lg'}\n        tooltip={!isAllRowsExpanded ? 'Expand all rows' : 'Collapse all rows'}\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';\nimport { Icon } from '../Icon/Icon';\nimport { Pagination } from '../Pagination/Pagination';\nimport { PopoverContent, Tooltip } from '../Tooltip';\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","import { css, cx } from '@emotion/css';\nimport { useMemo } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\nimport { getTagColorsFromName } from '../../utils';\nimport { t } from '../../utils/i18n';\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 } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2, useTheme2 } from '../../themes/ThemeContext';\nimport { Trans } from '../../utils/i18n';\nimport { Button } from '../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 = ({\n  placeholder = 'New tag (enter key to add)',\n  tags = [],\n  onChange,\n  width,\n  className,\n  disabled,\n  addOnBlur,\n  invalid,\n  id,\n  autoColors = true,\n}: Props) => {\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        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\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';\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 { useStyles2 } from '../../themes';\nimport { Trans } from '../../utils/i18n';\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 { 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';\nimport { IconName } from '../../types/icon';\nimport { getTagColor, getTagColorsFromName } from '../../utils';\nimport { SkeletonComponent, attachSkeleton } from '../../utils/skeleton';\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';\n\nimport { useStyles2, useTheme2 } from '../../themes';\nimport { IconName } from '../../types/icon';\nimport { t } from '../../utils/i18n';\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            <span className={styles.moreTagsLabel}>\n              {'+ '}\n              {numTags - displayMax}\n            </span>\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 { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\nimport { IconName } from '../../types';\nimport { clearButtonStyles } from '../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} />}\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 * as React from 'react';\n\nimport { useStyles2 } from '../../themes';\nimport { IconName } from '../../types';\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 { useStyles2 } from '../../themes';\nimport { IconName } from '../../types';\nimport { t } from '../../utils/i18n';\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';\n\nimport { useStyles2 } from '../../themes';\nimport { t } from '../../utils/i18n';\nimport { Button, ButtonVariant } from '../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 placeholder={placeholder} onChange={onConfirmationTextChange} />\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';\nimport { ButtonVariant } from '../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 { 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","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","const TOKEN_MARK = 'prism-token';\n\nexport default TOKEN_MARK;\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 { 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';\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';\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 { debounce, sortBy } from 'lodash';\nimport { Editor, Plugin as SlatePlugin } from 'slate-react';\n\nimport { BootData } from '@grafana/data';\n\nimport { Typeahead } from '../components/Typeahead/Typeahead';\nimport { CompletionItem, SuggestionsState, TypeaheadInput, TypeaheadOutput } from '../types';\nimport { makeFragment, SearchFunctionType } from '../utils';\nimport { SearchFunctionMap } from '../utils/searchFunctions';\n\nimport TOKEN_MARK from './slate-prism/TOKEN_MARK';\n\nexport const TYPEAHEAD_DEBOUNCE = 250;\n\ndeclare global {\n  interface Window {\n    grafanaBootData?: BootData;\n  }\n}\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 {\n  ClearPlugin,\n  NewlinePlugin,\n  SelectionShortcutsPlugin,\n  IndentationPlugin,\n  ClipboardPlugin,\n  RunnerPlugin,\n  SuggestionsPlugin,\n} from '../../slate-plugins';\nimport { withTheme2 } from '../../themes';\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';\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';\n\nimport { useStyles2 } from '../../themes';\nimport { t } from '../../utils/i18n';\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';\nimport { Themeable2 } from '../../types';\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';\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';\nimport { IconName } from '../../types';\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 { 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, cx } from '@emotion/css';\nimport { memo, Children, ReactNode } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { IconName } from '../../types';\nimport { t } from '../../utils/i18n';\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/** @alpha */\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';\n\nimport { useStyles2 } from '../../themes';\nimport { t } from '../../utils/i18n';\nimport { getDragStyles } from '../DragHandle/DragHandle';\nimport { IconButton } from '../IconButton/IconButton';\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          {typeof title === 'string' && (\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              <div className={styles.titleWrapper}>\n                <Text element=\"h3\" {...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                {tabs && <div className={styles.tabsWrapper}>{tabs}</div>}\n              </div>\n            </div>\n          )}\n          {typeof title !== 'string' && title}\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    titleWrapper: css({\n      label: 'drawer-title',\n      overflowWrap: 'break-word',\n    }),\n    subtitle: css({\n      label: 'drawer-subtitle',\n      color: theme.colors.text.secondary,\n      paddingTop: theme.spacing(1),\n    }),\n    content: css({\n      padding: theme.spacing(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 '../../utils/i18n';\nimport { ClipboardButton } from '../ClipboardButton/ClipboardButton';\nimport { Drawer } from '../Drawer/Drawer';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { CodeEditor } from '../Monaco/CodeEditor';\nimport { Tab, TabsBar } from '../Tabs';\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 { useState } from 'react';\n\nimport { ActionModel, Field } from '@grafana/data';\n\nimport { t } from '../../utils/i18n';\nimport { Button, ButtonProps } from '../Button';\nimport { ConfirmModal } from '../ConfirmModal/ConfirmModal';\n\ntype ActionButtonProps = ButtonProps & {\n  action: ActionModel<Field>;\n};\n\n/**\n * @internal\n */\nexport function ActionButton({ action, ...buttonProps }: ActionButtonProps) {\n  const [showConfirm, setShowConfirm] = useState(false);\n\n  return (\n    <>\n      <Button\n        variant=\"primary\"\n        size=\"sm\"\n        onClick={() => setShowConfirm(true)}\n        {...buttonProps}\n        style={{ width: 'fit-content' }}\n      >\n        {action.title}\n      </Button>\n      {showConfirm && (\n        <ConfirmModal\n          isOpen={true}\n          title={t('grafana-ui.action-editor.button.confirm-action', 'Confirm action')}\n          body={action.confirmation}\n          confirmText={t('grafana-ui.action-editor.button.confirm', 'Confirm')}\n          confirmButtonVariant=\"primary\"\n          onConfirm={() => {\n            setShowConfirm(false);\n            action.onClick(new MouseEvent('click'));\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';\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';\nimport { calculateFontSize, measureText } from '../../utils/measureText';\nimport { clearButtonStyles } from '../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    width: `${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 { 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 { 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';\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 { isFunction } from 'lodash';\n\nimport { ThresholdsConfig, ThresholdsMode, VizOrientation, getFieldConfigWithMinMax } from '@grafana/data';\nimport { BarGaugeDisplayMode, BarGaugeValueMode, TableCellDisplayMode } from '@grafana/schema';\n\nimport { BarGauge } from '../../BarGauge/BarGauge';\nimport { DataLinksContextMenu, DataLinksContextMenuApi } from '../../DataLinks/DataLinksContextMenu';\nimport { TableCellProps } from '../types';\nimport { getAlignmentFactor, getCellOptions } 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 hasLinks = Boolean(getLinks().length);\n  const alignmentFactors = getAlignmentFactor(field, displayValue, cell.row.index);\n\n  const renderComponent = (menuProps: DataLinksContextMenuApi) => {\n    const { openMenu, targetClassName } = menuProps;\n\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        onClick={openMenu}\n        className={targetClassName}\n        itemSpacing={1}\n        lcdCellWidth={8}\n        displayMode={barGaugeMode}\n        valueDisplayMode={valueDisplayMode}\n      />\n    );\n  };\n\n  return (\n    <div {...cellProps} className={tableStyles.cellContainer}>\n      {hasLinks ? (\n        <DataLinksContextMenu links={getLinks} style={{ display: 'flex', width: '100%' }}>\n          {(api) => renderComponent(api)}\n        </DataLinksContextMenu>\n      ) : (\n        renderComponent({})\n      )}\n    </div>\n  );\n};\n","import { getCellLinks } from '../../../utils';\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 &&\n        links.map((link, idx) => {\n          return (\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[];\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 { IconSize } from '../../types/icon';\nimport { t } from '../../utils/i18n';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { TooltipPlacement } from '../Tooltip';\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 { cx } from '@emotion/css';\nimport { ReactElement } from 'react';\nimport * as React from 'react';\n\nimport { DisplayValue, formattedValueToString } from '@grafana/data';\nimport { TableCellDisplayMode } from '@grafana/schema';\n\nimport { useStyles2 } from '../../../themes';\nimport { getCellLinks } from '../../../utils';\nimport { clearLinkButtonStyles } from '../../Button';\nimport { DataLinksContextMenu } from '../../DataLinks/DataLinksContextMenu';\nimport { CellActions } from '../CellActions';\nimport { TableCellInspectorMode } from '../TableCellInspector';\nimport { TableStyles } from '../TableRT/styles';\nimport { TableCellProps, CustomCellRendererProps, TableCellOptions } from '../types';\nimport { getCellColors, getCellOptions } 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  const hasLinks = Boolean(getCellLinks(field, row)?.length);\n  const clearButtonStyle = useStyles2(clearLinkButtonStyles);\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\n  return (\n    <div key={key} {...rest} className={cellStyle}>\n      {hasLinks ? (\n        <DataLinksContextMenu links={() => getCellLinks(field, row) || []}>\n          {(api) => {\n            if (api.openMenu) {\n              return (\n                <button\n                  className={cx(clearButtonStyle, getLinkStyle(tableStyles, cellOptions, api.targetClassName))}\n                  onClick={api.openMenu}\n                >\n                  {value}\n                </button>\n              );\n            } else {\n              return <div className={getLinkStyle(tableStyles, cellOptions, api.targetClassName)}>{value}</div>;\n            }\n          }}\n        </DataLinksContextMenu>\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\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 definied 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\nfunction getLinkStyle(tableStyles: TableStyles, cellOptions: TableCellOptions, targetClassName: string | undefined) {\n  if (cellOptions.type === TableCellDisplayMode.Auto) {\n    return cx(tableStyles.cellLink, targetClassName);\n  }\n\n  return cx(tableStyles.cellLinkForColoredCell, targetClassName);\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 * as React from 'react';\n\nimport { getCellLinks } from '../../../utils';\nimport { DataLinksContextMenu } from '../../DataLinks/DataLinksContextMenu';\nimport { TableCellDisplayMode, TableCellProps } from '../types';\nimport { getCellOptions } 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  const hasLinks = Boolean(getCellLinks(field, row)?.length);\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    <div {...cellProps} className={tableStyles.cellContainer}>\n      {/* If there are data links/actions, we render them with image */}\n      {/* Otherwise we simply render the image */}\n      {hasLinks ? (\n        <DataLinksContextMenu\n          style={{ height: tableStyles.cellHeight - DATALINKS_HEIGHT_OFFSET, width: 'auto' }}\n          links={() => getCellLinks(field, row) || []}\n        >\n          {(api) => {\n            if (api.openMenu) {\n              return (\n                <div\n                  onClick={api.openMenu}\n                  role=\"button\"\n                  tabIndex={0}\n                  onKeyDown={(e: React.KeyboardEvent) => {\n                    if (e.key === 'Enter' && api.openMenu) {\n                      // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/consistent-type-assertions\n                      api.openMenu(e as any);\n                    }\n                  }}\n                >\n                  {img}\n                </div>\n              );\n            } else {\n              return img;\n            }\n          }}\n        </DataLinksContextMenu>\n      ) : (\n        img\n      )}\n    </div>\n  );\n};\n","import { css, cx } from '@emotion/css';\nimport { isString } from 'lodash';\n\nimport { useStyles2 } from '../../../themes';\nimport { getCellLinks } from '../../../utils';\nimport { Button, clearLinkButtonStyles } from '../../Button';\nimport { DataLinksContextMenu } from '../../DataLinks/DataLinksContextMenu';\nimport { CellActions } from '../CellActions';\nimport { TableCellInspectorMode } from '../TableCellInspector';\nimport { TableCellProps } from '../types';\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    displayValue = JSON.stringify(value, null, ' ');\n  }\n\n  const hasLinks = Boolean(getCellLinks(field, row)?.length);\n  const clearButtonStyle = useStyles2(clearLinkButtonStyles);\n\n  return (\n    <div {...cellProps} className={inspectEnabled ? tableStyles.cellContainerNoOverflow : tableStyles.cellContainer}>\n      <div className={cx(tableStyles.cellText, txt)}>\n        {hasLinks ? (\n          <DataLinksContextMenu links={() => getCellLinks(field, row) || []}>\n            {(api) => {\n              if (api.openMenu) {\n                return (\n                  <Button className={cx(clearButtonStyle)} onClick={api.openMenu}>\n                    {displayValue}\n                  </Button>\n                );\n              } else {\n                return <>{displayValue}</>;\n              }\n            }}\n          </DataLinksContextMenu>\n        ) : (\n          <div className={tableStyles.cellText}>{displayValue}</div>\n        )}\n      </div>\n      {inspectEnabled && <CellActions {...props} previewMode={TableCellInspectorMode.code} />}\n    </div>\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  ensureTimeField,\n  Field,\n  fieldReducers,\n  FieldType,\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';\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      if (field.type === FieldType.time) {\n        data[0] = ensureTimeField(field).values;\n      } else {\n        data[0] = vals;\n      }\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  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}\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      scaleKey,\n      min: hardMin,\n      max: hardMax,\n      softMin,\n      softMax,\n      range,\n      direction,\n      orientation,\n      centeredZero,\n      decimals,\n      stackingMode,\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: 0.1,\n        hard: hardMin ?? -Infinity,\n        soft: softMin || 0,\n        mode: softMinMode,\n      },\n      max: {\n        pad: 0.1,\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    let 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}\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 {\n  DataFrame,\n  FieldConfig,\n  FieldSparkline,\n  FieldType,\n  isLikelyAscendingVector,\n  sortDataFrame,\n  applyNullInsertThreshold,\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","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';\nimport { UPlotChart } from '../uPlot/Plot';\nimport { UPlotConfigBuilder } from '../uPlot/config/UPlotConfigBuilder';\nimport { preparePlotData2, getStackingGroups } from '../uPlot/utils';\n\nimport { 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    let { min, max } = this.state.alignedDataFrame.fields[1].state?.range!;\n    const noValue = +this.state.alignedDataFrame.fields[1].config?.noValue!;\n\n    if (!Number.isNaN(noValue)) {\n      min = Math.min(min!, +noValue);\n      max = Math.max(max!, +noValue);\n    }\n\n    if (min === max) {\n      if (min === 0) {\n        max = 100;\n      } else {\n        min = 0;\n        max! *= 2;\n      }\n\n      return [min, max!];\n    }\n\n    return [Math.max(min!, field.config.min ?? -Infinity), Math.min(max!, field.config.max ?? Infinity)];\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';\nimport { measureText } from '../../../utils';\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 { 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={row.isExpanded ? 'Collapse row' : 'Expand row'}\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  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  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';\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 (fieldTableOptions.hidden || field.type === FieldType.nestedFrames) {\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  }\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\n      // that the first record is representative\n      // of the overall data\n      if (numValues <= 30) {\n        for (const field of stringFields) {\n          const fieldLength = field.values[0].length;\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","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';\n\nimport { ButtonSelect, Checkbox, FilterInput, Label, Stack } from '../..';\nimport { useStyles2, useTheme2 } from '../../../themes';\nimport { t, Trans } from '../../../utils/i18n';\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';\n\nimport { Button, ClickOutsideWrapper, IconButton, Label, Stack } from '../..';\nimport { useStyles2, useTheme2 } from '../../../themes';\nimport { t, Trans } from '../../../utils/i18n';\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 '../..';\nimport { useStyles2 } from '../../../themes';\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';\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';\n\nimport { useStyles2 } from '../../themes';\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=\"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, { 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.PointerEvent, 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.PointerEvent, 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';\nimport { ReactUtils } from '../../utils';\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}>{ReactUtils.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';\n\nimport { t } from '../../utils/i18n';\nimport { Dropdown } from '../Dropdown/Dropdown';\nimport { ToolbarButton } from '../ToolbarButton';\nimport { TooltipPlacement } from '../Tooltip';\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';\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';\nimport { getFocusStyles, getMouseFocusStyles } from '../../themes/mixins';\nimport { Button } from '../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';\nimport { Icon } from '../Icon/Icon';\nimport { Tooltip } from '../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';\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';\n\nimport { useStyles2, useTheme2 } from '../../themes';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { usePointerDistance } from '../../utils';\nimport { DelayRender } from '../../utils/DelayRender';\nimport { useElementSelection } from '../ElementSelectionContext/ElementSelectionContext';\nimport { Icon } from '../Icon/Icon';\nimport { LoadingBar } from '../LoadingBar/LoadingBar';\nimport { Text } from '../Text/Text';\nimport { Tooltip } from '../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={!title ? 'toggle collapse panel' : undefined}\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 content={onCancelQuery ? 'Stop streaming' : 'Streaming'}>\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=\"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 width={loadingBarWidth} ariaLabel=\"Panel loading bar\" />\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 message={statusMessage} onClick={statusMessageOnClick} ariaLabel=\"Panel status\" />\n            </div>\n          )}\n        </>\n      )}\n\n      {hasHeader && (\n        <div\n          className={cx(styles.headerContainer, dragClass)}\n          style={headerStyles}\n          data-testid=\"header-container\"\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 message={statusMessage} onClick={statusMessageOnClick} ariaLabel=\"Panel status\" />\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  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';\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';\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  // Key the virtualizer for expanded rows\n  const expandedKey = Object.keys(tableState.expanded).join('|');\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        // This component needs an unmount/remount when row height, page changes, or expanded rows change\n        key={`${rowHeight}${pageIndex}${expandedKey}`}\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,\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    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 { TableCellHeight } from '@grafana/schema';\n\nimport { useTheme2 } from '../../../themes';\nimport { Trans } from '../../../utils/i18n';\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';\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';\n\nimport { stylesFactory, withTheme2 } from '../../themes';\nimport { Themeable2 } from '../../types/theme';\nimport { t, Trans } from '../../utils/i18n';\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\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 #222',\n      background: theme.colors.success.main,\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';\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';\nimport { clearButtonStyles } from '../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';\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 { 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.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): 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      field.config.custom?.hideFrom?.viz\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 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    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  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","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';\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';\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';\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';\n\nimport { useStyles2 } from '../../themes';\nimport { t } from '../../utils/i18n';\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\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';\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';\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';\n\nimport { styleMixins } from '../../themes';\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Trans } from '../../utils/i18n';\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 = styleMixins.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 { 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 { 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';\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';\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 [open, toggleOpen] = useState<boolean>(isOpen);\n  const styles = useStyles2(collapsableSectionStyles);\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?.(!open);\n    toggleOpen(!open);\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]: !open && !unmountContentWhenClosed,\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={open && !loading}\n          aria-controls={`collapse-content-${id}`}\n          aria-labelledby={buttonLabelId}\n        >\n          {loading ? (\n            <Spinner className={styles.spinner} />\n          ) : (\n            <Icon name={open ? '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 ? open && 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 { Field, LinkModel } from '@grafana/data';\n\nimport { ButtonProps, Button } from '../Button';\n\ntype DataLinkButtonProps = {\n  link: LinkModel<Field>;\n  buttonProps?: ButtonProps;\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';\n\nimport { Field, GrafanaTheme2, LinkModel } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\nimport { Trans } from '../../utils/i18n';\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';\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\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 { 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/lib/useClickAway';\n\nimport { VariableSuggestion, GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\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/lib/usePrevious';\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';\nimport { useStyles2 } from '../../themes';\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';\n\nimport { useStyles2 } from '../../themes/index';\nimport { t, Trans } from '../../utils/i18n';\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\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\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            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 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 value={value.oneClick || false} onChange={onOneClickChanged} />\n          </Field>\n        )}\n\n        {isLast && (\n          <div className={styles.infoText}>\n            <Trans i18nKey=\"grafana-ui.data-link-editor.info\">\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          </div>\n        )}\n      </div>\n    );\n  }\n);\n\nDataLinkEditor.displayName = 'DataLinkEditor';\n","import { useState } from 'react';\n\nimport { DataFrame, DataLink, VariableSuggestion } from '@grafana/data';\n\nimport { Trans } from '../../../utils/i18n';\nimport { Button } from '../../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';\nimport { SkeletonComponent, attachSkeleton } from '../../utils/skeleton';\nimport { Icon } from '../Icon/Icon';\nimport { PopoverContent } from '../Tooltip';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\nexport type BadgeColor = 'blue' | 'red' | 'green' | 'orange' | 'purple' | 'darkgrey';\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  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';\n\nimport { useStyles2 } from '../../../themes';\nimport { t } from '../../../utils/i18n';\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  // @ts-ignore - https://github.com/microsoft/TypeScript/issues/27808\n  const url = item.url ?? item.fetch?.url ?? '';\n\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';\n\nimport { useStyles2 } from '../../../themes';\nimport { t } from '../../../utils/i18n';\nimport { Button } from '../../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 { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\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';\n\nimport { t } from '../../utils/i18n';\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';\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 { 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';\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';\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 * as React from 'react';\n\nimport { InlineField } from '../../components/Forms/InlineField';\nimport { t } from '../../utils/i18n';\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';\n\nimport { useStyles2 } from '../../themes';\nimport { t, Trans } from '../../utils/i18n';\nimport { Button } from '../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/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';\n\nimport { useStyles2 } from '../../themes';\nimport { t } from '../../utils/i18n';\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';\n\nimport { InlineSwitch } from '../../components/Switch/Switch';\nimport { t, Trans } from '../../utils/i18n';\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';\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 '../../utils/i18n';\nimport { Button } from '../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\n  onChange: (event: ChangeEvent<HTMLTextAreaElement>) => void;\n  onClick: (event: MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport const CertificationKey = ({ hasCert, label, onChange, onClick, placeholder }: Props) => {\n  return (\n    <InlineFieldRow>\n      <InlineField label={label} labelWidth={14} disabled={hasCert}>\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';\n\nimport { t, Trans } from '../../utils/i18n';\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/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';\n\nimport { useTheme2 } from '../../themes';\nimport { t, Trans } from '../../utils/i18n';\nimport { Alert } from '../Alert/Alert';\nimport { Button } from '../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';\n\nimport { InlineSwitch } from '../../components/Switch/Switch';\nimport { t, Trans } from '../../utils/i18n';\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 { GrafanaTheme, GrafanaTheme2 } from '@grafana/data';\n\nexport const getSegmentStyles = (theme: GrafanaTheme | GrafanaTheme2) => {\n  const palette = 'v1' in theme ? theme.v1.palette : theme.palette;\n\n  return {\n    segment: css({\n      cursor: 'pointer',\n      width: 'auto',\n    }),\n\n    queryPlaceholder: css({\n      color: palette.gray2,\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';\nimport { clearButtonStyles } from '../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';\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 { AsyncState } from 'react-use/lib/useAsync';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\nimport { t } from '../../utils/i18n';\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/lib/useClickAway';\n\nimport { useStyles2 } from '../../themes';\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';\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';\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';\nimport { IconName } from '../../types';\nimport { ComponentSize } from '../../types/size';\nimport { Button, ButtonFill, ButtonVariant } from '../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';\n\nimport { t } from '../../utils/i18n';\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 fieldNameByRegexMatcherItem: FieldMatcherUIRegistryItem<string> = {\n  id: FieldMatcherID.byRegexp,\n  component: FieldNameByRegexMatcherEditor,\n  matcher: fieldMatchers.get(FieldMatcherID.byRegexp),\n  name: 'Fields with name matching regex',\n  description: 'Set properties for fields with names matching a regex',\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';\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';\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 fieldNameMatcherItem: FieldMatcherUIRegistryItem<string> = {\n  id: FieldMatcherID.byName,\n  component: FieldNameMatcherEditor,\n  matcher: fieldMatchers.get(FieldMatcherID.byName),\n  name: 'Fields with name',\n  description: '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';\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 fieldNamesMatcherItem: FieldMatcherUIRegistryItem<ByNamesMatcherOptions> = {\n  id: FieldMatcherID.byNames,\n  component: FieldNamesMatcherEditor,\n  matcher: fieldMatchers.get(FieldMatcherID.byNames),\n  name: 'Fields with name',\n  description: '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';\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 allFieldTypeIconOptions: Array<SelectableValue<FieldType>> = [\n  { value: FieldType.number, label: 'Number', icon: getFieldTypeIconName(FieldType.number) },\n  { value: FieldType.string, label: 'String', icon: getFieldTypeIconName(FieldType.string) },\n  { value: FieldType.time, label: 'Time', icon: getFieldTypeIconName(FieldType.time) },\n  { value: FieldType.boolean, label: 'Boolean', icon: getFieldTypeIconName(FieldType.boolean) },\n  { value: FieldType.trace, label: 'Traces', icon: getFieldTypeIconName(FieldType.trace) },\n  { value: FieldType.enum, label: 'Enum', icon: getFieldTypeIconName(FieldType.enum) },\n  { value: FieldType.other, label: 'Other', icon: getFieldTypeIconName(FieldType.other) },\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 allFieldTypeIconOptions) {\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 allFieldTypeIconOptions) {\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 fieldTypeMatcherItem: FieldMatcherUIRegistryItem<string> = {\n  id: FieldMatcherID.byType,\n  component: FieldTypeMatcherEditor,\n  matcher: fieldMatchers.get(FieldMatcherID.byType),\n  name: 'Fields with type',\n  description: 'Set properties for fields of a specific type (number, string, boolean)',\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 { ComparisonOperation } from '@grafana/schema';\n\nimport { useStyles2 } from '../../themes';\nimport { t } from '../../utils/i18n';\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 fieldValueMatcherItem: FieldMatcherUIRegistryItem<FieldValueMatcherConfig> = {\n  id: FieldMatcherID.byValue,\n  component: FieldValueMatcherEditor,\n  matcher: fieldMatchers.get(FieldMatcherID.byValue),\n  name: 'Fields with values',\n  description: 'Set properties for fields with reducer condition',\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';\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}\n\n// Not exported globally... but used in grafana core\nexport function RefIDPicker({ value, data, onChange, placeholder }: 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      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}\n\nexport function RefIDMultiPicker({ value, data, onChange, placeholder }: 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\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\n    return recoverMultiRefIdMissing(newRefIds, priorSelectionState.refIds, priorSelectionState.value);\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      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: `Query: ${refId ?? '(missing refId)'}`,\n      description: getFramesDescription(frames),\n    });\n  }\n\n  return values;\n}\n\nfunction getFramesDescription(frames: DataFrame[]): string {\n  return `Frames (${frames.length}):\n    ${frames\n      .slice(0, Math.min(3, frames.length))\n      .map((x) => getFrameDisplayName(x))\n      .join(', ')} ${frames.length > 3 ? '...' : ''}`;\n}\n\n/**\n * Registry item for UI to configure \"fields by frame refId\"-matcher.\n * @public\n */\nexport const fieldsByFrameRefIdItem: 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: 'Fields returned by query',\n  description: 'Set properties for fields from a specific query',\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 { fieldNameByRegexMatcherItem } from './FieldNameByRegexMatcherEditor';\nimport { fieldNameMatcherItem } from './FieldNameMatcherEditor';\nimport { fieldNamesMatcherItem } from './FieldNamesMatcherEditor';\nimport { fieldTypeMatcherItem } from './FieldTypeMatcherEditor';\nimport { fieldValueMatcherItem } from './FieldValueMatcher';\nimport { fieldsByFrameRefIdItem } from './FieldsByFrameRefIdMatcher';\nimport { FieldMatcherUIRegistryItem } from './types';\n\nexport const fieldMatchersUI = new Registry<FieldMatcherUIRegistryItem<any>>(() => [\n  fieldNameMatcherItem,\n  fieldNameByRegexMatcherItem,\n  fieldTypeMatcherItem,\n  fieldsByFrameRefIdItem,\n  fieldNamesMatcherItem,\n  fieldValueMatcherItem,\n]);\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';\nimport { IconName, IconSize } from '../../types';\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","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';\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 { 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';\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';\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 { cx, css } from '@emotion/css';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\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';\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 { 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 { css } from '@emotion/css';\nimport { forwardRef } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\nimport { t } from '../../utils/i18n';\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);\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';\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';\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 { useStyles2 } from '../../themes';\nimport { t } from '../../utils/i18n';\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';\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> extends Omit<ComboboxBaseProps<T>, 'value' | 'onChange'> {\n  value?: T[] | Array<ComboboxOption<T>>;\n  onChange: (option: Array<ComboboxOption<T>>) => void;\n  enableAllOption?: boolean;\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  } = 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          // 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_OTION)\n            const realOptions = options.slice(1);\n            let newSelectedItems = isAllFilteredSelected && inputValue === '' ? [] : realOptions;\n\n            if (!isAllFilteredSelected && inputValue !== '') {\n              // Select all currently filtered items and deduplicate\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            removeSelectedItem(newSelectedItem);\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              {/* eslint-disable-next-line @grafana/no-untranslated-strings */}\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            )}\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>\n        <div\n          className={cx(styles.menu, !isOpen && styles.menuClosed)}\n          style={{\n            ...floatStyles,\n            width: floatStyles.width + 24, // account for checkbox\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';\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';\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';\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';\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';\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';\n\nimport { useStyles2 } from '../../themes';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { ComponentSize } from '../../types/size';\nimport { trimFileName } from '../../utils/file';\nimport { t } from '../../utils/i18n';\nimport { getButtonStyles } from '../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';\n\nimport { useStyles2 } from '../../themes';\nimport { trimFileName } from '../../utils/file';\nimport { t, Trans } from '../../utils/i18n';\nimport { Button } from '../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';\n\nimport { useTheme2 } from '../../themes';\nimport { t, Trans } from '../../utils/i18n';\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 { quickOptions } 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={quickOptions}\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';\n\nimport { useStyles2 } from '../../../themes';\nimport { Trans, t } from '../../../utils/i18n';\nimport { Button } from '../../Button';\nimport { Field } from '../../Forms/Field';\nimport { Icon } from '../../Icon/Icon';\nimport { getInputStyles, Input } from '../../Input/Input';\nimport { ScrollContainer } from '../../ScrollContainer/ScrollContainer';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { TimePickerTitle } from '../TimeRangePicker/TimePickerTitle';\nimport { TimeRangeList } from '../TimeRangePicker/TimeRangeList';\nimport { quickOptions } 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\nconst validOptions = quickOptions.filter((o) => isRelativeFormat(o.from));\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\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                        <Tooltip content={<TooltipContent />} placement=\"bottom\" theme=\"info\">\n                          <div>\n                            <Trans i18nKey=\"time-picker.time-range.specify\">\n                              Specify time range <Icon name=\"info-circle\" />\n                            </Trans>\n                          </div>\n                        </Tooltip>\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 TooltipContent = () => {\n  const styles = useStyles2(toolTipStyles);\n  return (\n    <>\n      <div className={styles.supported}>\n        <Trans i18nKey=\"time-picker.time-range.supported-formats\">\n          Supported formats: <code className={styles.tooltip}>now-[digit]s/m/h/d/w</code>\n        </Trans>\n      </div>\n      <div>\n        <Trans i18nKey=\"time-picker.time-range.example\">\n          Example: to select a time range from 10 minutes ago to now\n        </Trans>\n      </div>\n      <code className={styles.tooltip}>\n        <Trans i18nKey=\"time-picker.time-range.example-details\">From: now-10m To: now</Trans>\n      </code>\n      <div className={styles.link}>\n        <Trans i18nKey=\"time-picker.time-range.more-info\">\n          For more information see{' '}\n          <a href=\"https://grafana.com/docs/grafana/latest/dashboards/time-range-controls/\">\n            docs <Icon name=\"external-link-alt\" />\n          </a>\n          .\n        </Trans>\n      </div>\n    </>\n  );\n};\n\nconst toolTipStyles = (theme: GrafanaTheme2) => ({\n  supported: css({\n    marginBottom: theme.spacing(1),\n  }),\n  tooltip: css({\n    margin: 0,\n  }),\n  link: css({\n    marginTop: theme.spacing(1),\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 { styleMixins, useStyles2 } from '../../themes';\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}\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  ...props\n}: CardContainerProps) => {\n  const { oldContainer } = useStyles2(getCardContainerStyles, disableEvents, disableHover, isSelected);\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) => {\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: '8px',\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': styleMixins.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(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': styleMixins.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';\n\nimport { useStyles2 } from '../../themes';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { t } from '../../utils/i18n';\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}\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  ...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);\n\n  return (\n    <CardContainer\n      disableEvents={disabled}\n      disableHover={disableHover}\n      isSelected={isSelected}\n      className={cx(styles.container, className)}\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';\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';\n\nimport { useTheme2 } from '../../themes';\nimport { t, Trans } from '../../utils/i18n';\nimport { Tooltip } from '../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';\n\nimport { useStyles2 } from '../../themes';\nimport { t } from '../../utils/i18n';\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 ? '...' : `+${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';\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';\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';\nimport { ComponentSize } from '../../types';\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  return {\n    containerProps: {\n      ref: containerRef,\n      className: styles.container,\n    },\n    primaryProps: {\n      ref: firstPaneRef,\n      className: styles.panel,\n      style: primaryStyles,\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': `start-panel-${id}`,\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 { SelectableValue } from '@grafana/data';\nimport {\n  AxisPlacement,\n  BarAlignment,\n  GraphDrawStyle,\n  GraphGradientMode,\n  GraphThresholdsStyleMode,\n  LineInterpolation,\n  VisibilityMode,\n  StackingMode,\n} from '@grafana/schema';\n\n/**\n * @alpha\n */\nexport const graphFieldOptions: {\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    { label: 'Lines', value: GraphDrawStyle.Line },\n    { label: 'Bars', value: GraphDrawStyle.Bars },\n    { label: 'Points', value: GraphDrawStyle.Points },\n  ],\n\n  lineInterpolation: [\n    { description: 'Linear', value: LineInterpolation.Linear, icon: 'gf-interpolation-linear' },\n    { description: 'Smooth', value: LineInterpolation.Smooth, icon: 'gf-interpolation-smooth' },\n    { description: 'Step before', value: LineInterpolation.StepBefore, icon: 'gf-interpolation-step-before' },\n    { description: 'Step after', value: LineInterpolation.StepAfter, icon: 'gf-interpolation-step-after' },\n  ],\n\n  barAlignment: [\n    { description: 'Before', value: BarAlignment.Before, icon: 'gf-bar-alignment-before' },\n    { description: 'Center', value: BarAlignment.Center, icon: 'gf-bar-alignment-center' },\n    { description: 'After', value: BarAlignment.After, icon: 'gf-bar-alignment-after' },\n  ],\n\n  showPoints: [\n    { label: 'Auto', value: VisibilityMode.Auto, description: 'Show points when the density is low' },\n    { label: 'Always', value: VisibilityMode.Always },\n    { label: 'Never', value: VisibilityMode.Never },\n  ],\n\n  axisPlacement: [\n    { label: 'Auto', value: AxisPlacement.Auto, description: 'First field on the left, everything else on the right' },\n    { label: 'Left', value: AxisPlacement.Left },\n    { label: 'Right', value: AxisPlacement.Right },\n    { label: 'Hidden', value: AxisPlacement.Hidden },\n  ],\n\n  fillGradient: [\n    { label: 'None', value: GraphGradientMode.None },\n    { label: 'Opacity', value: GraphGradientMode.Opacity, description: 'Enable fill opacity gradient' },\n    { label: 'Hue', value: GraphGradientMode.Hue, description: 'Small color hue gradient' },\n    {\n      label: 'Scheme',\n      value: GraphGradientMode.Scheme,\n      description: 'Use color scheme to define gradient',\n    },\n  ],\n\n  stacking: [\n    { label: 'Off', value: StackingMode.None },\n    { label: 'Normal', value: StackingMode.Normal },\n    { label: '100%', value: StackingMode.Percent },\n  ],\n\n  thresholdsDisplayModes: [\n    { label: 'Off', value: GraphThresholdsStyleMode.Off },\n    { label: 'As lines', value: GraphThresholdsStyleMode.Line },\n    { label: 'As lines (dashed)', value: GraphThresholdsStyleMode.Dashed },\n    { label: 'As filled regions', value: GraphThresholdsStyleMode.Area },\n    { label: 'As filled regions and lines', value: GraphThresholdsStyleMode.LineAndArea },\n    { label: 'As filled regions and lines (dashed)', value: GraphThresholdsStyleMode.DashedAndArea },\n  ],\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';\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 * 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 { 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 { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport * as React from 'react';\nimport { useMountedState } from 'react-use';\nimport uPlot from 'uplot';\n\nimport { DataFrame, DataFrameFieldIndex } 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, dataFrameFieldIndex: DataFrameFieldIndex) => React.ReactNode;\n  mapEventToXYCoords: (\n    dataFrame: DataFrame,\n    dataFrameFieldIndex: DataFrameFieldIndex\n  ) => { 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      for (let j = 0; j < frame.length; j++) {\n        const coords = mapEventToXYCoords(frame, { fieldIndex: j, frameIndex: i });\n        if (!coords) {\n          continue;\n        }\n        markers.push(\n          <Marker {...coords} key={`${id}-marker-${i}-${j}`}>\n            {renderEventMarker(frame, { fieldIndex: j, frameIndex: i })}\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 { useStyles2 } from '../../../themes';\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[];\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\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  ) => 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 = () => [];\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}: 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  useLayoutEffect(() => {\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\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      // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n      if (!domRef.current!.contains(e.target as Node)) {\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              )\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\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            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      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.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.portal,\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';\nimport { HighlightPart } from '../../types';\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';\n\ntype Props = DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;\n\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';\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';\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 { 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';\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';\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, SeriesTable, SeriesTableRowProps, UPlotConfigBuilder, VizTooltipContainer } from '../../../components';\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","import { FormField } from './FormField/FormField';\nimport { Input, LegacyInputStatus } from './Forms/Legacy/Input/Input';\nimport { IndicatorsContainer } from './Forms/Legacy/Select/IndicatorsContainer';\nimport { NoOptionsMessage } from './Forms/Legacy/Select/NoOptionsMessage';\nimport { AsyncSelect, Select } from './Forms/Legacy/Select/Select';\nimport { Switch } from './Forms/Legacy/Switch/Switch';\nimport { SecretFormField } from './SecretFormField/SecretFormField';\n\nexport { Icon } from './Icon/Icon';\nexport { IconButton, type IconButtonVariant } from './IconButton/IconButton';\nexport { ConfirmButton } from './ConfirmButton/ConfirmButton';\nexport { DeleteButton } from './ConfirmButton/DeleteButton';\nexport { Tooltip } from './Tooltip/Tooltip';\nexport type { PopoverContent } from './Tooltip/types';\nexport { PopoverController } from './Tooltip/PopoverController';\nexport { Popover } from './Tooltip/Popover';\nexport { Toggletip } from './Toggletip/Toggletip';\nexport { Portal, getPortalContainer, PortalContainer } from './Portal/Portal';\nexport { CustomScrollbar, type ScrollbarPosition } from './CustomScrollbar/CustomScrollbar';\nexport { TabbedContainer, type TabConfig } from './TabbedContainer/TabbedContainer';\n\nexport { ClipboardButton } from './ClipboardButton/ClipboardButton';\nexport { Cascader, type CascaderOption } from './Cascader/Cascader';\nexport { Carousel } from './Carousel/Carousel';\nexport { ButtonCascader } from './ButtonCascader/ButtonCascader';\nexport { InlineToast } from './InlineToast/InlineToast';\n\nexport { LoadingPlaceholder, type LoadingPlaceholderProps } from './LoadingPlaceholder/LoadingPlaceholder';\nexport { LoadingBar, type LoadingBarProps } from './LoadingBar/LoadingBar';\nexport { ColorPicker, SeriesColorPicker } from './ColorPicker/ColorPicker';\nexport { ColorPickerInput } from './ColorPicker/ColorPickerInput';\nexport { SeriesColorPickerPopover, SeriesColorPickerPopoverWithTheme } from './ColorPicker/SeriesColorPickerPopover';\nexport { EmptySearchResult } from './EmptySearchResult/EmptySearchResult';\nexport { EmptyState } from './EmptyState/EmptyState';\nexport { UnitPicker } from './UnitPicker/UnitPicker';\nexport { StatsPicker } from './StatsPicker/StatsPicker';\nexport { RefreshPicker, defaultIntervals } from './RefreshPicker/RefreshPicker';\nexport { TimeRangePicker, type TimeRangePickerProps } from './DateTimePickers/TimeRangePicker';\nexport { TimeRangeProvider } from './DateTimePickers/TimeRangeContext';\nexport { TimePickerTooltip } from './DateTimePickers/TimeRangePicker';\nexport { TimeRangeLabel } from './DateTimePickers/TimeRangePicker/TimeRangeLabel';\nexport { TimeOfDayPicker } from './DateTimePickers/TimeOfDayPicker';\nexport { TimeZonePicker } from './DateTimePickers/TimeZonePicker';\nexport { WeekStartPicker, getWeekStart, type WeekStart, isWeekStart } from './DateTimePickers/WeekStartPicker';\nexport { DatePicker, type DatePickerProps } from './DateTimePickers/DatePicker/DatePicker';\nexport {\n  DatePickerWithInput,\n  type DatePickerWithInputProps,\n} from './DateTimePickers/DatePickerWithInput/DatePickerWithInput';\nexport { DateTimePicker } from './DateTimePickers/DateTimePicker/DateTimePicker';\nexport { List } from './List/List';\nexport { InteractiveTable, type FetchDataArgs, type FetchDataFunc } from './InteractiveTable/InteractiveTable';\nexport { TagsInput } from './TagsInput/TagsInput';\nexport { AutoSaveField } from './AutoSaveField/AutoSaveField';\nexport { Pagination } from './Pagination/Pagination';\nexport { Tag, type OnTagClick } from './Tags/Tag';\nexport { TagList } from './Tags/TagList';\nexport { FilterPill } from './FilterPill/FilterPill';\n\nexport { ConfirmModal, type ConfirmModalProps } from './ConfirmModal/ConfirmModal';\nexport { QueryField, type QueryFieldProps } from './QueryField/QueryField';\n\nexport { CodeEditor } from './Monaco/CodeEditor';\n\nexport { ReactMonacoEditorLazy as ReactMonacoEditor } from './Monaco/ReactMonacoEditorLazy';\n\nexport {\n  type Monaco,\n  type monacoTypes,\n  type MonacoEditor,\n  type MonacoOptions as CodeEditorMonacoOptions,\n  type CodeEditorSuggestionItem,\n  CodeEditorSuggestionItemKind,\n} from './Monaco/types';\nexport { variableSuggestionToCodeEditorSuggestion } from './Monaco/utils';\n\n// TODO: namespace\nexport { Modal, type Props as ModalProps } from './Modal/Modal';\nexport { ModalHeader } from './Modal/ModalHeader';\nexport { ModalTabsHeader } from './Modal/ModalTabsHeader';\nexport { ModalTabContent } from './Modal/ModalTabContent';\nexport { ModalsProvider, ModalRoot, ModalsController, ModalsContext } from './Modal/ModalsContext';\nexport { PageToolbar } from './PageLayout/PageToolbar';\n\n// Renderless\nexport { SetInterval } from './SetInterval/SetInterval';\n\nexport { Table } from './Table/Table';\nexport { TableCellInspector, TableCellInspectorMode } from './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 './Table/types';\n\nexport { TableInputCSV } from './TableInputCSV/TableInputCSV';\nexport { TabsBar } from './Tabs/TabsBar';\nexport { Tab, type TabProps } from './Tabs/Tab';\nexport { VerticalTab } from './Tabs/VerticalTab';\nexport { TabContent } from './Tabs/TabContent';\nexport { Counter } from './Tabs/Counter';\nexport { RenderUserContentAsHTML } from './RenderUserContentAsHTML/RenderUserContentAsHTML';\n\n// Visualizations\nexport {\n  BigValue,\n  BigValueColorMode,\n  BigValueGraphMode,\n  BigValueJustifyMode,\n  BigValueTextMode,\n} from './BigValue/BigValue';\nexport { Sparkline } from './Sparkline/Sparkline';\n\nexport { Gauge } from './Gauge/Gauge';\nexport { BarGauge } from './BarGauge/BarGauge';\nexport {\n  VizTooltip,\n  VizTooltipContainer,\n  SeriesTable,\n  type SeriesTableProps,\n  SeriesTableRow,\n  type SeriesTableRowProps,\n} from './VizTooltip';\nexport { VizRepeater, type VizRepeaterRenderValueProps } from './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 './PanelChrome';\nexport {\n  VizLayout,\n  type VizLayoutComponentType,\n  type VizLayoutLegendProps,\n  type VizLayoutProps,\n} from './VizLayout/VizLayout';\nexport { type VizLegendItem, SeriesVisibilityChangeBehavior } from './VizLegend/types';\nexport { VizLegend } from './VizLegend/VizLegend';\nexport { VizLegendListItem } from './VizLegend/VizLegendListItem';\n\nexport { Alert, type AlertVariant } from './Alert/Alert';\nexport { GraphSeriesToggler, type GraphSeriesTogglerAPI } from '../graveyard/Graph/GraphSeriesToggler';\nexport { Collapse, ControlledCollapse } from './Collapse/Collapse';\nexport { CollapsableSection } from './Collapse/CollapsableSection';\nexport { DataLinkButton } from './DataLinks/DataLinkButton';\nexport { FieldLinkList } from './DataLinks/FieldLinkList';\n// Panel editors\nexport { FullWidthButtonContainer } from './Button/FullWidthButtonContainer';\nexport { ClickOutsideWrapper } from './ClickOutsideWrapper/ClickOutsideWrapper';\nexport * from './SingleStatShared/index';\nexport { CallToActionCard } from './CallToActionCard/CallToActionCard';\nexport { ContextMenu, type ContextMenuProps } from './ContextMenu/ContextMenu';\nexport { Menu, type MenuProps } from './Menu/Menu';\nexport { MenuGroup, type MenuItemsGroup, type MenuGroupProps } from './Menu/MenuGroup';\nexport { MenuItem, type MenuItemProps } from './Menu/MenuItem';\nexport { WithContextMenu } from './ContextMenu/WithContextMenu';\nexport { DataLinksInlineEditor } from './DataLinks/DataLinksInlineEditor/DataLinksInlineEditor';\nexport {\n  DataLinksInlineEditorBase,\n  type DataLinksInlineEditorBaseProps,\n} from './DataLinks/DataLinksInlineEditor/DataLinksInlineEditorBase';\nexport { DataLinkInput } from './DataLinks/DataLinkInput';\nexport {\n  DataLinksContextMenu,\n  type DataLinksContextMenuProps,\n  type DataLinksContextMenuApi,\n} from './DataLinks/DataLinksContextMenu';\nexport { SeriesIcon } from './VizLegend/SeriesIcon';\nexport { InfoBox } from './InfoBox/InfoBox';\nexport { FeatureInfoBox } from './InfoBox/FeatureInfoBox';\nexport { FeatureBadge } from './FeatureBadge/FeatureBadge';\n\nexport { JSONFormatter } from './JSONFormatter/JSONFormatter';\nexport { JsonExplorer } from './JSONFormatter/json_explorer/json_explorer';\nexport {\n  ErrorBoundary,\n  ErrorBoundaryAlert,\n  type ErrorBoundaryAlertProps,\n  withErrorBoundary,\n} from './ErrorBoundary/ErrorBoundary';\nexport { ErrorWithStack } from './ErrorBoundary/ErrorWithStack';\nexport { DataSourceHttpSettings } from './DataSourceSettings/DataSourceHttpSettings';\nexport { CustomHeadersSettings } from './DataSourceSettings/CustomHeadersSettings';\nexport { AlertingSettings } from './DataSourceSettings/AlertingSettings';\nexport { SecureSocksProxySettings } from './DataSourceSettings/SecureSocksProxySettings';\nexport { TLSAuthSettings } from './DataSourceSettings/TLSAuthSettings';\nexport { CertificationKey } from './DataSourceSettings/CertificationKey';\nexport { Spinner } from './Spinner/Spinner';\nexport { FadeTransition } from './transitions/FadeTransition';\nexport { SlideOutTransition } from './transitions/SlideOutTransition';\nexport { Segment, SegmentAsync, SegmentInput, SegmentSelect, SegmentSection } from './Segment/';\nexport { Drawer } from './Drawer/Drawer';\nexport { Slider } from './Slider/Slider';\nexport { RangeSlider } from './Slider/RangeSlider';\n\n// Next-gen forms\nexport { Form } from './Forms/Form';\nexport { sharedInputStyle } from './Forms/commonStyles';\nexport { InputControl } from './InputControl';\nexport { Button, LinkButton, type ButtonVariant, ButtonGroup, type ButtonProps, clearButtonStyles } from './Button';\nexport { ToolbarButton, ToolbarButtonRow } from './ToolbarButton';\nexport { ValuePicker } from './ValuePicker/ValuePicker';\nexport { fieldMatchersUI } from './MatchersUI/fieldMatchersUI';\nexport { Link } from './Link/Link';\nexport { TextLink } from './Link/TextLink';\nexport { Text } from './Text/Text';\nexport { Box } from './Layout/Box/Box';\nexport { Stack } from './Layout/Stack/Stack';\nexport { Grid } from './Layout/Grid/Grid';\nexport { Space } from './Layout/Space';\nexport { ScrollContainer } from './ScrollContainer/ScrollContainer';\n\nexport { Label } from './Forms/Label';\nexport { Field, type FieldProps } from './Forms/Field';\nexport { Legend } from './Forms/Legend';\nexport { FieldSet } from './Forms/FieldSet';\nexport { FieldValidationMessage } from './Forms/FieldValidationMessage';\nexport { InlineField } from './Forms/InlineField';\nexport { InlineSegmentGroup } from './Forms/InlineSegmentGroup';\nexport { InlineLabel } from './Forms/InlineLabel';\nexport { InlineFieldRow } from './Forms/InlineFieldRow';\nexport { FieldArray } from './Forms/FieldArray';\n\n// Select\n// Note - Select is nearly deprecated in favor of Combobox\nexport { default as resetSelectStyles } from './Select/resetSelectStyles';\nexport * from './Select/Select';\nexport { SelectMenuOptions } from './Select/SelectMenu';\nexport { getSelectStyles } from './Select/getSelectStyles';\nexport * from './Select/types';\n\nexport { Combobox } from './Combobox/Combobox';\nexport { MultiCombobox } from './Combobox/MultiCombobox';\nexport { type ComboboxOption } from './Combobox/types';\n\nexport { HorizontalGroup, VerticalGroup, Container } from './Layout/Layout';\nexport { Badge, type BadgeColor, type BadgeProps } from './Badge/Badge';\nexport { RadioButtonGroup } from './Forms/RadioButtonGroup/RadioButtonGroup';\nexport { RadioButtonDot } from './Forms/RadioButtonList/RadioButtonDot';\nexport { RadioButtonList } from './Forms/RadioButtonList/RadioButtonList';\n\nexport { Input, getInputStyles } from './Input/Input';\nexport { AutoSizeInput } from './Input/AutoSizeInput';\nexport { FilterInput } from './FilterInput/FilterInput';\nexport type { FormInputSize } from './Forms/types';\nexport * from './SecretInput';\nexport * from './SecretTextArea';\n\nexport { Switch, InlineSwitch } from './Switch/Switch';\nexport { Checkbox } from './Forms/Checkbox';\n\nexport { TextArea } from './TextArea/TextArea';\nexport { FileUpload } from './FileUpload/FileUpload';\nexport * from './FileDropzone';\nexport { TimeRangeInput } from './DateTimePickers/TimeRangeInput';\nexport { RelativeTimeRangePicker } from './DateTimePickers/RelativeTimeRangePicker/RelativeTimeRangePicker';\nexport { Card, type Props as CardProps, getCardStyles } from './Card/Card';\nexport { CardContainer, type CardContainerProps } from './Card/CardContainer';\nexport { FormattedValueDisplay } from './FormattedValueDisplay/FormattedValueDisplay';\nexport { ButtonSelect } from './Dropdown/ButtonSelect';\nexport { Dropdown } from './Dropdown/Dropdown';\nexport { PluginSignatureBadge, type PluginSignatureBadgeProps } from './PluginSignatureBadge/PluginSignatureBadge';\nexport { UserIcon, type UserIconProps } from './UsersIndicator/UserIcon';\nexport { UsersIndicator, type UsersIndicatorProps } from './UsersIndicator/UsersIndicator';\nexport { type UserView } from './UsersIndicator/types';\nexport { Avatar } from './UsersIndicator/Avatar';\n// Export this until we've figured out a good approach to inline form styles.\nexport { InlineFormLabel } from './FormLabel/FormLabel';\nexport { Divider } from './Divider/Divider';\nexport { getDragStyles, type DragHandlePosition } from './DragHandle/DragHandle';\nexport { useSplitter } from './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 * from './uPlot/config';\nexport { ScaleDistribution, BarGaugeDisplayMode } from '@grafana/schema';\nexport { UPlotConfigBuilder } from './uPlot/config/UPlotConfigBuilder';\nexport { UPLOT_AXIS_FONT_SIZE } from './uPlot/config/UPlotAxisBuilder';\nexport { UPlotChart } from './uPlot/Plot';\nexport { PlotLegend } from './uPlot/PlotLegend';\nexport * from './uPlot/geometries';\nexport * from './uPlot/plugins';\nexport { type PlotTooltipInterpolator, type PlotSelection, FIXED_UNIT } from './uPlot/types';\nexport { type UPlotConfigPrepFn } from './uPlot/config/UPlotConfigBuilder';\nexport * from './PanelChrome/types';\nexport { Label as BrowserLabel } from './BrowserLabel/Label';\nexport { PanelContainer } from './PanelContainer/PanelContainer';\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';\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 './ElementSelectionContext/ElementSelectionContext';\n","import {\n  FieldConfigEditorBuilder,\n  FieldType,\n  identityOverrideProcessor,\n  SelectableValue,\n  StandardEditorProps,\n} from '@grafana/data';\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 { graphFieldOptions } from '../../components/uPlot/config';\nimport { t } from '../../utils/i18n';\n\nconst category = ['Axis'];\n\n/**\n * @alpha\n */\nexport function addAxisConfig(builder: FieldConfigEditorBuilder<AxisConfig>, defaultConfig: AxisConfig) {\n  // options for axis appearance\n  addAxisPlacement(builder);\n\n  builder.addTextInput({\n    path: 'axisLabel',\n    name: 'Label',\n    category,\n    defaultValue: '',\n    settings: {\n      placeholder: '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: 'Show grid lines',\n      category,\n      defaultValue: undefined,\n      settings: {\n        options: [\n          { value: undefined, label: 'Auto' },\n          { value: true, label: 'On' },\n          { value: false, label: 'Off' },\n        ],\n      },\n      showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n    })\n    .addRadio({\n      path: 'axisColorMode',\n      name: 'Color',\n      category,\n      defaultValue: AxisColorMode.Text,\n      settings: {\n        options: [\n          { value: AxisColorMode.Text, label: 'Text' },\n          { value: AxisColorMode.Series, label: 'Series' },\n        ],\n      },\n      showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n    })\n    .addBooleanSwitch({\n      path: 'axisBorderShow',\n      name: '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: '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: 'Centered zero',\n      category,\n      defaultValue: false,\n      showIf: (c) => c.scaleDistribution?.type !== ScaleDistribution.Log,\n    })\n    .addNumberInput({\n      path: 'axisSoftMin',\n      name: 'Soft min',\n      defaultValue: defaultConfig.axisSoftMin,\n      category,\n      settings: {\n        placeholder: 'See: Standard options > Min',\n      },\n    })\n    .addNumberInput({\n      path: 'axisSoftMax',\n      name: 'Soft max',\n      defaultValue: defaultConfig.axisSoftMax,\n      category,\n      settings: {\n        placeholder: 'See: Standard options > Max',\n      },\n    });\n}\n\nconst DISTRIBUTION_OPTIONS: Array<SelectableValue<ScaleDistribution>> = [\n  {\n    label: 'Linear',\n    value: ScaleDistribution.Linear,\n  },\n  {\n    label: 'Logarithmic',\n    value: ScaleDistribution.Log,\n  },\n  {\n    label: 'Symlog',\n    value: ScaleDistribution.Symlog,\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\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/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: 'Width',\n    category,\n    settings: {\n      placeholder: '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  builder.addRadio({\n    path: 'axisPlacement',\n    name: 'Placement',\n    category,\n    defaultValue: graphFieldOptions.axisPlacement[0].value,\n    settings: {\n      options: graphFieldOptions.axisPlacement.filter((placement) => optionsFilter(placement.value!)),\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 { 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  builder\n    .addBooleanSwitch({\n      path: 'legend.showLegend',\n      name: 'Visibility',\n      category: ['Legend'],\n      description: '',\n      defaultValue: showLegend,\n    })\n    .addRadio({\n      path: 'legend.displayMode',\n      name: 'Mode',\n      category: ['Legend'],\n      description: '',\n      defaultValue: LegendDisplayMode.List,\n      settings: {\n        options: [\n          { value: LegendDisplayMode.List, label: 'List' },\n          { value: LegendDisplayMode.Table, label: 'Table' },\n        ],\n      },\n      showIf: (c) => c.legend.showLegend,\n    })\n    .addRadio({\n      path: 'legend.placement',\n      name: 'Placement',\n      category: ['Legend'],\n      description: '',\n      defaultValue: 'bottom',\n      settings: {\n        options: [\n          { value: 'bottom', label: 'Bottom' },\n          { value: 'right', label: 'Right' },\n        ],\n      },\n      showIf: (c) => c.legend.showLegend,\n    })\n    .addNumberInput({\n      path: 'legend.width',\n      name: 'Width',\n      category: ['Legend'],\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: 'Values',\n      category: ['Legend'],\n      description: '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 { 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 = ['Tooltip'];\n  const modeOptions = singleOnly\n    ? [\n        { value: TooltipDisplayMode.Single, label: 'Single' },\n        { value: TooltipDisplayMode.None, label: 'Hidden' },\n      ]\n    : [\n        { value: TooltipDisplayMode.Single, label: 'Single' },\n        { value: TooltipDisplayMode.Multi, label: 'All' },\n        { value: TooltipDisplayMode.None, label: 'Hidden' },\n      ];\n\n  const sortOptions = [\n    { value: SortOrder.None, label: 'None' },\n    { value: SortOrder.Ascending, label: 'Ascending' },\n    { value: SortOrder.Descending, label: 'Descending' },\n  ];\n\n  builder\n    .addRadio({\n      path: 'tooltip.mode',\n      name: '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: '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: '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: 'Hover proximity',\n      description: 'How close the cursor must be to a point to trigger the tooltip, in pixels',\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: '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: '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 { 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  if (withTitle) {\n    builder.addNumberInput({\n      path: 'text.titleSize',\n      category: ['Text size'],\n      name: 'Title',\n      settings: {\n        placeholder: '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: ['Text size'],\n    name: 'Value',\n    settings: {\n      placeholder: '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: ['Text size'],\n    name: 'Percent change',\n    settings: {\n      placeholder: '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 { 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 { graphFieldOptions } from '../../components/uPlot/config';\nimport { t } from '../../utils/i18n';\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  builder.addCustomEditor({\n    id: 'stacking',\n    path: 'stacking',\n    name: '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"],"names":["memoize","ThemeContext","jsx","hoistNonReactStatics","useContext","React","spin","keyframes","css","isIconName","cx","SVG","createTheme","getCardStyles","tinycolor","getSkeletonStyles","Global","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","Component","classNames","map","sortBy","chunk","flattenDeep","zip","EventsWithValidation","Block","Text","Document","Value","getScrollbarWidth","useMemo","last","SearchFunctionType","throttle","NodeGraphDataFrameFieldNames","LegacyInputStatus","PureComponent","Input","IndicatorsContainer","components","ScrollIndicators","useEffect","CompletionItemKind","availableIconsIndex","FieldType","i18next","initReactI18next","I18NextTrans","CSSTransition","data","toIconName","SelectOptionGroup","ReactSelect","Creatable","Select","ReactAsyncSelect","AsyncSelect","uniqueId","Switch","omit","deprecationWarning","colorManipulator","useTransitionStyles","memo","useClick","FloatingFocusManager","className","Scrollbars","locale","SHOW_SUCCESS_DURATION","useMeasure","InputControl","ToggleAllState","_a","max","List","useImperativeHandle","children","ReactDOMServer","ref","createElement","value","toOption","AsyncCreatable","isArray","negate","RCCascader","ColorSwatchVariant","useFocusRing","upperFirst","debounce","useThrottleFn","RgbaStringColorPicker","FocusScope","createRef","getPaletteStyles","getValueFormats","fieldReducers","difference","modulo","useEffectOnce","styleMixins.mediaUp","Children","useOverlay","useDialog","parseDuration","formatDuration","unEscapeStringFromRegex","escapeStringForRegex","Label","getLabelStyles","VIRTUAL_OVERSCAN_ITEMS","useVirtualizer","uFuzzy","autoPlacement","size","groupStartIndices","noop","useCombobox","selectedItem","isOpen","highlightedIndex","isString","dateTimeFormat","getTimeZoneInfo","getTimeZoneGroups","options","toLower","group","isEmpty","InternalTimeZones","timeZone","isDateTime","dateMath","dateTimeParse","getZone","Body","Calendar","OverlayContainer","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","Skeleton","useForm","isKeyHotkey","Plain","SlateRange","Record","Prism","all","calculateSize","renderMarkdown","Highlighter","isEqual","FixedSizeList","classnames","Editor","useAsync","CodeEditorSuggestionItemKind","monacoLanguageRegistry","locationUtil","textUtil","RouterLink","Subject","switchMap","of","NEVER","interval","stringToMs","tap","RcDrawer","TableCellInspectorMode","t","getFieldDisplayName","BarGaugeValueMode","GAUGE_DEFAULT_MINIMUM","GAUGE_DEFAULT_MAXIMUM","BarGaugeDisplayMode","VizOrientation","ThresholdsMode","BarGaugeNamePlacement","maxTitleHeightRatio","titleHeight","formattedValueToString","FALLBACK_COLOR","getFieldColorMode","FieldColorModeId","useClickAway","getFieldConfigWithMinMax","TableCellDisplayMode","isFunction","Geometry","WKT","buildScaleKey","AxisPlacement","getScaleDistributionPart","ScaleDistribution","StackingMode","GraphDrawStyle","ensureTimeField","GraphTransform","i","reduceField","ReducerID","getDisplayProcessor","uPlot","scaleKey","incrRoundDn","incrRoundUp","isBooleanUnit","splits","values","decimals","guessDecimals","roundDecimals","systemDateFormats","ScaleOrientation","VisibilityMode","GraphGradientMode","lineColor","BarAlignment","LineInterpolation","GraphThresholdsStyleMode","theme","DefaultTimeZone","merge","preparePlotFrame","isLikelyAscendingVector","sortDataFrame","applyNullInsertThreshold","defaultConfig","nullToValue","compareDataFrameStructures","ScaleDirection","getFieldColorModeForField","getMinMaxAndDelta","isDataFrameWithValue","isDataFrame","isTimeSeriesFrame","clone","f","TableCellBackgroundDisplayMode","sampleSize","getValueFormat","floatingUIOffset","ReactUtils.renderOrCallToRender","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","$","useWindowSize","fieldColorModeRegistry","clamp","SeriesVisibilityChangeBehavior","color","capitalize","styleMixins.hoverColor","stat","_b","items","LegendDisplayMode","newHiddenSeries","series","toggledSeries","cloneDeep","pickBy","identity","convertOldAngularValueMappings","validateFieldConfig","isNumber","sortThresholds","groupBy","VariableOrigin","DataLinkBuiltInVars","link","Draggable","item","DragDropContext","Droppable","FeatureState","requestAnimationFrame","faro","LABEL_WIDTH","expanded","isObject","useAsyncFn","FONT_SIZE","cssCore","SliderComponent","Tooltip","Slider","Controller","FieldMatcherID","fieldMatchers","useSelectOptions","FieldNamePickerBaseNameMode","ComparisonOperation","getFrameDisplayName","Registry","useFieldArray","useMultipleSelection","inputValue","CONFIGURED_TEXT","RESET_BUTTON_TEXT","fileToModify","event","useDropzone","ErrorCode","getDefaultTimeRange","units","timeRange","styleMixins.getFocusStyles","PluginSignatureType","PluginSignatureStatus","PIXELS_PER_MS","getFieldSeriesColor","useMountedState","TOOLTIP_OFFSET","MIN_ZOOM_DIST","maybeZoomAction","DashboardCursorSync","useReducer","dismiss","e","yDrag","createPortal","u","LegacyGraphHoverEvent","throttleTime","getValueFromDimension","getColumnFromDimension","TooltipDisplayMode","createDimension","uniqBy","outerJoinDataFrames","defaultPreparePlotFrame","AxisColorMode","SortOrder","arrayUtils","identityOverrideProcessor","startCase","standardEditorsRegistry"],"mappings":"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"}