@grafana/scenes 6.40.0--canary.1255.18001595104.0 → 6.40.0--canary.1272.18407272616.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/esm/components/VizPanel/VizPanel.js +14 -15
  3. package/dist/esm/components/VizPanel/VizPanel.js.map +1 -1
  4. package/dist/esm/index.js +5 -1
  5. package/dist/esm/index.js.map +1 -1
  6. package/dist/esm/querying/layers/SceneDataLayerControls.js +13 -1
  7. package/dist/esm/querying/layers/SceneDataLayerControls.js.map +1 -1
  8. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +10 -10
  9. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js.map +1 -1
  10. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +6 -6
  11. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js.map +1 -1
  12. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +57 -55
  13. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js.map +1 -1
  14. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +5 -5
  15. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js.map +1 -1
  16. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +4 -4
  17. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js.map +1 -1
  18. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js +4 -2
  19. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
  20. package/dist/esm/variables/adhoc/controller/VariableBackedAdHocFiltersController.js +65 -0
  21. package/dist/esm/variables/adhoc/controller/VariableBackedAdHocFiltersController.js.map +1 -0
  22. package/dist/esm/variables/variants/CustomVariable.js +9 -4
  23. package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
  24. package/dist/esm/variables/variants/SwitchVariable.js +108 -0
  25. package/dist/esm/variables/variants/SwitchVariable.js.map +1 -0
  26. package/dist/esm/variables/variants/guards.js +4 -1
  27. package/dist/esm/variables/variants/guards.js.map +1 -1
  28. package/dist/index.d.ts +148 -4
  29. package/dist/index.js +308 -122
  30. package/dist/index.js.map +1 -1
  31. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,3 +1,51 @@
