@grafana/ui
Version:
Grafana Components Library
1 lines • 2.82 MB
Source Map (JSON)
{"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 '.d