1
+ # v6.39.4 (Fri Oct 10 2025)
2
+
3
+ #### 🐛 Bug Fix
4
+
5
+ - CustomVariable: Expose query parsing mechanism [#1269](https://github.com/grafana/scenes/pull/1269) ([@bfmatei](https://github.com/bfmatei))
6
+
7
+ #### Authors: 1
8
+
9
+ - Bogdan Matei ([@bfmatei](https://github.com/bfmatei))
10
+
11
+ ---
12
+
13
+ # v6.39.3 (Thu Oct 09 2025)
14
+
15
+ #### 🐛 Bug Fix
16
+
17
+ - Variables: Introduce a new type called "switch" [#1258](https://github.com/grafana/scenes/pull/1258) ([@leventebalogh](https://github.com/leventebalogh))
18
+
19
+ #### Authors: 1
20
+
21
+ - Levente Balogh ([@leventebalogh](https://github.com/leventebalogh))
22
+
23
+ ---
24
+
25
+ # v6.39.2 (Wed Oct 08 2025)
26
+
27
+ #### 🐛 Bug Fix
28
+
29
+ - Chore: Fix annotations switch to work with new border radius [#1264](https://github.com/grafana/scenes/pull/1264) ([@ashharrison90](https://github.com/ashharrison90))
30
+
31
+ #### Authors: 1
32
+
33
+ - Ashley Harrison ([@ashharrison90](https://github.com/ashharrison90))
34
+
35
+ ---
36
+
37
+ # v6.39.1 (Thu Sep 25 2025)
38
+
39
+ #### 🐛 Bug Fix
40
+
41
+ - fix: infinite focus loop [#1168](https://github.com/grafana/scenes/pull/1168) ([@gtk-grafana](https://github.com/gtk-grafana))
42
+
43
+ #### Authors: 1
44
+
45
+ - Galen Kistler ([@gtk-grafana](https://github.com/gtk-grafana))
46
+
47
+ ---
48
+
1
49
  # v6.39.0 (Wed Sep 24 2025)
2
50
 
3
51
  #### 🚀 Enhancement
@@ -78,14 +78,10 @@ class VizPanel extends SceneObjectBase {
78
78
  collapsed
79
79
  });
80
80
  };
81
- this.onOptionsChange = (options, replace = false) => {
81
+ this.onOptionsChange = (optionsUpdate, replace = false, isAfterPluginChange = false) => {
82
82
  var _a;
83
- const { options: prevOptions } = this.state;
84
- const _renderCounter = ((_a = this.state._renderCounter) != null ? _a : 0) + 1;
85
- if (replace) {
86
- return this.setState({ options, _renderCounter });
87
- }
88
- options = mergeWith(cloneDeep(prevOptions), options, (objValue, srcValue, key, obj) => {
83
+ const { fieldConfig, options } = this.state;
84
+ const nextOptions = replace ? optionsUpdate : mergeWith(cloneDeep(options), optionsUpdate, (objValue, srcValue, key, obj) => {
89
85
  if (isArray(srcValue)) {
90
86
  return srcValue;
91
87
  }
@@ -95,7 +91,16 @@ class VizPanel extends SceneObjectBase {
95
91
  }
96
92
  return;
97
93
  });
98
- this.setState({ options, _renderCounter });
94
+ const withDefaults = getPanelOptionsWithDefaults({
95
+ plugin: this._plugin,
96
+ currentOptions: nextOptions,
97
+ currentFieldConfig: fieldConfig,
98
+ isAfterPluginChange
99
+ });
100
+ this.setState({
101
+ options: withDefaults.options,
102
+ _renderCounter: ((_a = this.state._renderCounter) != null ? _a : 0) + 1
103
+ });
99
104
  };
100
105
  this.onFieldConfigChange = (fieldConfigUpdate, replace) => {
101
106
  const { fieldConfig, options } = this.state;
@@ -317,13 +322,7 @@ class VizPanel extends SceneObjectBase {
317
322
  };
318
323
  const updatedOptions = (_b = (_a = this._plugin) == null ? void 0 : _a.onPanelTypeChanged) == null ? void 0 : _b.call(_a, panel, prevPluginId, prevOptions, prevFieldConfig);
319
324
  if (updatedOptions && !isEmpty(updatedOptions)) {
320
- const { options } = getPanelOptionsWithDefaults({
321
- plugin: this._plugin,
322
- currentOptions: updatedOptions,
323
- currentFieldConfig: this.state.fieldConfig,
324
- isAfterPluginChange
325
- });
326
- this.onOptionsChange(options, true);
325
+ this.onOptionsChange(updatedOptions, true, true);
327
326
  }
328
327
  }
329
328
  clearFieldConfigCache() {
@@ -1 +1 @@
1
- {"version":3,"file":"VizPanel.js","sources":["../../../../src/components/VizPanel/VizPanel.tsx"],"sourcesContent":["import { t } from '@grafana/i18n';\nimport {\n AbsoluteTimeRange,\n FieldConfigSource,\n PanelModel,\n PanelPlugin,\n toUtc,\n getPanelOptionsWithDefaults,\n ScopedVars,\n InterpolateFunction,\n CoreApp,\n DashboardCursorSync,\n PanelData,\n compareArrayValues,\n compareDataFrameStructures,\n applyFieldOverrides,\n PluginType,\n renderMarkdown,\n PanelPluginDataSupport,\n} from '@grafana/data';\nimport { PanelContext, SeriesVisibilityChangeMode, VizLegendOptions } from '@grafana/ui';\nimport { config, getAppEvents, getPluginImportUtils } from '@grafana/runtime';\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { DeepPartial, SceneObject, SceneObjectState } from '../../core/types';\n\nimport { VizPanelRenderer } from './VizPanelRenderer';\nimport { VizPanelMenu } from './VizPanelMenu';\nimport { VariableDependencyConfig } from '../../variables/VariableDependencyConfig';\nimport { VariableCustomFormatterFn } from '../../variables/types';\nimport { seriesVisibilityConfigFactory } from './seriesVisibilityConfigFactory';\nimport { emptyPanelData } from '../../core/SceneDataNode';\nimport { changeSeriesColorConfigFactory } from './colorSeriesConfigFactory';\nimport { loadPanelPluginSync } from './registerRuntimePanelPlugin';\nimport { getCursorSyncScope } from '../../behaviors/CursorSync';\nimport { cloneDeep, isArray, isEmpty, merge, mergeWith } from 'lodash';\nimport { UserActionEvent } from '../../core/events';\nimport { evaluateTimeRange } from '../../utils/evaluateTimeRange';\nimport { LiveNowTimer } from '../../behaviors/LiveNowTimer';\nimport { registerQueryWithController, wrapPromiseInStateObservable } from '../../querying/registerQueryWithController';\nimport { SceneDataTransformer } from '../../querying/SceneDataTransformer';\nimport { SceneQueryRunner } from '../../querying/SceneQueryRunner';\nimport { buildPathIdFor } from '../../utils/pathId';\n\nexport interface VizPanelState<TOptions = {}, TFieldConfig = {}> extends SceneObjectState {\n /**\n * This is usually a plugin id that references a core plugin or an external plugin. But this can also reference a\n * runtime registered PanelPlugin registered via function registerScenePanelPlugin.\n */\n pluginId: string;\n title: string;\n description?: string;\n options: DeepPartial<TOptions>;\n fieldConfig: FieldConfigSource<DeepPartial<TFieldConfig>>;\n pluginVersion?: string;\n displayMode?: 'default' | 'transparent';\n /**\n * Only shows header on hover, absolutly positioned above the panel.\n */\n hoverHeader?: boolean;\n /**\n * Offset hoverHeader position on the y axis\n */\n hoverHeaderOffset?: number;\n /**\n * Only shows vizPanelMenu on hover if false, otherwise the menu is always visible in the header\n */\n showMenuAlways?: boolean;\n /**\n * Defines a menu in the top right of the panel. The menu object is only activated when the dropdown menu itself is shown.\n * So the best way to add dynamic menu actions and links is by adding them in a behavior attached to the menu.\n */\n menu?: VizPanelMenu;\n /**\n * Defines a menu that renders panel link.\n **/\n titleItems?: React.ReactNode | SceneObject | SceneObject[];\n seriesLimit?: number;\n seriesLimitShowAll?: boolean;\n /**\n * Add action to the top right panel header\n */\n headerActions?: React.ReactNode | SceneObject | SceneObject[];\n /**\n * Mainly for advanced use cases that need custom handling of PanelContext callbacks.\n */\n extendPanelContext?: (vizPanel: VizPanel, context: PanelContext) => void;\n\n /**\n * Sets panel chrome collapsed state\n */\n collapsible?: boolean;\n collapsed?: boolean;\n /** Marks object as a repeated object and a key pointer to source object */\n repeatSourceKey?: string;\n /**\n * @internal\n * Only for use from core to handle migration from old angular panels\n **/\n _UNSAFE_customMigrationHandler?: (panel: PanelModel, plugin: PanelPlugin) => void;\n /** Internal */\n _pluginLoadError?: string;\n /** Internal */\n _pluginInstanceState?: any;\n _renderCounter?: number;\n}\n\nexport class VizPanel<TOptions = {}, TFieldConfig extends {} = {}> extends SceneObjectBase<\n VizPanelState<TOptions, TFieldConfig>\n> {\n public static Component = VizPanelRenderer;\n\n protected _variableDependency = new VariableDependencyConfig(this, {\n statePaths: ['title', 'options', 'fieldConfig'],\n });\n\n // Not part of state as this is not serializable\n protected _panelContext?: PanelContext;\n private _plugin?: PanelPlugin;\n private _prevData?: PanelData;\n private _dataWithFieldConfig?: PanelData;\n private _structureRev = 0;\n\n public constructor(state: Partial<VizPanelState<TOptions, TFieldConfig>>) {\n super({\n options: {} as TOptions,\n fieldConfig: { defaults: {}, overrides: [] },\n title: t('grafana-scenes.components.viz-panel.title.title', 'Title'),\n pluginId: 'timeseries',\n _renderCounter: 0,\n ...state,\n });\n\n this.addActivationHandler(() => {\n this._onActivate();\n });\n\n state.menu?.addActivationHandler(() => {\n this.publishEvent(new UserActionEvent({ origin: this, interaction: 'panel-menu-shown' }), true);\n });\n }\n\n private _onActivate() {\n if (!this._plugin) {\n this._loadPlugin(this.state.pluginId);\n }\n }\n\n public forceRender(): void {\n // Incrementing the render counter means VizRepeater and its children will also re-render\n this.setState({ _renderCounter: (this.state._renderCounter ?? 0) + 1 });\n }\n\n private async _loadPlugin(\n pluginId: string,\n overwriteOptions?: DeepPartial<{}>,\n overwriteFieldConfig?: FieldConfigSource,\n isAfterPluginChange?: boolean\n ) {\n const plugin = loadPanelPluginSync(pluginId);\n\n if (plugin) {\n this._pluginLoaded(plugin, overwriteOptions, overwriteFieldConfig, isAfterPluginChange);\n } else {\n const { importPanelPlugin } = getPluginImportUtils();\n\n try {\n const panelPromise = importPanelPlugin(pluginId);\n\n const queryControler = sceneGraph.getQueryController(this);\n if (queryControler && queryControler.state.enableProfiling) {\n wrapPromiseInStateObservable(panelPromise)\n .pipe(registerQueryWithController({ type: `VizPanel/loadPlugin/${pluginId}`, origin: this }))\n .subscribe(() => {});\n }\n\n const result = await panelPromise;\n this._pluginLoaded(result, overwriteOptions, overwriteFieldConfig, isAfterPluginChange);\n } catch (err: unknown) {\n this._pluginLoaded(getPanelPluginNotFound(pluginId));\n\n if (err instanceof Error) {\n this.setState({ _pluginLoadError: err.message });\n }\n }\n }\n }\n\n public getLegacyPanelId() {\n /**\n * The `/` part is here because a panel key can be in a clone chain\n * A clone chain looks like `panel-1-clone-0/grid-item-5/panel-14` where the last part is the panel key\n */\n const parts = this.state.key?.split('/') ?? [];\n\n if (parts.length === 0) {\n return 0;\n }\n\n const part = parts[parts.length - 1];\n const panelId = parseInt(part!.replace('panel-', ''), 10);\n\n if (isNaN(panelId)) {\n return 0;\n }\n\n return panelId;\n }\n\n /**\n * Unique id string that includes local variable values (for repeated panels)\n */\n public getPathId() {\n return buildPathIdFor(this);\n }\n\n private async _pluginLoaded(\n plugin: PanelPlugin,\n overwriteOptions?: DeepPartial<{}>,\n overwriteFieldConfig?: FieldConfigSource,\n isAfterPluginChange?: boolean\n ) {\n const { options, fieldConfig, title, pluginVersion, _UNSAFE_customMigrationHandler } = this.state;\n\n const panel: PanelModel = {\n title,\n options,\n fieldConfig,\n id: this.getLegacyPanelId(),\n type: plugin.meta.id,\n pluginVersion: pluginVersion,\n };\n\n if (overwriteOptions) {\n panel.options = overwriteOptions;\n }\n\n if (overwriteFieldConfig) {\n panel.fieldConfig = overwriteFieldConfig;\n }\n\n const currentVersion = this._getPluginVersion(plugin);\n\n _UNSAFE_customMigrationHandler?.(panel, plugin);\n\n //@ts-expect-error (TODO: remove after upgrading with https://github.com/grafana/grafana/pull/108998)\n const needsMigration = currentVersion !== pluginVersion || plugin.shouldMigrate?.(panel);\n\n if (plugin.onPanelMigration && needsMigration && !isAfterPluginChange) {\n // These migration handlers also mutate panel.fieldConfig to migrate fieldConfig\n panel.options = await plugin.onPanelMigration(panel);\n }\n\n // Some panels mutate the transformations on the panel as part of migrations.\n // Unfortunately, these mutations are not available until the panel plugin is loaded.\n // At this time, the data provider is already set, so this is the easiest way to fix it.\n let $data = this.state.$data;\n if (panel.transformations && $data) {\n if ($data instanceof SceneDataTransformer) {\n $data.setState({ transformations: panel.transformations });\n } else if ($data instanceof SceneQueryRunner) {\n $data.clearParent();\n $data = new SceneDataTransformer({\n transformations: panel.transformations,\n $data,\n });\n }\n }\n\n const withDefaults = getPanelOptionsWithDefaults({\n plugin,\n currentOptions: panel.options,\n currentFieldConfig: panel.fieldConfig,\n isAfterPluginChange: isAfterPluginChange ?? false,\n });\n\n this._plugin = plugin;\n\n this.setState({\n $data,\n options: withDefaults.options as DeepPartial<TOptions>,\n fieldConfig: withDefaults.fieldConfig,\n pluginVersion: currentVersion,\n pluginId: plugin.meta.id,\n });\n\n // Non data panels needs to be re-rendered when time range change\n if (plugin.meta.skipDataQuery) {\n const sceneTimeRange = sceneGraph.getTimeRange(this);\n this._subs.add(sceneTimeRange.subscribeToState(() => this.forceRender()));\n }\n }\n\n private _getPluginVersion(plugin: PanelPlugin): string {\n return plugin && plugin.meta.info.version ? plugin.meta.info.version : config.buildInfo.version;\n }\n\n public getPlugin(): PanelPlugin | undefined {\n return this._plugin;\n }\n\n public getPanelContext(): PanelContext {\n this._panelContext ??= this.buildPanelContext();\n\n return this._panelContext!;\n }\n\n public onTimeRangeChange = (timeRange: AbsoluteTimeRange) => {\n const sceneTimeRange = sceneGraph.getTimeRange(this);\n sceneTimeRange.onTimeRangeChange({\n raw: {\n from: toUtc(timeRange.from),\n to: toUtc(timeRange.to),\n },\n from: toUtc(timeRange.from),\n to: toUtc(timeRange.to),\n });\n };\n\n public getTimeRange = (data?: PanelData) => {\n const liveNowTimer = sceneGraph.findObject(this, (o) => o instanceof LiveNowTimer);\n const sceneTimeRange = sceneGraph.getTimeRange(this);\n\n if (liveNowTimer instanceof LiveNowTimer && liveNowTimer.isEnabled) {\n return evaluateTimeRange(\n sceneTimeRange.state.from,\n sceneTimeRange.state.to,\n sceneTimeRange.getTimeZone(),\n sceneTimeRange.state.fiscalYearStartMonth,\n sceneTimeRange.state.UNSAFE_nowDelay,\n sceneTimeRange.state.weekStart\n );\n }\n\n const plugin = this.getPlugin();\n if (plugin && !plugin.meta.skipDataQuery && data && data.timeRange) {\n return data.timeRange;\n }\n\n return sceneTimeRange.state.value;\n };\n\n public async changePluginType(pluginId: string, newOptions?: DeepPartial<{}>, newFieldConfig?: FieldConfigSource) {\n const { options: prevOptions, fieldConfig: prevFieldConfig, pluginId: prevPluginId } = this.state;\n\n //clear field config cache to update it later\n this._dataWithFieldConfig = undefined;\n\n // If state.pluginId is already the correct plugin we don't treat this as plain user panel type change\n const isAfterPluginChange = this.state.pluginId !== pluginId;\n await this._loadPlugin(pluginId, newOptions ?? {}, newFieldConfig, isAfterPluginChange);\n\n const panel: PanelModel = {\n title: this.state.title,\n options: this.state.options,\n fieldConfig: this.state.fieldConfig,\n id: 1,\n type: pluginId,\n };\n\n // onPanelTypeChanged is mainly used by plugins to migrate from Angular to React.\n // For example, this will migrate options from 'graph' to 'timeseries' if the previous and new plugin ID matches.\n const updatedOptions = this._plugin?.onPanelTypeChanged?.(panel, prevPluginId, prevOptions, prevFieldConfig);\n\n if (updatedOptions && !isEmpty(updatedOptions)) {\n const { options } = getPanelOptionsWithDefaults({\n plugin: this._plugin!,\n currentOptions: updatedOptions,\n currentFieldConfig: this.state.fieldConfig,\n isAfterPluginChange: isAfterPluginChange,\n });\n\n // We need to merge the update with the defaults before overwriting the options given we use replace\n this.onOptionsChange(options as DeepPartial<TOptions>, true);\n }\n }\n\n public onTitleChange = (title: string) => {\n this.setState({ title });\n };\n\n public onDescriptionChange = (description: string) => {\n this.setState({ description });\n };\n\n public onDisplayModeChange = (displayMode: 'default' | 'transparent') => {\n this.setState({ displayMode });\n };\n\n public onToggleCollapse = (collapsed: boolean) => {\n this.setState({\n collapsed,\n });\n };\n\n public onOptionsChange = (options: DeepPartial<TOptions>, replace = false) => {\n const { options: prevOptions } = this.state;\n\n const _renderCounter = (this.state._renderCounter ?? 0) + 1;\n\n if (replace) {\n return this.setState({ options, _renderCounter });\n }\n\n options = mergeWith(cloneDeep(prevOptions), options, (objValue, srcValue, key, obj) => {\n if (isArray(srcValue)) {\n return srcValue;\n }\n\n // If the customizer returns undefined, the method handles merging instead,\n // So we need to override the value in the object instead\n if (objValue !== srcValue && typeof srcValue === 'undefined') {\n obj[key] = srcValue;\n return;\n }\n return;\n });\n\n this.setState({ options, _renderCounter });\n };\n\n public onFieldConfigChange = (fieldConfigUpdate: FieldConfigSource<DeepPartial<TFieldConfig>>, replace?: boolean) => {\n const { fieldConfig, options } = this.state;\n\n // When replace is true, we want to replace the entire field config. Default will be applied.\n const nextFieldConfig = replace ? fieldConfigUpdate : merge(cloneDeep(fieldConfig), fieldConfigUpdate);\n\n const withDefaults = getPanelOptionsWithDefaults({\n plugin: this._plugin!,\n currentOptions: options,\n currentFieldConfig: nextFieldConfig,\n isAfterPluginChange: false,\n });\n\n this._dataWithFieldConfig = undefined;\n this.setState({ fieldConfig: withDefaults.fieldConfig });\n };\n\n public interpolate = ((value: string, scoped?: ScopedVars, format?: string | VariableCustomFormatterFn) => {\n return sceneGraph.interpolate(this, value, scoped, format);\n }) as InterpolateFunction;\n\n public getDescription = () => {\n this.publishEvent(new UserActionEvent({ origin: this, interaction: 'panel-description-shown' }), true);\n\n const { description } = this.state;\n if (description) {\n const markdown = this.interpolate(description);\n return renderMarkdown(markdown);\n }\n return '';\n };\n\n public clearFieldConfigCache() {\n this._dataWithFieldConfig = undefined;\n }\n\n /**\n * Called from the react render path to apply the field config to the data provided by the data provider\n */\n public applyFieldConfig(rawData?: PanelData): PanelData {\n const plugin = this._plugin;\n\n if (!plugin || plugin.meta.skipDataQuery || !rawData) {\n // TODO setup time range subscription instead\n return emptyPanelData;\n }\n\n // If the data is the same as last time, we can skip the field config apply step and just return same result as last time\n if (this._prevData === rawData && this._dataWithFieldConfig) {\n return this._dataWithFieldConfig;\n }\n\n const pluginDataSupport: PanelPluginDataSupport = plugin.dataSupport || { alertStates: false, annotations: false };\n\n const fieldConfigRegistry = plugin.fieldConfigRegistry;\n const prevFrames = this._dataWithFieldConfig?.series ?? [];\n const newFrames = applyFieldOverrides({\n data: rawData.series,\n fieldConfig: this.state.fieldConfig,\n fieldConfigRegistry,\n replaceVariables: this.interpolate,\n theme: config.theme2,\n timeZone: rawData.request?.timezone,\n });\n\n if (!compareArrayValues(newFrames, prevFrames, compareDataFrameStructures)) {\n this._structureRev++;\n }\n\n this._dataWithFieldConfig = {\n ...rawData,\n structureRev: this._structureRev,\n series: newFrames,\n };\n\n if (this._dataWithFieldConfig.annotations) {\n this._dataWithFieldConfig.annotations = applyFieldOverrides({\n data: this._dataWithFieldConfig.annotations,\n fieldConfig: {\n defaults: {},\n overrides: [],\n },\n fieldConfigRegistry,\n replaceVariables: this.interpolate,\n theme: config.theme2,\n timeZone: rawData.request?.timezone,\n });\n }\n\n if (!pluginDataSupport.alertStates) {\n this._dataWithFieldConfig.alertState = undefined;\n }\n\n if (!pluginDataSupport.annotations) {\n this._dataWithFieldConfig.annotations = undefined;\n }\n\n this._prevData = rawData;\n return this._dataWithFieldConfig;\n }\n\n public onCancelQuery = () => {\n this.publishEvent(new UserActionEvent({ origin: this, interaction: 'panel-cancel-query-clicked' }), true);\n const data = sceneGraph.getData(this);\n data.cancelQuery?.();\n };\n\n public onStatusMessageClick = () => {\n this.publishEvent(new UserActionEvent({ origin: this, interaction: 'panel-status-message-clicked' }), true);\n };\n\n /**\n * Panel context functions\n */\n private _onSeriesColorChange = (label: string, color: string) => {\n this.onFieldConfigChange(changeSeriesColorConfigFactory(label, color, this.state.fieldConfig));\n };\n\n private _onSeriesVisibilityChange = (label: string, mode: SeriesVisibilityChangeMode) => {\n if (!this._dataWithFieldConfig) {\n return;\n }\n\n this.onFieldConfigChange(\n seriesVisibilityConfigFactory(label, mode, this.state.fieldConfig, this._dataWithFieldConfig.series),\n true\n );\n };\n\n private _onInstanceStateChange = (state: any) => {\n if (this._panelContext) {\n this._panelContext = {\n ...this._panelContext,\n instanceState: state,\n };\n }\n\n this.setState({ _pluginInstanceState: state });\n };\n\n private _onToggleLegendSort = (sortKey: string) => {\n const legendOptions: VizLegendOptions = (this.state.options as any).legend;\n\n // We don't want to do anything when legend options are not available\n if (!legendOptions) {\n return;\n }\n\n let sortDesc = legendOptions.sortDesc;\n let sortBy = legendOptions.sortBy;\n if (sortKey !== sortBy) {\n sortDesc = undefined;\n }\n\n // if already sort ascending, disable sorting\n if (sortDesc === false) {\n sortBy = undefined;\n sortDesc = undefined;\n } else {\n sortDesc = !sortDesc;\n sortBy = sortKey;\n }\n\n this.onOptionsChange(\n {\n ...this.state.options,\n legend: { ...legendOptions, sortBy, sortDesc },\n } as TOptions,\n true\n );\n };\n\n public clone(withState?: Partial<VizPanelState>) {\n // Clear _pluginInstanceState and _pluginLoadError as it's not safe to clone\n return super.clone({ _pluginInstanceState: undefined, _pluginLoadError: undefined, ...withState });\n }\n\n private buildPanelContext(): PanelContext {\n const sync = getCursorSyncScope(this);\n\n const context = {\n eventsScope: sync ? sync.getEventsScope() : '__global_',\n eventBus: sync ? sync.getEventsBus(this) : getAppEvents(),\n app: CoreApp.Unknown,\n sync: () => {\n if (sync) {\n return sync.state.sync;\n }\n return DashboardCursorSync.Off;\n },\n onSeriesColorChange: this._onSeriesColorChange,\n onToggleSeriesVisibility: this._onSeriesVisibilityChange,\n onToggleLegendSort: this._onToggleLegendSort,\n onInstanceStateChange: this._onInstanceStateChange,\n };\n\n if (this.state.extendPanelContext) {\n this.state.extendPanelContext(this, context);\n }\n\n return context;\n }\n}\n\nfunction getPanelPluginNotFound(id: string): PanelPlugin {\n const plugin = new PanelPlugin(() => null);\n\n plugin.meta = {\n id: id,\n name: id,\n sort: 100,\n type: PluginType.panel,\n module: '',\n baseUrl: '',\n info: {\n author: {\n name: '',\n },\n description: '',\n links: [],\n logos: {\n large: '',\n small: 'public/img/grafana_icon.svg',\n },\n screenshots: [],\n updated: '',\n version: '',\n },\n };\n\n return plugin;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VizPanel.js","sources":["../../../../src/components/VizPanel/VizPanel.tsx"],"sourcesContent":["import { t } from '@grafana/i18n';\nimport {\n AbsoluteTimeRange,\n FieldConfigSource,\n PanelModel,\n PanelPlugin,\n toUtc,\n getPanelOptionsWithDefaults,\n ScopedVars,\n InterpolateFunction,\n CoreApp,\n DashboardCursorSync,\n PanelData,\n compareArrayValues,\n compareDataFrameStructures,\n applyFieldOverrides,\n PluginType,\n renderMarkdown,\n PanelPluginDataSupport,\n} from '@grafana/data';\nimport { PanelContext, SeriesVisibilityChangeMode, VizLegendOptions } from '@grafana/ui';\nimport { config, getAppEvents, getPluginImportUtils } from '@grafana/runtime';\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { DeepPartial, SceneObject, SceneObjectState } from '../../core/types';\n\nimport { VizPanelRenderer } from './VizPanelRenderer';\nimport { VizPanelMenu } from './VizPanelMenu';\nimport { VariableDependencyConfig } from '../../variables/VariableDependencyConfig';\nimport { VariableCustomFormatterFn } from '../../variables/types';\nimport { seriesVisibilityConfigFactory } from './seriesVisibilityConfigFactory';\nimport { emptyPanelData } from '../../core/SceneDataNode';\nimport { changeSeriesColorConfigFactory } from './colorSeriesConfigFactory';\nimport { loadPanelPluginSync } from './registerRuntimePanelPlugin';\nimport { getCursorSyncScope } from '../../behaviors/CursorSync';\nimport { cloneDeep, isArray, isEmpty, merge, mergeWith } from 'lodash';\nimport { UserActionEvent } from '../../core/events';\nimport { evaluateTimeRange } from '../../utils/evaluateTimeRange';\nimport { LiveNowTimer } from '../../behaviors/LiveNowTimer';\nimport { registerQueryWithController, wrapPromiseInStateObservable } from '../../querying/registerQueryWithController';\nimport { SceneDataTransformer } from '../../querying/SceneDataTransformer';\nimport { SceneQueryRunner } from '../../querying/SceneQueryRunner';\nimport { buildPathIdFor } from '../../utils/pathId';\n\nexport interface VizPanelState<TOptions = {}, TFieldConfig = {}> extends SceneObjectState {\n /**\n * This is usually a plugin id that references a core plugin or an external plugin. But this can also reference a\n * runtime registered PanelPlugin registered via function registerScenePanelPlugin.\n */\n pluginId: string;\n title: string;\n description?: string;\n options: DeepPartial<TOptions>;\n fieldConfig: FieldConfigSource<DeepPartial<TFieldConfig>>;\n pluginVersion?: string;\n displayMode?: 'default' | 'transparent';\n /**\n * Only shows header on hover, absolutly positioned above the panel.\n */\n hoverHeader?: boolean;\n /**\n * Offset hoverHeader position on the y axis\n */\n hoverHeaderOffset?: number;\n /**\n * Only shows vizPanelMenu on hover if false, otherwise the menu is always visible in the header\n */\n showMenuAlways?: boolean;\n /**\n * Defines a menu in the top right of the panel. The menu object is only activated when the dropdown menu itself is shown.\n * So the best way to add dynamic menu actions and links is by adding them in a behavior attached to the menu.\n */\n menu?: VizPanelMenu;\n /**\n * Defines a menu that renders panel link.\n **/\n titleItems?: React.ReactNode | SceneObject | SceneObject[];\n seriesLimit?: number;\n seriesLimitShowAll?: boolean;\n /**\n * Add action to the top right panel header\n */\n headerActions?: React.ReactNode | SceneObject | SceneObject[];\n /**\n * Mainly for advanced use cases that need custom handling of PanelContext callbacks.\n */\n extendPanelContext?: (vizPanel: VizPanel, context: PanelContext) => void;\n\n /**\n * Sets panel chrome collapsed state\n */\n collapsible?: boolean;\n collapsed?: boolean;\n /** Marks object as a repeated object and a key pointer to source object */\n repeatSourceKey?: string;\n /**\n * @internal\n * Only for use from core to handle migration from old angular panels\n **/\n _UNSAFE_customMigrationHandler?: (panel: PanelModel, plugin: PanelPlugin) => void;\n /** Internal */\n _pluginLoadError?: string;\n /** Internal */\n _pluginInstanceState?: any;\n _renderCounter?: number;\n}\n\nexport class VizPanel<TOptions = {}, TFieldConfig extends {} = {}> extends SceneObjectBase<\n VizPanelState<TOptions, TFieldConfig>\n> {\n public static Component = VizPanelRenderer;\n\n protected _variableDependency = new VariableDependencyConfig(this, {\n statePaths: ['title', 'options', 'fieldConfig'],\n });\n\n // Not part of state as this is not serializable\n protected _panelContext?: PanelContext;\n private _plugin?: PanelPlugin;\n private _prevData?: PanelData;\n private _dataWithFieldConfig?: PanelData;\n private _structureRev = 0;\n\n public constructor(state: Partial<VizPanelState<TOptions, TFieldConfig>>) {\n super({\n options: {} as TOptions,\n fieldConfig: { defaults: {}, overrides: [] },\n title: t('grafana-scenes.components.viz-panel.title.title', 'Title'),\n pluginId: 'timeseries',\n _renderCounter: 0,\n ...state,\n });\n\n this.addActivationHandler(() => {\n this._onActivate();\n });\n\n state.menu?.addActivationHandler(() => {\n this.publishEvent(new UserActionEvent({ origin: this, interaction: 'panel-menu-shown' }), true);\n });\n }\n\n private _onActivate() {\n if (!this._plugin) {\n this._loadPlugin(this.state.pluginId);\n }\n }\n\n public forceRender(): void {\n // Incrementing the render counter means VizRepeater and its children will also re-render\n this.setState({ _renderCounter: (this.state._renderCounter ?? 0) + 1 });\n }\n\n private async _loadPlugin(\n pluginId: string,\n overwriteOptions?: DeepPartial<{}>,\n overwriteFieldConfig?: FieldConfigSource,\n isAfterPluginChange?: boolean\n ) {\n const plugin = loadPanelPluginSync(pluginId);\n\n if (plugin) {\n this._pluginLoaded(plugin, overwriteOptions, overwriteFieldConfig, isAfterPluginChange);\n } else {\n const { importPanelPlugin } = getPluginImportUtils();\n\n try {\n const panelPromise = importPanelPlugin(pluginId);\n\n const queryControler = sceneGraph.getQueryController(this);\n if (queryControler && queryControler.state.enableProfiling) {\n wrapPromiseInStateObservable(panelPromise)\n .pipe(registerQueryWithController({ type: `VizPanel/loadPlugin/${pluginId}`, origin: this }))\n .subscribe(() => {});\n }\n\n const result = await panelPromise;\n this._pluginLoaded(result, overwriteOptions, overwriteFieldConfig, isAfterPluginChange);\n } catch (err: unknown) {\n this._pluginLoaded(getPanelPluginNotFound(pluginId));\n\n if (err instanceof Error) {\n this.setState({ _pluginLoadError: err.message });\n }\n }\n }\n }\n\n public getLegacyPanelId() {\n /**\n * The `/` part is here because a panel key can be in a clone chain\n * A clone chain looks like `panel-1-clone-0/grid-item-5/panel-14` where the last part is the panel key\n */\n const parts = this.state.key?.split('/') ?? [];\n\n if (parts.length === 0) {\n return 0;\n }\n\n const part = parts[parts.length - 1];\n const panelId = parseInt(part!.replace('panel-', ''), 10);\n\n if (isNaN(panelId)) {\n return 0;\n }\n\n return panelId;\n }\n\n /**\n * Unique id string that includes local variable values (for repeated panels)\n */\n public getPathId() {\n return buildPathIdFor(this);\n }\n\n private async _pluginLoaded(\n plugin: PanelPlugin,\n overwriteOptions?: DeepPartial<{}>,\n overwriteFieldConfig?: FieldConfigSource,\n isAfterPluginChange?: boolean\n ) {\n const { options, fieldConfig, title, pluginVersion, _UNSAFE_customMigrationHandler } = this.state;\n\n const panel: PanelModel = {\n title,\n options,\n fieldConfig,\n id: this.getLegacyPanelId(),\n type: plugin.meta.id,\n pluginVersion: pluginVersion,\n };\n\n if (overwriteOptions) {\n panel.options = overwriteOptions;\n }\n\n if (overwriteFieldConfig) {\n panel.fieldConfig = overwriteFieldConfig;\n }\n\n const currentVersion = this._getPluginVersion(plugin);\n\n _UNSAFE_customMigrationHandler?.(panel, plugin);\n\n //@ts-expect-error (TODO: remove after upgrading with https://github.com/grafana/grafana/pull/108998)\n const needsMigration = currentVersion !== pluginVersion || plugin.shouldMigrate?.(panel);\n\n if (plugin.onPanelMigration && needsMigration && !isAfterPluginChange) {\n // These migration handlers also mutate panel.fieldConfig to migrate fieldConfig\n panel.options = await plugin.onPanelMigration(panel);\n }\n\n // Some panels mutate the transformations on the panel as part of migrations.\n // Unfortunately, these mutations are not available until the panel plugin is loaded.\n // At this time, the data provider is already set, so this is the easiest way to fix it.\n let $data = this.state.$data;\n if (panel.transformations && $data) {\n if ($data instanceof SceneDataTransformer) {\n $data.setState({ transformations: panel.transformations });\n } else if ($data instanceof SceneQueryRunner) {\n $data.clearParent();\n $data = new SceneDataTransformer({\n transformations: panel.transformations,\n $data,\n });\n }\n }\n\n const withDefaults = getPanelOptionsWithDefaults({\n plugin,\n currentOptions: panel.options,\n currentFieldConfig: panel.fieldConfig,\n isAfterPluginChange: isAfterPluginChange ?? false,\n });\n\n this._plugin = plugin;\n\n this.setState({\n $data,\n options: withDefaults.options as DeepPartial<TOptions>,\n fieldConfig: withDefaults.fieldConfig,\n pluginVersion: currentVersion,\n pluginId: plugin.meta.id,\n });\n\n // Non data panels needs to be re-rendered when time range change\n if (plugin.meta.skipDataQuery) {\n const sceneTimeRange = sceneGraph.getTimeRange(this);\n this._subs.add(sceneTimeRange.subscribeToState(() => this.forceRender()));\n }\n }\n\n private _getPluginVersion(plugin: PanelPlugin): string {\n return plugin && plugin.meta.info.version ? plugin.meta.info.version : config.buildInfo.version;\n }\n\n public getPlugin(): PanelPlugin | undefined {\n return this._plugin;\n }\n\n public getPanelContext(): PanelContext {\n this._panelContext ??= this.buildPanelContext();\n\n return this._panelContext!;\n }\n\n public onTimeRangeChange = (timeRange: AbsoluteTimeRange) => {\n const sceneTimeRange = sceneGraph.getTimeRange(this);\n sceneTimeRange.onTimeRangeChange({\n raw: {\n from: toUtc(timeRange.from),\n to: toUtc(timeRange.to),\n },\n from: toUtc(timeRange.from),\n to: toUtc(timeRange.to),\n });\n };\n\n public getTimeRange = (data?: PanelData) => {\n const liveNowTimer = sceneGraph.findObject(this, (o) => o instanceof LiveNowTimer);\n const sceneTimeRange = sceneGraph.getTimeRange(this);\n\n if (liveNowTimer instanceof LiveNowTimer && liveNowTimer.isEnabled) {\n return evaluateTimeRange(\n sceneTimeRange.state.from,\n sceneTimeRange.state.to,\n sceneTimeRange.getTimeZone(),\n sceneTimeRange.state.fiscalYearStartMonth,\n sceneTimeRange.state.UNSAFE_nowDelay,\n sceneTimeRange.state.weekStart\n );\n }\n\n const plugin = this.getPlugin();\n if (plugin && !plugin.meta.skipDataQuery && data && data.timeRange) {\n return data.timeRange;\n }\n\n return sceneTimeRange.state.value;\n };\n\n public async changePluginType(pluginId: string, newOptions?: DeepPartial<{}>, newFieldConfig?: FieldConfigSource) {\n const { options: prevOptions, fieldConfig: prevFieldConfig, pluginId: prevPluginId } = this.state;\n\n //clear field config cache to update it later\n this._dataWithFieldConfig = undefined;\n\n // If state.pluginId is already the correct plugin we don't treat this as plain user panel type change\n const isAfterPluginChange = this.state.pluginId !== pluginId;\n await this._loadPlugin(pluginId, newOptions ?? {}, newFieldConfig, isAfterPluginChange);\n\n const panel: PanelModel = {\n title: this.state.title,\n options: this.state.options,\n fieldConfig: this.state.fieldConfig,\n id: 1,\n type: pluginId,\n };\n\n // onPanelTypeChanged is mainly used by plugins to migrate from Angular to React.\n // For example, this will migrate options from 'graph' to 'timeseries' if the previous and new plugin ID matches.\n const updatedOptions = this._plugin?.onPanelTypeChanged?.(panel, prevPluginId, prevOptions, prevFieldConfig);\n\n if (updatedOptions && !isEmpty(updatedOptions)) {\n this.onOptionsChange(updatedOptions, true, true);\n }\n }\n\n public onTitleChange = (title: string) => {\n this.setState({ title });\n };\n\n public onDescriptionChange = (description: string) => {\n this.setState({ description });\n };\n\n public onDisplayModeChange = (displayMode: 'default' | 'transparent') => {\n this.setState({ displayMode });\n };\n\n public onToggleCollapse = (collapsed: boolean) => {\n this.setState({\n collapsed,\n });\n };\n\n public onOptionsChange = (optionsUpdate: DeepPartial<TOptions>, replace = false, isAfterPluginChange = false) => {\n const { fieldConfig, options } = this.state;\n\n // When replace is true, we want to replace the entire options object. Default will be applied.\n const nextOptions = replace\n ? optionsUpdate\n : mergeWith(cloneDeep(options), optionsUpdate, (objValue, srcValue, key, obj) => {\n if (isArray(srcValue)) {\n return srcValue;\n }\n // If customizer returns undefined, merging is handled by the method instead\n // so we need to override the value in the object instead\n if (objValue !== srcValue && typeof srcValue === 'undefined') {\n obj[key] = srcValue;\n return;\n }\n return;\n });\n\n const withDefaults = getPanelOptionsWithDefaults({\n plugin: this._plugin!,\n currentOptions: nextOptions,\n currentFieldConfig: fieldConfig,\n isAfterPluginChange: isAfterPluginChange,\n });\n\n this.setState({\n options: withDefaults.options as DeepPartial<TOptions>,\n _renderCounter: (this.state._renderCounter ?? 0) + 1,\n });\n };\n\n public onFieldConfigChange = (fieldConfigUpdate: FieldConfigSource<DeepPartial<TFieldConfig>>, replace?: boolean) => {\n const { fieldConfig, options } = this.state;\n\n // When replace is true, we want to replace the entire field config. Default will be applied.\n const nextFieldConfig = replace ? fieldConfigUpdate : merge(cloneDeep(fieldConfig), fieldConfigUpdate);\n\n const withDefaults = getPanelOptionsWithDefaults({\n plugin: this._plugin!,\n currentOptions: options,\n currentFieldConfig: nextFieldConfig,\n isAfterPluginChange: false,\n });\n\n this._dataWithFieldConfig = undefined;\n this.setState({ fieldConfig: withDefaults.fieldConfig });\n };\n\n public interpolate = ((value: string, scoped?: ScopedVars, format?: string | VariableCustomFormatterFn) => {\n return sceneGraph.interpolate(this, value, scoped, format);\n }) as InterpolateFunction;\n\n public getDescription = () => {\n this.publishEvent(new UserActionEvent({ origin: this, interaction: 'panel-description-shown' }), true);\n\n const { description } = this.state;\n if (description) {\n const markdown = this.interpolate(description);\n return renderMarkdown(markdown);\n }\n return '';\n };\n\n public clearFieldConfigCache() {\n this._dataWithFieldConfig = undefined;\n }\n\n /**\n * Called from the react render path to apply the field config to the data provided by the data provider\n */\n public applyFieldConfig(rawData?: PanelData): PanelData {\n const plugin = this._plugin;\n\n if (!plugin || plugin.meta.skipDataQuery || !rawData) {\n // TODO setup time range subscription instead\n return emptyPanelData;\n }\n\n // If the data is the same as last time, we can skip the field config apply step and just return same result as last time\n if (this._prevData === rawData && this._dataWithFieldConfig) {\n return this._dataWithFieldConfig;\n }\n\n const pluginDataSupport: PanelPluginDataSupport = plugin.dataSupport || { alertStates: false, annotations: false };\n\n const fieldConfigRegistry = plugin.fieldConfigRegistry;\n const prevFrames = this._dataWithFieldConfig?.series ?? [];\n const newFrames = applyFieldOverrides({\n data: rawData.series,\n fieldConfig: this.state.fieldConfig,\n fieldConfigRegistry,\n replaceVariables: this.interpolate,\n theme: config.theme2,\n timeZone: rawData.request?.timezone,\n });\n\n if (!compareArrayValues(newFrames, prevFrames, compareDataFrameStructures)) {\n this._structureRev++;\n }\n\n this._dataWithFieldConfig = {\n ...rawData,\n structureRev: this._structureRev,\n series: newFrames,\n };\n\n if (this._dataWithFieldConfig.annotations) {\n this._dataWithFieldConfig.annotations = applyFieldOverrides({\n data: this._dataWithFieldConfig.annotations,\n fieldConfig: {\n defaults: {},\n overrides: [],\n },\n fieldConfigRegistry,\n replaceVariables: this.interpolate,\n theme: config.theme2,\n timeZone: rawData.request?.timezone,\n });\n }\n\n if (!pluginDataSupport.alertStates) {\n this._dataWithFieldConfig.alertState = undefined;\n }\n\n if (!pluginDataSupport.annotations) {\n this._dataWithFieldConfig.annotations = undefined;\n }\n\n this._prevData = rawData;\n return this._dataWithFieldConfig;\n }\n\n public onCancelQuery = () => {\n this.publishEvent(new UserActionEvent({ origin: this, interaction: 'panel-cancel-query-clicked' }), true);\n const data = sceneGraph.getData(this);\n data.cancelQuery?.();\n };\n\n public onStatusMessageClick = () => {\n this.publishEvent(new UserActionEvent({ origin: this, interaction: 'panel-status-message-clicked' }), true);\n };\n\n /**\n * Panel context functions\n */\n private _onSeriesColorChange = (label: string, color: string) => {\n this.onFieldConfigChange(changeSeriesColorConfigFactory(label, color, this.state.fieldConfig));\n };\n\n private _onSeriesVisibilityChange = (label: string, mode: SeriesVisibilityChangeMode) => {\n if (!this._dataWithFieldConfig) {\n return;\n }\n\n this.onFieldConfigChange(\n seriesVisibilityConfigFactory(label, mode, this.state.fieldConfig, this._dataWithFieldConfig.series),\n true\n );\n };\n\n private _onInstanceStateChange = (state: any) => {\n if (this._panelContext) {\n this._panelContext = {\n ...this._panelContext,\n instanceState: state,\n };\n }\n\n this.setState({ _pluginInstanceState: state });\n };\n\n private _onToggleLegendSort = (sortKey: string) => {\n const legendOptions: VizLegendOptions = (this.state.options as any).legend;\n\n // We don't want to do anything when legend options are not available\n if (!legendOptions) {\n return;\n }\n\n let sortDesc = legendOptions.sortDesc;\n let sortBy = legendOptions.sortBy;\n if (sortKey !== sortBy) {\n sortDesc = undefined;\n }\n\n // if already sort ascending, disable sorting\n if (sortDesc === false) {\n sortBy = undefined;\n sortDesc = undefined;\n } else {\n sortDesc = !sortDesc;\n sortBy = sortKey;\n }\n\n this.onOptionsChange(\n {\n ...this.state.options,\n legend: { ...legendOptions, sortBy, sortDesc },\n } as TOptions,\n true\n );\n };\n\n public clone(withState?: Partial<VizPanelState>) {\n // Clear _pluginInstanceState and _pluginLoadError as it's not safe to clone\n return super.clone({ _pluginInstanceState: undefined, _pluginLoadError: undefined, ...withState });\n }\n\n private buildPanelContext(): PanelContext {\n const sync = getCursorSyncScope(this);\n\n const context = {\n eventsScope: sync ? sync.getEventsScope() : '__global_',\n eventBus: sync ? sync.getEventsBus(this) : getAppEvents(),\n app: CoreApp.Unknown,\n sync: () => {\n if (sync) {\n return sync.state.sync;\n }\n return DashboardCursorSync.Off;\n },\n onSeriesColorChange: this._onSeriesColorChange,\n onToggleSeriesVisibility: this._onSeriesVisibilityChange,\n onToggleLegendSort: this._onToggleLegendSort,\n onInstanceStateChange: this._onInstanceStateChange,\n };\n\n if (this.state.extendPanelContext) {\n this.state.extendPanelContext(this, context);\n }\n\n return context;\n }\n}\n\nfunction getPanelPluginNotFound(id: string): PanelPlugin {\n const plugin = new PanelPlugin(() => null);\n\n plugin.meta = {\n id: id,\n name: id,\n sort: 100,\n type: PluginType.panel,\n module: '',\n baseUrl: '',\n info: {\n author: {\n name: '',\n },\n description: '',\n links: [],\n logos: {\n large: '',\n small: 'public/img/grafana_icon.svg',\n },\n screenshots: [],\n updated: '',\n version: '',\n },\n };\n\n return plugin;\n}\n"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -10,7 +10,7 @@ import { isRepeatCloneOrChildOf } from './utils/utils.js';
10
10
  import { registerVariableMacro } from './variables/macros/index.js';
11
11
  import { escapeURLDelimiters, escapeLabelValueInExactSelector, escapeLabelValueInRegexSelector, renderPrometheusLabelFilters } from './variables/utils.js';
12
12
  export { escapeUrlPipeDelimiters } from './variables/utils.js';
13
- import { isGroupByVariable, isTextBoxVariable, isQueryVariable, isIntervalVariable, isDataSourceVariable, isCustomVariable, isConstantVariable, isAdHocVariable } from './variables/variants/guards.js';
13
+ import { isSwitchVariable, isGroupByVariable, isTextBoxVariable, isQueryVariable, isIntervalVariable, isDataSourceVariable, isCustomVariable, isConstantVariable, isAdHocVariable } from './variables/variants/guards.js';
14
14
  export { isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject } from './core/types.js';
15
15
  export { SceneObjectStateChangedEvent, UserActionEvent } from './core/events.js';
16
16
  export { sceneGraph } from './core/sceneGraph/index.js';
@@ -38,6 +38,7 @@ export { VariableValueControl } from './variables/components/VariableValueContro
38
38
  export { SceneVariableSet } from './variables/sets/SceneVariableSet.js';
39
39
  export { ConstantVariable } from './variables/variants/ConstantVariable.js';
40
40
  export { CustomVariable } from './variables/variants/CustomVariable.js';
41
+ export { SwitchVariable } from './variables/variants/SwitchVariable.js';
41
42
  export { DataSourceVariable } from './variables/variants/DataSourceVariable.js';
42
43
  export { QueryVariable } from './variables/variants/query/QueryVariable.js';
43
44
  export { TestVariable } from './variables/variants/TestVariable.js';
@@ -47,6 +48,8 @@ export { MultiValueVariable } from './variables/variants/MultiValueVariable.js';
47
48
  export { LocalValueVariable } from './variables/variants/LocalValueVariable.js';
48
49
  export { IntervalVariable } from './variables/variants/IntervalVariable.js';
49
50
  export { AdHocFiltersVariable } from './variables/adhoc/AdHocFiltersVariable.js';
51
+ export { VariableBackedAdHocFiltersController } from './variables/adhoc/controller/VariableBackedAdHocFiltersController.js';
52
+ export { AdHocFiltersComboboxRenderer } from './variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js';
50
53
  export { GroupByVariable } from './variables/groupby/GroupByVariable.js';
51
54
  export { NewSceneObjectAddedEvent, UrlSyncManager } from './services/UrlSyncManager.js';
52
55
  export { useUrlSync } from './services/useUrlSync.js';
@@ -114,6 +117,7 @@ const sceneUtils = {
114
117
  isQueryVariable,
115
118
  isTextBoxVariable,
116
119
  isGroupByVariable,
120
+ isSwitchVariable,
117
121
  isRepeatCloneOrChildOf,
118
122
  buildPathIdFor
119
123
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import { getUrlWithAppState } from './components/SceneApp/utils';\nimport { registerRuntimePanelPlugin } from './components/VizPanel/registerRuntimePanelPlugin';\nimport { cloneSceneObjectState } from './core/sceneGraph/cloneSceneObject';\nimport { registerRuntimeDataSource } from './querying/RuntimeDataSource';\nimport { getUrlState, syncStateFromSearchParams } from './services/utils';\nimport { buildPathIdFor } from './utils/pathId';\nimport { isRepeatCloneOrChildOf } from './utils/utils';\n\nimport { registerVariableMacro } from './variables/macros';\nimport {\n escapeLabelValueInExactSelector,\n escapeLabelValueInRegexSelector,\n escapeURLDelimiters,\n renderPrometheusLabelFilters,\n} from './variables/utils';\nimport {\n isAdHocVariable,\n isQueryVariable,\n isTextBoxVariable,\n isCustomVariable,\n isDataSourceVariable,\n isConstantVariable,\n isIntervalVariable,\n isGroupByVariable,\n} from './variables/variants/guards';\n\nexport * from './core/types';\nexport * from './core/events';\nexport { sceneGraph } from './core/sceneGraph';\nexport * as behaviors from './behaviors';\nexport * as dataLayers from './querying/layers';\n\nexport { SceneObjectBase, useSceneObjectState } from './core/SceneObjectBase';\nexport { SceneDataNode } from './core/SceneDataNode';\nexport { SceneTimeRange } from './core/SceneTimeRange';\nexport { SceneTimeZoneOverride } from './core/SceneTimeZoneOverride';\n\nexport { SceneQueryRunner, type QueryRunnerState } from './querying/SceneQueryRunner';\nexport { DataProviderProxy } from './querying/DataProviderProxy';\nexport {\n type ExtraQueryDescriptor,\n type ExtraQueryProvider,\n type ExtraQueryDataProcessor,\n} from './querying/ExtraQueryProvider';\nexport { SceneDataLayerSet, SceneDataLayerSetBase } from './querying/SceneDataLayerSet';\nexport { SceneDataLayerBase } from './querying/layers/SceneDataLayerBase';\nexport { SceneDataLayerControls } from './querying/layers/SceneDataLayerControls';\nexport { SceneDataTransformer, type SceneDataTransformerState } from './querying/SceneDataTransformer';\nexport { registerQueryWithController } from './querying/registerQueryWithController';\nexport { registerRuntimeDataSource, RuntimeDataSource } from './querying/RuntimeDataSource';\nexport type {\n SceneQueryControllerLike,\n SceneQueryControllerEntryType,\n SceneQueryControllerEntry,\n SceneInteractionProfileEvent,\n} from './behaviors/types';\nexport { SceneRenderProfiler } from './behaviors/SceneRenderProfiler';\n\nexport * from './variables/types';\nexport { VariableDependencyConfig } from './variables/VariableDependencyConfig';\nexport { formatRegistry, type FormatVariable } from './variables/interpolation/formatRegistry';\nexport { VariableValueSelectors } from './variables/components/VariableValueSelectors';\nexport { VariableValueControl } from './variables/components/VariableValueControl';\nexport { SceneVariableSet } from './variables/sets/SceneVariableSet';\nexport { ConstantVariable } from './variables/variants/ConstantVariable';\nexport { CustomVariable } from './variables/variants/CustomVariable';\nexport { DataSourceVariable } from './variables/variants/DataSourceVariable';\nexport { QueryVariable } from './variables/variants/query/QueryVariable';\nexport { TestVariable } from './variables/variants/TestVariable';\nexport { TextBoxVariable } from './variables/variants/TextBoxVariable';\nexport { ScopesVariable } from './variables/variants/ScopesVariable';\nexport {\n MultiValueVariable,\n type MultiValueVariableState,\n type VariableGetOptionsArgs,\n} from './variables/variants/MultiValueVariable';\nexport { LocalValueVariable } from './variables/variants/LocalValueVariable';\nexport { IntervalVariable } from './variables/variants/IntervalVariable';\nexport { AdHocFiltersVariable } from './variables/adhoc/AdHocFiltersVariable';\nexport type { AdHocFilterWithLabels } from './variables/adhoc/AdHocFiltersVariable';\nexport { GroupByVariable } from './variables/groupby/GroupByVariable';\nexport { type MacroVariableConstructor } from './variables/macros/types';\nexport { escapeUrlPipeDelimiters } from './variables/utils';\n\nexport { type UrlSyncManagerLike, UrlSyncManager, NewSceneObjectAddedEvent } from './services/UrlSyncManager';\nexport { useUrlSync } from './services/useUrlSync';\nexport { UrlSyncContextProvider } from './services/UrlSyncContextProvider';\nexport { SceneObjectUrlSyncConfig } from './services/SceneObjectUrlSyncConfig';\n\nexport { EmbeddedScene, type EmbeddedSceneState } from './components/EmbeddedScene';\nexport { VizPanel, type VizPanelState } from './components/VizPanel/VizPanel';\nexport { VizPanelMenu } from './components/VizPanel/VizPanelMenu';\nexport { VizPanelExploreButton } from './components/VizPanel/VizPanelExploreButton';\nexport { NestedScene } from './components/NestedScene';\nexport { SceneCanvasText } from './components/SceneCanvasText';\nexport { SceneToolbarButton, SceneToolbarInput } from './components/SceneToolbarButton';\nexport { SceneTimePicker } from './components/SceneTimePicker';\nexport { SceneRefreshPicker, type SceneRefreshPickerState } from './components/SceneRefreshPicker';\nexport { SceneTimeRangeTransformerBase } from './core/SceneTimeRangeTransformerBase';\nexport { SceneTimeRangeCompare } from './components/SceneTimeRangeCompare';\nexport { SceneByFrameRepeater } from './components/SceneByFrameRepeater';\nexport { SceneByVariableRepeater } from './components/SceneByVariableRepeater';\nexport { SceneControlsSpacer } from './components/SceneControlsSpacer';\nexport {\n SceneFlexLayout,\n SceneFlexItem,\n type SceneFlexItemState,\n type SceneFlexItemLike,\n} from './components/layout/SceneFlexLayout';\nexport { SceneCSSGridLayout, SceneCSSGridItem } from './components/layout/CSSGrid/SceneCSSGridLayout';\nexport { SceneGridLayout } from './components/layout/grid/SceneGridLayout';\nexport { SceneGridLayoutDragStartEvent } from './components/layout/grid/types';\nexport { SceneGridItem } from './components/layout/grid/SceneGridItem';\nexport { SceneGridRow } from './components/layout/grid/SceneGridRow';\nexport { type SceneGridItemStateLike, type SceneGridItemLike } from './components/layout/grid/types';\nexport { SplitLayout } from './components/layout/split/SplitLayout';\nexport { LazyLoader } from './components/layout/LazyLoader';\nexport {\n type SceneAppPageLike,\n type SceneRouteMatch,\n type SceneAppPageState,\n type SceneAppDrilldownView,\n type SceneAppRoute,\n} from './components/SceneApp/types';\nexport { SceneApp, useSceneApp } from './components/SceneApp/SceneApp';\nexport { SceneAppPage } from './components/SceneApp/SceneAppPage';\nexport { SceneReactObject } from './components/SceneReactObject';\nexport { SceneObjectRef } from './core/SceneObjectRef';\nexport {\n PanelBuilders,\n PanelOptionsBuilders,\n FieldConfigBuilders,\n FieldConfigOverridesBuilder,\n} from './core/PanelBuilders';\nexport { FieldConfigBuilder } from './core/PanelBuilders/FieldConfigBuilder';\nexport { VizPanelBuilder } from './core/PanelBuilders/VizPanelBuilder';\nexport { SceneDebugger } from './components/SceneDebugger/SceneDebugger';\nexport { VariableValueSelectWrapper } from './variables/components/VariableValueSelectors';\nexport { ControlsLabel } from './utils/ControlsLabel';\nexport { MultiOrSingleValueSelect } from './variables/components/VariableValueSelect';\nexport { VizConfigBuilder } from './core/PanelBuilders/VizConfigBuilder';\nexport { VizConfigBuilders } from './core/PanelBuilders/VizConfigBuilders';\nexport { type VizConfig } from './core/PanelBuilders/types';\n\nexport const sceneUtils = {\n getUrlWithAppState,\n registerRuntimePanelPlugin,\n registerRuntimeDataSource,\n registerVariableMacro,\n cloneSceneObjectState,\n syncStateFromSearchParams,\n getUrlState,\n renderPrometheusLabelFilters,\n escapeLabelValueInRegexSelector,\n escapeLabelValueInExactSelector,\n escapeURLDelimiters,\n\n // Variable guards\n isAdHocVariable,\n isConstantVariable,\n isCustomVariable,\n isDataSourceVariable,\n isIntervalVariable,\n isQueryVariable,\n isTextBoxVariable,\n isGroupByVariable,\n isRepeatCloneOrChildOf,\n buildPathIdFor,\n};\n\nexport { SafeSerializableSceneObject } from './utils/SafeSerializableSceneObject';\nexport { getExploreURL } from './utils/explore';\nexport { loadResources } from './utils/loadResources';\nexport { PATH_ID_SEPARATOR } from './utils/pathId';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgJO,MAAM,UAAa,GAAA;AAAA,EACxB,kBAAA;AAAA,EACA,0BAAA;AAAA,EACA,yBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,WAAA;AAAA,EACA,4BAAA;AAAA,EACA,+BAAA;AAAA,EACA,+BAAA;AAAA,EACA,mBAAA;AAAA;AAAA,EAGA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACF;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import { getUrlWithAppState } from './components/SceneApp/utils';\nimport { registerRuntimePanelPlugin } from './components/VizPanel/registerRuntimePanelPlugin';\nimport { cloneSceneObjectState } from './core/sceneGraph/cloneSceneObject';\nimport { registerRuntimeDataSource } from './querying/RuntimeDataSource';\nimport { getUrlState, syncStateFromSearchParams } from './services/utils';\nimport { buildPathIdFor } from './utils/pathId';\nimport { isRepeatCloneOrChildOf } from './utils/utils';\n\nimport { registerVariableMacro } from './variables/macros';\nimport {\n escapeLabelValueInExactSelector,\n escapeLabelValueInRegexSelector,\n escapeURLDelimiters,\n renderPrometheusLabelFilters,\n} from './variables/utils';\nimport {\n isAdHocVariable,\n isQueryVariable,\n isTextBoxVariable,\n isCustomVariable,\n isDataSourceVariable,\n isConstantVariable,\n isIntervalVariable,\n isGroupByVariable,\n isSwitchVariable,\n} from './variables/variants/guards';\n\nexport * from './core/types';\nexport * from './core/events';\nexport { sceneGraph } from './core/sceneGraph';\nexport * as behaviors from './behaviors';\nexport * as dataLayers from './querying/layers';\n\nexport { SceneObjectBase, useSceneObjectState } from './core/SceneObjectBase';\nexport { SceneDataNode } from './core/SceneDataNode';\nexport { SceneTimeRange } from './core/SceneTimeRange';\nexport { SceneTimeZoneOverride } from './core/SceneTimeZoneOverride';\n\nexport { SceneQueryRunner, type QueryRunnerState } from './querying/SceneQueryRunner';\nexport { DataProviderProxy } from './querying/DataProviderProxy';\nexport {\n type ExtraQueryDescriptor,\n type ExtraQueryProvider,\n type ExtraQueryDataProcessor,\n} from './querying/ExtraQueryProvider';\nexport { SceneDataLayerSet, SceneDataLayerSetBase } from './querying/SceneDataLayerSet';\nexport { SceneDataLayerBase } from './querying/layers/SceneDataLayerBase';\nexport { SceneDataLayerControls } from './querying/layers/SceneDataLayerControls';\nexport { SceneDataTransformer, type SceneDataTransformerState } from './querying/SceneDataTransformer';\nexport { registerQueryWithController } from './querying/registerQueryWithController';\nexport { registerRuntimeDataSource, RuntimeDataSource } from './querying/RuntimeDataSource';\nexport type {\n SceneQueryControllerLike,\n SceneQueryControllerEntryType,\n SceneQueryControllerEntry,\n SceneInteractionProfileEvent,\n} from './behaviors/types';\nexport { SceneRenderProfiler } from './behaviors/SceneRenderProfiler';\n\nexport * from './variables/types';\nexport { VariableDependencyConfig } from './variables/VariableDependencyConfig';\nexport { formatRegistry, type FormatVariable } from './variables/interpolation/formatRegistry';\nexport { VariableValueSelectors } from './variables/components/VariableValueSelectors';\nexport { VariableValueControl } from './variables/components/VariableValueControl';\nexport { SceneVariableSet } from './variables/sets/SceneVariableSet';\nexport { ConstantVariable } from './variables/variants/ConstantVariable';\nexport { CustomVariable } from './variables/variants/CustomVariable';\nexport { SwitchVariable } from './variables/variants/SwitchVariable';\nexport { DataSourceVariable } from './variables/variants/DataSourceVariable';\nexport { QueryVariable } from './variables/variants/query/QueryVariable';\nexport { TestVariable } from './variables/variants/TestVariable';\nexport { TextBoxVariable } from './variables/variants/TextBoxVariable';\nexport { ScopesVariable } from './variables/variants/ScopesVariable';\nexport {\n MultiValueVariable,\n type MultiValueVariableState,\n type VariableGetOptionsArgs,\n} from './variables/variants/MultiValueVariable';\nexport { LocalValueVariable } from './variables/variants/LocalValueVariable';\nexport { IntervalVariable } from './variables/variants/IntervalVariable';\nexport { AdHocFiltersVariable } from './variables/adhoc/AdHocFiltersVariable';\nexport type { AdHocFilterWithLabels } from './variables/adhoc/AdHocFiltersVariable';\nexport type {\n AdHocFiltersController,\n AdHocFiltersControllerState,\n} from './variables/adhoc/controller/AdHocFiltersController';\nexport { VariableBackedAdHocFiltersController } from './variables/adhoc/controller/VariableBackedAdHocFiltersController';\nexport { AdHocFiltersComboboxRenderer } from './variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer';\nexport { GroupByVariable } from './variables/groupby/GroupByVariable';\nexport { type MacroVariableConstructor } from './variables/macros/types';\nexport { escapeUrlPipeDelimiters } from './variables/utils';\n\nexport { type UrlSyncManagerLike, UrlSyncManager, NewSceneObjectAddedEvent } from './services/UrlSyncManager';\nexport { useUrlSync } from './services/useUrlSync';\nexport { UrlSyncContextProvider } from './services/UrlSyncContextProvider';\nexport { SceneObjectUrlSyncConfig } from './services/SceneObjectUrlSyncConfig';\n\nexport { EmbeddedScene, type EmbeddedSceneState } from './components/EmbeddedScene';\nexport { VizPanel, type VizPanelState } from './components/VizPanel/VizPanel';\nexport { VizPanelMenu } from './components/VizPanel/VizPanelMenu';\nexport { VizPanelExploreButton } from './components/VizPanel/VizPanelExploreButton';\nexport { NestedScene } from './components/NestedScene';\nexport { SceneCanvasText } from './components/SceneCanvasText';\nexport { SceneToolbarButton, SceneToolbarInput } from './components/SceneToolbarButton';\nexport { SceneTimePicker } from './components/SceneTimePicker';\nexport { SceneRefreshPicker, type SceneRefreshPickerState } from './components/SceneRefreshPicker';\nexport { SceneTimeRangeTransformerBase } from './core/SceneTimeRangeTransformerBase';\nexport { SceneTimeRangeCompare } from './components/SceneTimeRangeCompare';\nexport { SceneByFrameRepeater } from './components/SceneByFrameRepeater';\nexport { SceneByVariableRepeater } from './components/SceneByVariableRepeater';\nexport { SceneControlsSpacer } from './components/SceneControlsSpacer';\nexport {\n SceneFlexLayout,\n SceneFlexItem,\n type SceneFlexItemState,\n type SceneFlexItemLike,\n} from './components/layout/SceneFlexLayout';\nexport { SceneCSSGridLayout, SceneCSSGridItem } from './components/layout/CSSGrid/SceneCSSGridLayout';\nexport { SceneGridLayout } from './components/layout/grid/SceneGridLayout';\nexport { SceneGridLayoutDragStartEvent } from './components/layout/grid/types';\nexport { SceneGridItem } from './components/layout/grid/SceneGridItem';\nexport { SceneGridRow } from './components/layout/grid/SceneGridRow';\nexport { type SceneGridItemStateLike, type SceneGridItemLike } from './components/layout/grid/types';\nexport { SplitLayout } from './components/layout/split/SplitLayout';\nexport { LazyLoader } from './components/layout/LazyLoader';\nexport {\n type SceneAppPageLike,\n type SceneRouteMatch,\n type SceneAppPageState,\n type SceneAppDrilldownView,\n type SceneAppRoute,\n} from './components/SceneApp/types';\nexport { SceneApp, useSceneApp } from './components/SceneApp/SceneApp';\nexport { SceneAppPage } from './components/SceneApp/SceneAppPage';\nexport { SceneReactObject } from './components/SceneReactObject';\nexport { SceneObjectRef } from './core/SceneObjectRef';\nexport {\n PanelBuilders,\n PanelOptionsBuilders,\n FieldConfigBuilders,\n FieldConfigOverridesBuilder,\n} from './core/PanelBuilders';\nexport { FieldConfigBuilder } from './core/PanelBuilders/FieldConfigBuilder';\nexport { VizPanelBuilder } from './core/PanelBuilders/VizPanelBuilder';\nexport { SceneDebugger } from './components/SceneDebugger/SceneDebugger';\nexport { VariableValueSelectWrapper } from './variables/components/VariableValueSelectors';\nexport { ControlsLabel } from './utils/ControlsLabel';\nexport { MultiOrSingleValueSelect } from './variables/components/VariableValueSelect';\nexport { VizConfigBuilder } from './core/PanelBuilders/VizConfigBuilder';\nexport { VizConfigBuilders } from './core/PanelBuilders/VizConfigBuilders';\nexport { type VizConfig } from './core/PanelBuilders/types';\n\nexport const sceneUtils = {\n getUrlWithAppState,\n registerRuntimePanelPlugin,\n registerRuntimeDataSource,\n registerVariableMacro,\n cloneSceneObjectState,\n syncStateFromSearchParams,\n getUrlState,\n renderPrometheusLabelFilters,\n escapeLabelValueInRegexSelector,\n escapeLabelValueInExactSelector,\n escapeURLDelimiters,\n\n // Variable guards\n isAdHocVariable,\n isConstantVariable,\n isCustomVariable,\n isDataSourceVariable,\n isIntervalVariable,\n isQueryVariable,\n isTextBoxVariable,\n isGroupByVariable,\n isSwitchVariable,\n isRepeatCloneOrChildOf,\n buildPathIdFor,\n};\n\nexport { SafeSerializableSceneObject } from './utils/SafeSerializableSceneObject';\nexport { getExploreURL } from './utils/explore';\nexport { loadResources } from './utils/loadResources';\nexport { PATH_ID_SEPARATOR } from './utils/pathId';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwJO,MAAM,UAAa,GAAA;AAAA,EACxB,kBAAA;AAAA,EACA,0BAAA;AAAA,EACA,yBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,WAAA;AAAA,EACA,4BAAA;AAAA,EACA,+BAAA;AAAA,EACA,+BAAA;AAAA,EACA,mBAAA;AAAA;AAAA,EAGA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACF;;;;"}
@@ -37,9 +37,21 @@ function DataLayerControlSwitch({ layer }) {
37
37
  description: layer.state.description,
38
38
  error: (_b = (_a = layer.state.data) == null ? void 0 : _a.errors) == null ? void 0 : _b[0].message
39
39
  }
40
- ), /* @__PURE__ */ React.createElement(InlineSwitch, { id: elementId, value: isEnabled, onChange: () => layer.setState({ isEnabled: !isEnabled }) }));
40
+ ), /* @__PURE__ */ React.createElement(
41
+ InlineSwitch,
42
+ {
43
+ className: switchStyle,
44
+ id: elementId,
45
+ value: isEnabled,
46
+ onChange: () => layer.setState({ isEnabled: !isEnabled })
47
+ }
48
+ ));
41
49
  }
42
50
  const containerStyle = css({ display: "flex" });
51
+ const switchStyle = css({
52
+ borderBottomLeftRadius: 0,
53
+ borderTopLeftRadius: 0
54
+ });
43
55
 
44
56
  export { DataLayerControlSwitch, SceneDataLayerControls };
45
57
  //# sourceMappingURL=SceneDataLayerControls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneDataLayerControls.js","sources":["../../../../src/querying/layers/SceneDataLayerControls.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { LoadingState } from '@grafana/schema';\nimport { InlineSwitch } from '@grafana/ui';\nimport React from 'react';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport { SceneComponentProps, SceneDataLayerProvider, SceneObjectState } from '../../core/types';\nimport { ControlsLabel } from '../../utils/ControlsLabel';\n\ninterface SceneDataLayerControlsState extends SceneObjectState {}\n\nexport class SceneDataLayerControls extends SceneObjectBase<SceneDataLayerControlsState> {\n public static Component = SceneDataLayerControlsRenderer;\n\n public constructor() {\n super({});\n }\n}\n\nfunction SceneDataLayerControlsRenderer({ model }: SceneComponentProps<SceneDataLayerControls>) {\n const layers = sceneGraph.getDataLayers(model, true);\n\n if (layers.length === 0) {\n return null;\n }\n\n return (\n <>\n {layers.map((layer) => (\n <layer.Component model={layer} key={layer.state.key} />\n ))}\n </>\n );\n}\n\ninterface SceneDataLayerControlProps {\n layer: SceneDataLayerProvider;\n}\n\nexport function DataLayerControlSwitch({ layer }: SceneDataLayerControlProps) {\n const elementId = `data-layer-${layer.state.key}`;\n const { data, isEnabled } = layer.useState();\n const showLoading = Boolean(data && data.state === LoadingState.Loading);\n\n return (\n <div className={containerStyle}>\n <ControlsLabel\n htmlFor={elementId}\n isLoading={showLoading}\n onCancel={() => layer.cancelQuery?.()}\n label={layer.state.name}\n description={layer.state.description}\n error={layer.state.data?.errors?.[0].message}\n />\n <InlineSwitch id={elementId} value={isEnabled} onChange={() => layer.setState({ isEnabled: !isEnabled })} />\n </div>\n );\n}\n\nconst containerStyle = css({ display: 'flex' });\n"],"names":["_a"],"mappings":";;;;;;;;AAWO,MAAM,+BAA+B,eAA6C,CAAA;AAAA,EAGhF,WAAc,GAAA;AACnB,IAAA,KAAA,CAAM,EAAE,CAAA;AAAA;AAEZ;AANa,sBAAA,CACG,SAAY,GAAA,8BAAA;AAO5B,SAAS,8BAAA,CAA+B,EAAE,KAAA,EAAsD,EAAA;AAC9F,EAAA,MAAM,MAAS,GAAA,UAAA,CAAW,aAAc,CAAA,KAAA,EAAO,IAAI,CAAA;AAEnD,EAAI,IAAA,MAAA,CAAO,WAAW,CAAG,EAAA;AACvB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,iEAEK,MAAO,CAAA,GAAA,CAAI,CAAC,KAAA,yCACV,KAAM,CAAA,SAAA,EAAN,EAAgB,KAAA,EAAO,OAAO,GAAK,EAAA,KAAA,CAAM,KAAM,CAAA,GAAA,EAAK,CACtD,CACH,CAAA;AAEJ;AAMgB,SAAA,sBAAA,CAAuB,EAAE,KAAA,EAAqC,EAAA;AAvC9E,EAAA,IAAA,EAAA,EAAA,EAAA;AAwCE,EAAA,MAAM,SAAY,GAAA,CAAA,WAAA,EAAc,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAC/C,EAAA,MAAM,EAAE,IAAA,EAAM,SAAU,EAAA,GAAI,MAAM,QAAS,EAAA;AAC3C,EAAA,MAAM,cAAc,OAAQ,CAAA,IAAA,IAAQ,IAAK,CAAA,KAAA,KAAU,aAAa,OAAO,CAAA;AAEvE,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,cACd,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,SAAA;AAAA,MACT,SAAW,EAAA,WAAA;AAAA,MACX,UAAU,MAAG;AAjDrB,QAAAA,IAAAA,GAAAA;AAiDwB,QAAA,OAAA,CAAAA,GAAA,GAAA,KAAA,CAAM,WAAN,KAAA,IAAA,GAAA,MAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,KAAA,CAAA;AAAA,OAAA;AAAA,MAChB,KAAA,EAAO,MAAM,KAAM,CAAA,IAAA;AAAA,MACnB,WAAA,EAAa,MAAM,KAAM,CAAA,WAAA;AAAA,MACzB,QAAO,EAAM,GAAA,CAAA,EAAA,GAAA,KAAA,CAAA,KAAA,CAAM,SAAZ,IAAkB,GAAA,MAAA,GAAA,EAAA,CAAA,MAAA,KAAlB,mBAA2B,CAAG,CAAA,CAAA;AAAA;AAAA,qBAEtC,KAAA,CAAA,aAAA,CAAA,YAAA,EAAA,EAAa,EAAI,EAAA,SAAA,EAAW,OAAO,SAAW,EAAA,QAAA,EAAU,MAAM,KAAA,CAAM,SAAS,EAAE,SAAA,EAAW,CAAC,SAAU,EAAC,GAAG,CAC5G,CAAA;AAEJ;AAEA,MAAM,cAAiB,GAAA,GAAA,CAAI,EAAE,OAAA,EAAS,QAAQ,CAAA;;;;"}
1
+ {"version":3,"file":"SceneDataLayerControls.js","sources":["../../../../src/querying/layers/SceneDataLayerControls.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { LoadingState } from '@grafana/schema';\nimport { InlineSwitch } from '@grafana/ui';\nimport React from 'react';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport { SceneComponentProps, SceneDataLayerProvider, SceneObjectState } from '../../core/types';\nimport { ControlsLabel } from '../../utils/ControlsLabel';\n\ninterface SceneDataLayerControlsState extends SceneObjectState {}\n\nexport class SceneDataLayerControls extends SceneObjectBase<SceneDataLayerControlsState> {\n public static Component = SceneDataLayerControlsRenderer;\n\n public constructor() {\n super({});\n }\n}\n\nfunction SceneDataLayerControlsRenderer({ model }: SceneComponentProps<SceneDataLayerControls>) {\n const layers = sceneGraph.getDataLayers(model, true);\n\n if (layers.length === 0) {\n return null;\n }\n\n return (\n <>\n {layers.map((layer) => (\n <layer.Component model={layer} key={layer.state.key} />\n ))}\n </>\n );\n}\n\ninterface SceneDataLayerControlProps {\n layer: SceneDataLayerProvider;\n}\n\nexport function DataLayerControlSwitch({ layer }: SceneDataLayerControlProps) {\n const elementId = `data-layer-${layer.state.key}`;\n const { data, isEnabled } = layer.useState();\n const showLoading = Boolean(data && data.state === LoadingState.Loading);\n\n return (\n <div className={containerStyle}>\n <ControlsLabel\n htmlFor={elementId}\n isLoading={showLoading}\n onCancel={() => layer.cancelQuery?.()}\n label={layer.state.name}\n description={layer.state.description}\n error={layer.state.data?.errors?.[0].message}\n />\n <InlineSwitch\n className={switchStyle}\n id={elementId}\n value={isEnabled}\n onChange={() => layer.setState({ isEnabled: !isEnabled })}\n />\n </div>\n );\n}\n\nconst containerStyle = css({ display: 'flex' });\n\nconst switchStyle = css({\n borderBottomLeftRadius: 0,\n borderTopLeftRadius: 0,\n});\n"],"names":["_a"],"mappings":";;;;;;;;AAWO,MAAM,+BAA+B,eAA6C,CAAA;AAAA,EAGhF,WAAc,GAAA;AACnB,IAAA,KAAA,CAAM,EAAE,CAAA;AAAA;AAEZ;AANa,sBAAA,CACG,SAAY,GAAA,8BAAA;AAO5B,SAAS,8BAAA,CAA+B,EAAE,KAAA,EAAsD,EAAA;AAC9F,EAAA,MAAM,MAAS,GAAA,UAAA,CAAW,aAAc,CAAA,KAAA,EAAO,IAAI,CAAA;AAEnD,EAAI,IAAA,MAAA,CAAO,WAAW,CAAG,EAAA;AACvB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,iEAEK,MAAO,CAAA,GAAA,CAAI,CAAC,KAAA,yCACV,KAAM,CAAA,SAAA,EAAN,EAAgB,KAAA,EAAO,OAAO,GAAK,EAAA,KAAA,CAAM,KAAM,CAAA,GAAA,EAAK,CACtD,CACH,CAAA;AAEJ;AAMgB,SAAA,sBAAA,CAAuB,EAAE,KAAA,EAAqC,EAAA;AAvC9E,EAAA,IAAA,EAAA,EAAA,EAAA;AAwCE,EAAA,MAAM,SAAY,GAAA,CAAA,WAAA,EAAc,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAC/C,EAAA,MAAM,EAAE,IAAA,EAAM,SAAU,EAAA,GAAI,MAAM,QAAS,EAAA;AAC3C,EAAA,MAAM,cAAc,OAAQ,CAAA,IAAA,IAAQ,IAAK,CAAA,KAAA,KAAU,aAAa,OAAO,CAAA;AAEvE,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,cACd,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,SAAA;AAAA,MACT,SAAW,EAAA,WAAA;AAAA,MACX,UAAU,MAAG;AAjDrB,QAAAA,IAAAA,GAAAA;AAiDwB,QAAA,OAAA,CAAAA,GAAA,GAAA,KAAA,CAAM,WAAN,KAAA,IAAA,GAAA,MAAA,GAAAA,GAAA,CAAA,IAAA,CAAA,KAAA,CAAA;AAAA,OAAA;AAAA,MAChB,KAAA,EAAO,MAAM,KAAM,CAAA,IAAA;AAAA,MACnB,WAAA,EAAa,MAAM,KAAM,CAAA,WAAA;AAAA,MACzB,QAAO,EAAM,GAAA,CAAA,EAAA,GAAA,KAAA,CAAA,KAAA,CAAM,SAAZ,IAAkB,GAAA,MAAA,GAAA,EAAA,CAAA,MAAA,KAAlB,mBAA2B,CAAG,CAAA,CAAA;AAAA;AAAA,GAEvC,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,WAAA;AAAA,MACX,EAAI,EAAA,SAAA;AAAA,MACJ,KAAO,EAAA,SAAA;AAAA,MACP,QAAA,EAAU,MAAM,KAAM,CAAA,QAAA,CAAS,EAAE,SAAW,EAAA,CAAC,WAAW;AAAA;AAAA,GAE5D,CAAA;AAEJ;AAEA,MAAM,cAAiB,GAAA,GAAA,CAAI,EAAE,OAAA,EAAS,QAAQ,CAAA;AAE9C,MAAM,cAAc,GAAI,CAAA;AAAA,EACtB,sBAAwB,EAAA,CAAA;AAAA,EACxB,mBAAqB,EAAA;AACvB,CAAC,CAAA;;;;"}
@@ -7,7 +7,7 @@ import { t } from '@grafana/i18n';
7
7
  import { getNonApplicablePillStyles } from '../../utils.js';
8
8
 
9
9
  const LABEL_MAX_VISIBLE_LENGTH = 20;
10
- function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
10
+ function AdHocFilterPill({ filter, controller, readOnly, focusOnWipInputRef }) {
11
11
  var _a, _b, _c, _d;
12
12
  const styles = useStyles2(getStyles);
13
13
  const [viewMode, setViewMode] = useState(true);
@@ -37,9 +37,9 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
37
37
  useEffect(() => {
38
38
  if (filter.forceEdit && viewMode) {
39
39
  setViewMode(false);
40
- model._updateFilter(filter, { forceEdit: void 0 });
40
+ controller.updateFilter(filter, { forceEdit: void 0 });
41
41
  }
42
- }, [filter, model, viewMode]);
42
+ }, [filter, controller, viewMode]);
43
43
  useEffect(() => {
44
44
  if (viewMode) {
45
45
  setPopulateInputOnEdit((prevValue) => prevValue ? false : prevValue);
@@ -105,9 +105,9 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
105
105
  onClick: (e) => {
106
106
  e.stopPropagation();
107
107
  if (filter.origin && filter.origin === "dashboard") {
108
- model.updateToMatchAll(filter);
108
+ controller.updateToMatchAll(filter);
109
109
  } else {
110
- model._removeFilter(filter);
110
+ controller.removeFilter(filter);
111
111
  }
112
112
  setTimeout(() => focusOnWipInputRef == null ? void 0 : focusOnWipInputRef());
113
113
  },
@@ -116,9 +116,9 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
116
116
  e.preventDefault();
117
117
  e.stopPropagation();
118
118
  if (filter.origin && filter.origin === "dashboard") {
119
- model.updateToMatchAll(filter);
119
+ controller.updateToMatchAll(filter);
120
120
  } else {
121
- model._removeFilter(filter);
121
+ controller.removeFilter(filter);
122
122
  }
123
123
  setTimeout(() => focusOnWipInputRef == null ? void 0 : focusOnWipInputRef());
124
124
  }
@@ -151,13 +151,13 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
151
151
  {
152
152
  onClick: (e) => {
153
153
  e.stopPropagation();
154
- model.restoreOriginalFilter(filter);
154
+ controller.restoreOriginalFilter(filter);
155
155
  },
156
156
  onKeyDownCapture: (e) => {
157
157
  if (e.key === "Enter") {
158
158
  e.preventDefault();
159
159
  e.stopPropagation();
160
- model.restoreOriginalFilter(filter);
160
+ controller.restoreOriginalFilter(filter);
161
161
  }
162
162
  },
163
163
  name: "history",
@@ -180,7 +180,7 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
180
180
  AdHocCombobox,
181
181
  {
182
182
  filter,
183
- model,
183
+ controller,
184
184
  handleChangeViewMode,
185
185
  focusOnWipInputRef,
186
186
  populateInputOnEdit
@@ -1 +1 @@
1
- {"version":3,"file":"AdHocFilterPill.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2, IconButton, Tooltip, Icon } from '@grafana/ui';\nimport React, { useState, useRef, useCallback, useEffect } from 'react';\nimport { AdHocCombobox } from './AdHocFiltersCombobox';\nimport { AdHocFilterWithLabels, AdHocFiltersVariable, FilterOrigin, isMatchAllFilter } from '../AdHocFiltersVariable';\nimport { t } from '@grafana/i18n';\nimport { getNonApplicablePillStyles } from '../../utils';\n\nconst LABEL_MAX_VISIBLE_LENGTH = 20;\n\ninterface Props {\n filter: AdHocFilterWithLabels;\n model: AdHocFiltersVariable;\n readOnly?: boolean;\n focusOnWipInputRef?: () => void;\n}\n\nexport function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }: Props) {\n const styles = useStyles2(getStyles);\n const [viewMode, setViewMode] = useState(true);\n const [shouldFocusOnPillWrapper, setShouldFocusOnPillWrapper] = useState(false);\n const pillWrapperRef = useRef<HTMLDivElement>(null);\n const [populateInputOnEdit, setPopulateInputOnEdit] = useState(false);\n\n const keyLabel = filter.keyLabel ?? filter.key;\n const valueLabel = filter.valueLabels?.join(', ') || filter.values?.join(', ') || filter.value;\n\n const handleChangeViewMode = useCallback(\n (event?: React.MouseEvent, shouldFocusOnPillWrapperOverride?: boolean) => {\n event?.stopPropagation();\n if (readOnly) {\n return;\n }\n\n setShouldFocusOnPillWrapper(shouldFocusOnPillWrapperOverride ?? !viewMode);\n setViewMode(!viewMode);\n },\n [readOnly, viewMode]\n );\n\n useEffect(() => {\n if (shouldFocusOnPillWrapper) {\n pillWrapperRef.current?.focus();\n setShouldFocusOnPillWrapper(false);\n }\n }, [shouldFocusOnPillWrapper]);\n\n // set viewMode to false when filter.forceEdit is defined\n useEffect(() => {\n if (filter.forceEdit && viewMode) {\n setViewMode(false);\n // immediately set forceEdit back to undefined as a clean up\n model._updateFilter(filter, { forceEdit: undefined });\n }\n }, [filter, model, viewMode]);\n\n // reset populateInputOnEdit when pill goes into view mode\n useEffect(() => {\n if (viewMode) {\n setPopulateInputOnEdit((prevValue) => (prevValue ? false : prevValue));\n }\n }, [viewMode]);\n\n const getOriginFilterTooltips = (origin: FilterOrigin): { info: string; restore: string } => {\n if (origin === 'dashboard') {\n return {\n info: 'Applied by default in this dashboard. If edited, it carries over to other dashboards.',\n restore: 'Restore the value set by this dashboard.',\n };\n } else if (origin === 'scope') {\n return {\n info: 'Applied automatically from your selected scope.',\n restore: 'Restore the value set by your selected scope.',\n };\n } else {\n return {\n info: `This is a ${origin} injected filter.`,\n restore: `Restore filter to its original value.`,\n };\n }\n };\n\n // filters that are in a clean, original state that are applicable and not readonly\n const cleanFilter = !filter.restorable && !filter.readOnly && !filter.nonApplicable;\n\n if (viewMode) {\n const pillTextContent = `${keyLabel} ${filter.operator} ${valueLabel}`;\n const pillText = (\n <span className={cx(styles.pillText, filter.nonApplicable && styles.strikethrough)}>{pillTextContent}</span>\n );\n\n return (\n <div\n className={cx(\n styles.combinedFilterPill,\n readOnly && styles.readOnlyCombinedFilter,\n (isMatchAllFilter(filter) || filter.nonApplicable) && styles.disabledPill,\n filter.readOnly && styles.filterReadOnly\n )}\n onClick={(e) => {\n e.stopPropagation();\n setPopulateInputOnEdit(true);\n handleChangeViewMode();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n setPopulateInputOnEdit(true);\n handleChangeViewMode();\n }\n }}\n role={readOnly ? undefined : 'button'}\n aria-label={t(\n 'grafana-scenes.components.adhoc-filter-pill.edit-filter-with-key',\n 'Edit filter with key {{keyLabel}}',\n {\n keyLabel,\n }\n )}\n tabIndex={0}\n ref={pillWrapperRef}\n >\n {pillTextContent.length < LABEL_MAX_VISIBLE_LENGTH ? (\n pillText\n ) : (\n <Tooltip content={<div className={styles.tooltipText}>{pillTextContent}</div>} placement=\"top\">\n {pillText}\n </Tooltip>\n )}\n\n {!readOnly && !filter.matchAllFilter && (!filter.origin || filter.origin === 'dashboard') ? (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n if (filter.origin && filter.origin === 'dashboard') {\n model.updateToMatchAll(filter);\n } else {\n model._removeFilter(filter);\n }\n\n setTimeout(() => focusOnWipInputRef?.());\n }}\n onKeyDownCapture={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n if (filter.origin && filter.origin === 'dashboard') {\n model.updateToMatchAll(filter);\n } else {\n model._removeFilter(filter);\n }\n setTimeout(() => focusOnWipInputRef?.());\n }\n }}\n name=\"times\"\n size=\"md\"\n className={cx(styles.pillIcon, filter.nonApplicable && styles.disabledPillIcon)}\n tooltip={t(\n 'grafana-scenes.components.adhoc-filter-pill.remove-filter-with-key',\n 'Remove filter with key {{keyLabel}}',\n {\n keyLabel,\n }\n )}\n />\n ) : null}\n\n {filter.origin && filter.readOnly && (\n <Tooltip\n content={t('grafana-scenes.components.adhoc-filter-pill.managed-filter', '{{origin}} managed filter', {\n origin: filter.origin,\n })}\n placement={'bottom'}\n >\n <Icon name=\"lock\" size=\"md\" className={styles.readOnlyPillIcon} />\n </Tooltip>\n )}\n\n {filter.origin && cleanFilter && (\n <Tooltip content={getOriginFilterTooltips(filter.origin).info} placement={'bottom'}>\n <Icon name=\"info-circle\" size=\"md\" className={styles.infoPillIcon} />\n </Tooltip>\n )}\n\n {filter.origin && filter.restorable && !filter.readOnly && (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n model.restoreOriginalFilter(filter);\n }}\n onKeyDownCapture={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n model.restoreOriginalFilter(filter);\n }\n }}\n name=\"history\"\n size=\"md\"\n className={isMatchAllFilter(filter) ? styles.matchAllPillIcon : styles.pillIcon}\n tooltip={getOriginFilterTooltips(filter.origin).restore}\n />\n )}\n\n {filter.nonApplicable && (\n <Tooltip\n content={\n filter.nonApplicableReason ??\n t('grafana-scenes.components.adhoc-filter-pill.non-applicable', 'Filter is not applicable')\n }\n placement={'bottom'}\n >\n <Icon name=\"info-circle\" size=\"md\" className={styles.infoPillIcon} />\n </Tooltip>\n )}\n </div>\n );\n }\n\n return (\n <AdHocCombobox\n filter={filter}\n model={model}\n handleChangeViewMode={handleChangeViewMode}\n focusOnWipInputRef={focusOnWipInputRef}\n populateInputOnEdit={populateInputOnEdit}\n />\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n combinedFilterPill: css({\n display: 'flex',\n alignItems: 'center',\n background: theme.colors.action.selected,\n borderRadius: theme.shape.radius.default,\n border: `1px solid ${theme.colors.border.weak}`,\n padding: theme.spacing(0.125, 0, 0.125, 1),\n color: theme.colors.text.primary,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n minHeight: theme.spacing(2.75),\n ...theme.typography.bodySmall,\n fontWeight: theme.typography.fontWeightBold,\n cursor: 'pointer',\n\n '&:hover': {\n background: theme.colors.action.hover,\n },\n }),\n readOnlyCombinedFilter: css({\n paddingRight: theme.spacing(1),\n cursor: 'text',\n '&:hover': {\n background: theme.colors.action.selected,\n },\n }),\n filterReadOnly: css({\n background: theme.colors.background.canvas,\n cursor: 'text',\n '&:hover': {\n background: theme.colors.background.canvas,\n },\n }),\n pillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n '&:hover': {\n color: theme.colors.text.primary,\n },\n }),\n pillText: css({\n maxWidth: '200px',\n width: '100%',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n }),\n tooltipText: css({\n textAlign: 'center',\n }),\n infoPillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n }),\n readOnlyPillIcon: css({\n marginInline: theme.spacing(0.5),\n }),\n matchAllPillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n color: theme.colors.text.disabled,\n }),\n disabledPillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n color: theme.colors.text.disabled,\n '&:hover': {\n color: theme.colors.text.disabled,\n },\n }),\n ...getNonApplicablePillStyles(theme),\n});\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"AdHocFilterPill.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2, IconButton, Tooltip, Icon } from '@grafana/ui';\nimport React, { useState, useRef, useCallback, useEffect } from 'react';\nimport { AdHocCombobox } from './AdHocFiltersCombobox';\nimport { AdHocFilterWithLabels, FilterOrigin, isMatchAllFilter } from '../AdHocFiltersVariable';\nimport { AdHocFiltersController } from '../controller/AdHocFiltersController';\nimport { t } from '@grafana/i18n';\nimport { getNonApplicablePillStyles } from '../../utils';\n\nconst LABEL_MAX_VISIBLE_LENGTH = 20;\n\ninterface Props {\n filter: AdHocFilterWithLabels;\n controller: AdHocFiltersController;\n readOnly?: boolean;\n focusOnWipInputRef?: () => void;\n}\n\nexport function AdHocFilterPill({ filter, controller, readOnly, focusOnWipInputRef }: Props) {\n const styles = useStyles2(getStyles);\n const [viewMode, setViewMode] = useState(true);\n const [shouldFocusOnPillWrapper, setShouldFocusOnPillWrapper] = useState(false);\n const pillWrapperRef = useRef<HTMLDivElement>(null);\n const [populateInputOnEdit, setPopulateInputOnEdit] = useState(false);\n\n const keyLabel = filter.keyLabel ?? filter.key;\n const valueLabel = filter.valueLabels?.join(', ') || filter.values?.join(', ') || filter.value;\n\n const handleChangeViewMode = useCallback(\n (event?: React.MouseEvent, shouldFocusOnPillWrapperOverride?: boolean) => {\n event?.stopPropagation();\n if (readOnly) {\n return;\n }\n\n setShouldFocusOnPillWrapper(shouldFocusOnPillWrapperOverride ?? !viewMode);\n setViewMode(!viewMode);\n },\n [readOnly, viewMode]\n );\n\n useEffect(() => {\n if (shouldFocusOnPillWrapper) {\n pillWrapperRef.current?.focus();\n setShouldFocusOnPillWrapper(false);\n }\n }, [shouldFocusOnPillWrapper]);\n\n // set viewMode to false when filter.forceEdit is defined\n useEffect(() => {\n if (filter.forceEdit && viewMode) {\n setViewMode(false);\n // immediately set forceEdit back to undefined as a clean up\n controller.updateFilter(filter, { forceEdit: undefined });\n }\n }, [filter, controller, viewMode]);\n\n // reset populateInputOnEdit when pill goes into view mode\n useEffect(() => {\n if (viewMode) {\n setPopulateInputOnEdit((prevValue) => (prevValue ? false : prevValue));\n }\n }, [viewMode]);\n\n const getOriginFilterTooltips = (origin: FilterOrigin): { info: string; restore: string } => {\n if (origin === 'dashboard') {\n return {\n info: 'Applied by default in this dashboard. If edited, it carries over to other dashboards.',\n restore: 'Restore the value set by this dashboard.',\n };\n } else if (origin === 'scope') {\n return {\n info: 'Applied automatically from your selected scope.',\n restore: 'Restore the value set by your selected scope.',\n };\n } else {\n return {\n info: `This is a ${origin} injected filter.`,\n restore: `Restore filter to its original value.`,\n };\n }\n };\n\n // filters that are in a clean, original state that are applicable and not readonly\n const cleanFilter = !filter.restorable && !filter.readOnly && !filter.nonApplicable;\n\n if (viewMode) {\n const pillTextContent = `${keyLabel} ${filter.operator} ${valueLabel}`;\n const pillText = (\n <span className={cx(styles.pillText, filter.nonApplicable && styles.strikethrough)}>{pillTextContent}</span>\n );\n\n return (\n <div\n className={cx(\n styles.combinedFilterPill,\n readOnly && styles.readOnlyCombinedFilter,\n (isMatchAllFilter(filter) || filter.nonApplicable) && styles.disabledPill,\n filter.readOnly && styles.filterReadOnly\n )}\n onClick={(e) => {\n e.stopPropagation();\n setPopulateInputOnEdit(true);\n handleChangeViewMode();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n setPopulateInputOnEdit(true);\n handleChangeViewMode();\n }\n }}\n role={readOnly ? undefined : 'button'}\n aria-label={t(\n 'grafana-scenes.components.adhoc-filter-pill.edit-filter-with-key',\n 'Edit filter with key {{keyLabel}}',\n {\n keyLabel,\n }\n )}\n tabIndex={0}\n ref={pillWrapperRef}\n >\n {pillTextContent.length < LABEL_MAX_VISIBLE_LENGTH ? (\n pillText\n ) : (\n <Tooltip content={<div className={styles.tooltipText}>{pillTextContent}</div>} placement=\"top\">\n {pillText}\n </Tooltip>\n )}\n\n {!readOnly && !filter.matchAllFilter && (!filter.origin || filter.origin === 'dashboard') ? (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n if (filter.origin && filter.origin === 'dashboard') {\n controller.updateToMatchAll(filter);\n } else {\n controller.removeFilter(filter);\n }\n\n setTimeout(() => focusOnWipInputRef?.());\n }}\n onKeyDownCapture={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n if (filter.origin && filter.origin === 'dashboard') {\n controller.updateToMatchAll(filter);\n } else {\n controller.removeFilter(filter);\n }\n setTimeout(() => focusOnWipInputRef?.());\n }\n }}\n name=\"times\"\n size=\"md\"\n className={cx(styles.pillIcon, filter.nonApplicable && styles.disabledPillIcon)}\n tooltip={t(\n 'grafana-scenes.components.adhoc-filter-pill.remove-filter-with-key',\n 'Remove filter with key {{keyLabel}}',\n {\n keyLabel,\n }\n )}\n />\n ) : null}\n\n {filter.origin && filter.readOnly && (\n <Tooltip\n content={t('grafana-scenes.components.adhoc-filter-pill.managed-filter', '{{origin}} managed filter', {\n origin: filter.origin,\n })}\n placement={'bottom'}\n >\n <Icon name=\"lock\" size=\"md\" className={styles.readOnlyPillIcon} />\n </Tooltip>\n )}\n\n {filter.origin && cleanFilter && (\n <Tooltip content={getOriginFilterTooltips(filter.origin).info} placement={'bottom'}>\n <Icon name=\"info-circle\" size=\"md\" className={styles.infoPillIcon} />\n </Tooltip>\n )}\n\n {filter.origin && filter.restorable && !filter.readOnly && (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n controller.restoreOriginalFilter(filter);\n }}\n onKeyDownCapture={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n controller.restoreOriginalFilter(filter);\n }\n }}\n name=\"history\"\n size=\"md\"\n className={isMatchAllFilter(filter) ? styles.matchAllPillIcon : styles.pillIcon}\n tooltip={getOriginFilterTooltips(filter.origin).restore}\n />\n )}\n\n {filter.nonApplicable && (\n <Tooltip\n content={\n filter.nonApplicableReason ??\n t('grafana-scenes.components.adhoc-filter-pill.non-applicable', 'Filter is not applicable')\n }\n placement={'bottom'}\n >\n <Icon name=\"info-circle\" size=\"md\" className={styles.infoPillIcon} />\n </Tooltip>\n )}\n </div>\n );\n }\n\n return (\n <AdHocCombobox\n filter={filter}\n controller={controller}\n handleChangeViewMode={handleChangeViewMode}\n focusOnWipInputRef={focusOnWipInputRef}\n populateInputOnEdit={populateInputOnEdit}\n />\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n combinedFilterPill: css({\n display: 'flex',\n alignItems: 'center',\n background: theme.colors.action.selected,\n borderRadius: theme.shape.radius.default,\n border: `1px solid ${theme.colors.border.weak}`,\n padding: theme.spacing(0.125, 0, 0.125, 1),\n color: theme.colors.text.primary,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n minHeight: theme.spacing(2.75),\n ...theme.typography.bodySmall,\n fontWeight: theme.typography.fontWeightBold,\n cursor: 'pointer',\n\n '&:hover': {\n background: theme.colors.action.hover,\n },\n }),\n readOnlyCombinedFilter: css({\n paddingRight: theme.spacing(1),\n cursor: 'text',\n '&:hover': {\n background: theme.colors.action.selected,\n },\n }),\n filterReadOnly: css({\n background: theme.colors.background.canvas,\n cursor: 'text',\n '&:hover': {\n background: theme.colors.background.canvas,\n },\n }),\n pillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n '&:hover': {\n color: theme.colors.text.primary,\n },\n }),\n pillText: css({\n maxWidth: '200px',\n width: '100%',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n }),\n tooltipText: css({\n textAlign: 'center',\n }),\n infoPillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n }),\n readOnlyPillIcon: css({\n marginInline: theme.spacing(0.5),\n }),\n matchAllPillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n color: theme.colors.text.disabled,\n }),\n disabledPillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n color: theme.colors.text.disabled,\n '&:hover': {\n color: theme.colors.text.disabled,\n },\n }),\n ...getNonApplicablePillStyles(theme),\n});\n"],"names":["_a"],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  import React, { forwardRef, useLayoutEffect } from 'react';
2
2
  import { AdHocCombobox } from './AdHocFiltersCombobox.js';
3
3
 
4
- const AdHocFiltersAlwaysWipCombobox = forwardRef(function AdHocFiltersAlwaysWipCombobox2({ model }, parentRef) {
5
- const { _wip } = model.useState();
4
+ const AdHocFiltersAlwaysWipCombobox = forwardRef(function AdHocFiltersAlwaysWipCombobox2({ controller }, parentRef) {
5
+ const { wip } = controller.useState();
6
6
  useLayoutEffect(() => {
7
- if (!_wip) {
8
- model._addWip();
7
+ if (!wip) {
8
+ controller.addWip();
9
9
  }
10
- }, [_wip]);
11
- return /* @__PURE__ */ React.createElement(AdHocCombobox, { model, filter: _wip, isAlwaysWip: true, ref: parentRef });
10
+ }, [wip]);
11
+ return /* @__PURE__ */ React.createElement(AdHocCombobox, { controller, filter: wip, isAlwaysWip: true, ref: parentRef });
12
12
  });
13
13
 
14
14
  export { AdHocFiltersAlwaysWipCombobox };
@@ -1 +1 @@
1
- {"version":3,"file":"AdHocFiltersAlwaysWipCombobox.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.tsx"],"sourcesContent":["import React, { forwardRef, useLayoutEffect } from 'react';\nimport { AdHocFiltersVariable } from '../AdHocFiltersVariable';\nimport { AdHocCombobox } from './AdHocFiltersCombobox';\n\ninterface Props {\n model: AdHocFiltersVariable;\n}\n\nexport const AdHocFiltersAlwaysWipCombobox = forwardRef(function AdHocFiltersAlwaysWipCombobox(\n { model }: Props,\n // pass ability to focus on input element back to parent\n // parentRef is coming from AdHocFiltersComboboxRenderer\n // parentRef is mutated through useImperativeHandle in AdHocCombobox\n parentRef\n) {\n const { _wip } = model.useState();\n\n // when combobox is in wip mode then check and add _wip if its missing\n // needed on first render and when _wip is reset on filter value commit\n useLayoutEffect(() => {\n if (!_wip) {\n model._addWip();\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [_wip]);\n\n return <AdHocCombobox model={model} filter={_wip} isAlwaysWip ref={parentRef} />;\n});\n"],"names":["AdHocFiltersAlwaysWipCombobox"],"mappings":";;;AAQO,MAAM,gCAAgC,UAAW,CAAA,SAASA,+BAC/D,EAAE,KAAA,IAIF,SACA,EAAA;AACA,EAAA,MAAM,EAAE,IAAA,EAAS,GAAA,KAAA,CAAM,QAAS,EAAA;AAIhC,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAA,KAAA,CAAM,OAAQ,EAAA;AAAA;AAChB,GAGF,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,iBAAc,KAAc,EAAA,MAAA,EAAQ,MAAM,WAAW,EAAA,IAAA,EAAC,KAAK,SAAW,EAAA,CAAA;AAChF,CAAC;;;;"}
1
+ {"version":3,"file":"AdHocFiltersAlwaysWipCombobox.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.tsx"],"sourcesContent":["import React, { forwardRef, useLayoutEffect } from 'react';\nimport { AdHocFiltersController } from '../controller/AdHocFiltersController';\nimport { AdHocCombobox } from './AdHocFiltersCombobox';\n\ninterface Props {\n controller: AdHocFiltersController;\n}\n\nexport const AdHocFiltersAlwaysWipCombobox = forwardRef(function AdHocFiltersAlwaysWipCombobox(\n { controller }: Props,\n // pass ability to focus on input element back to parent\n // parentRef is coming from AdHocFiltersComboboxRenderer\n // parentRef is mutated through useImperativeHandle in AdHocCombobox\n parentRef\n) {\n const { wip } = controller.useState();\n\n // when combobox is in wip mode then check and add wip if its missing\n // needed on first render and when wip is reset on filter value commit\n useLayoutEffect(() => {\n if (!wip) {\n controller.addWip();\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [wip]);\n\n return <AdHocCombobox controller={controller} filter={wip} isAlwaysWip ref={parentRef} />;\n});\n"],"names":["AdHocFiltersAlwaysWipCombobox"],"mappings":";;;AAQO,MAAM,gCAAgC,UAAW,CAAA,SAASA,+BAC/D,EAAE,UAAA,IAIF,SACA,EAAA;AACA,EAAA,MAAM,EAAE,GAAA,EAAQ,GAAA,UAAA,CAAW,QAAS,EAAA;AAIpC,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,GAAK,EAAA;AACR,MAAA,UAAA,CAAW,MAAO,EAAA;AAAA;AACpB,GAGF,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,iBAAc,UAAwB,EAAA,MAAA,EAAQ,KAAK,WAAW,EAAA,IAAA,EAAC,KAAK,SAAW,EAAA,CAAA;AACzF,CAAC;;;;"}