@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
@@ -0,0 +1,108 @@
1
+ import React from 'react';
2
+ import { of } from 'rxjs';
3
+ import { useStyles2, Switch } from '@grafana/ui';
4
+ import { css } from '@emotion/css';
5
+ import { SceneObjectBase } from '../../core/SceneObjectBase.js';
6
+ import { SceneObjectUrlSyncConfig } from '../../services/SceneObjectUrlSyncConfig.js';
7
+ import { SceneVariableValueChangedEvent } from '../types.js';
8
+
9
+ class SwitchVariable extends SceneObjectBase {
10
+ constructor(initialState) {
11
+ super({
12
+ // TODO: remove this once switch is in the schema @leventebalogh
13
+ // @ts-expect-error - switch is a valid variable type, but not in the schema yet
14
+ type: "switch",
15
+ value: "false",
16
+ enabledValue: "true",
17
+ disabledValue: "false",
18
+ name: "",
19
+ ...initialState
20
+ });
21
+ this._prevValue = "";
22
+ this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: () => this.getKeys() });
23
+ }
24
+ /**
25
+ * This function is called on when SceneVariableSet is activated or when a dependency changes.
26
+ */
27
+ validateAndUpdate() {
28
+ const newValue = this.getValue();
29
+ if (this._prevValue !== newValue) {
30
+ this._prevValue = newValue;
31
+ this.publishEvent(new SceneVariableValueChangedEvent(this), true);
32
+ }
33
+ return of({});
34
+ }
35
+ setValue(newValue) {
36
+ if (this.getValue() === newValue) {
37
+ return;
38
+ }
39
+ if ([this.state.enabledValue, this.state.disabledValue].includes(newValue)) {
40
+ this.setState({ value: newValue });
41
+ this.publishEvent(new SceneVariableValueChangedEvent(this), true);
42
+ } else {
43
+ console.error(
44
+ `Invalid value for switch variable: "${newValue}". Valid values are: "${this.state.enabledValue}" and "${this.state.disabledValue}".`
45
+ );
46
+ }
47
+ }
48
+ getValue() {
49
+ return this.state.value;
50
+ }
51
+ isEnabled() {
52
+ return this.state.value === this.state.enabledValue;
53
+ }
54
+ isDisabled() {
55
+ return this.state.value === this.state.disabledValue;
56
+ }
57
+ getKey() {
58
+ return `var-${this.state.name}`;
59
+ }
60
+ getKeys() {
61
+ if (this.state.skipUrlSync) {
62
+ return [];
63
+ }
64
+ return [this.getKey()];
65
+ }
66
+ getUrlState() {
67
+ if (this.state.skipUrlSync) {
68
+ return {};
69
+ }
70
+ return { [this.getKey()]: this.state.value };
71
+ }
72
+ updateFromUrl(values) {
73
+ const val = values[this.getKey()];
74
+ if (typeof val === "string") {
75
+ this.setValue(val);
76
+ }
77
+ }
78
+ }
79
+ SwitchVariable.Component = SwitchVariableRenderer;
80
+ function SwitchVariableRenderer({ model }) {
81
+ const state = model.useState();
82
+ const styles = useStyles2(getStyles);
83
+ return /* @__PURE__ */ React.createElement("div", { className: styles.container }, /* @__PURE__ */ React.createElement(
84
+ Switch,
85
+ {
86
+ value: state.value === state.enabledValue,
87
+ onChange: (event) => {
88
+ model.setValue(event.currentTarget.checked ? state.enabledValue : state.disabledValue);
89
+ }
90
+ }
91
+ ));
92
+ }
93
+ function getStyles(theme) {
94
+ return {
95
+ container: css({
96
+ display: "flex",
97
+ alignItems: "center",
98
+ padding: theme.spacing(0, 1),
99
+ height: theme.spacing(theme.components.height.md),
100
+ borderRadius: theme.shape.radius.default,
101
+ border: `1px solid ${theme.components.input.borderColor}`,
102
+ background: theme.colors.background.primary
103
+ })
104
+ };
105
+ }
106
+
107
+ export { SwitchVariable };
108
+ //# sourceMappingURL=SwitchVariable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwitchVariable.js","sources":["../../../../src/variables/variants/SwitchVariable.tsx"],"sourcesContent":["import React from 'react';\nimport { Observable, of } from 'rxjs';\nimport { Switch, useStyles2 } from '@grafana/ui';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport { SceneComponentProps, SceneObjectUrlValues } from '../../core/types';\nimport { SceneObjectUrlSyncConfig } from '../../services/SceneObjectUrlSyncConfig';\nimport {\n SceneVariable,\n SceneVariableState,\n SceneVariableValueChangedEvent,\n ValidateAndUpdateResult,\n VariableValue,\n} from '../types';\n\nexport interface SwitchVariableState extends SceneVariableState {\n value: string;\n enabledValue: string;\n disabledValue: string;\n}\n\nexport class SwitchVariable extends SceneObjectBase<SwitchVariableState> implements SceneVariable<SwitchVariableState> {\n public static Component = SwitchVariableRenderer;\n private _prevValue: VariableValue = '';\n\n public constructor(initialState: Partial<SwitchVariableState>) {\n super({\n // TODO: remove this once switch is in the schema @leventebalogh\n // @ts-expect-error - switch is a valid variable type, but not in the schema yet\n type: 'switch',\n value: 'false',\n enabledValue: 'true',\n disabledValue: 'false',\n name: '',\n ...initialState,\n });\n\n this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: () => this.getKeys() });\n }\n\n /**\n * This function is called on when SceneVariableSet is activated or when a dependency changes.\n */\n public validateAndUpdate(): Observable<ValidateAndUpdateResult> {\n const newValue = this.getValue();\n\n if (this._prevValue !== newValue) {\n this._prevValue = newValue;\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n }\n\n return of({});\n }\n\n public setValue(newValue: string): void {\n // Ignore if there's no change\n if (this.getValue() === newValue) {\n return;\n }\n\n if ([this.state.enabledValue, this.state.disabledValue].includes(newValue)) {\n this.setState({ value: newValue });\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n } else {\n console.error(\n `Invalid value for switch variable: \"${newValue}\". Valid values are: \"${this.state.enabledValue}\" and \"${this.state.disabledValue}\".`\n );\n }\n }\n\n public getValue(): VariableValue {\n return this.state.value;\n }\n\n public isEnabled(): boolean {\n return this.state.value === this.state.enabledValue;\n }\n\n public isDisabled(): boolean {\n return this.state.value === this.state.disabledValue;\n }\n\n private getKey(): string {\n return `var-${this.state.name}`;\n }\n\n public getKeys(): string[] {\n if (this.state.skipUrlSync) {\n return [];\n }\n\n return [this.getKey()];\n }\n\n public getUrlState(): SceneObjectUrlValues {\n if (this.state.skipUrlSync) {\n return {};\n }\n\n return { [this.getKey()]: this.state.value };\n }\n\n public updateFromUrl(values: SceneObjectUrlValues): void {\n const val = values[this.getKey()];\n\n if (typeof val === 'string') {\n this.setValue(val);\n }\n }\n}\n\nfunction SwitchVariableRenderer({ model }: SceneComponentProps<SwitchVariable>) {\n const state = model.useState();\n const styles = useStyles2(getStyles);\n\n return (\n <div className={styles.container}>\n <Switch\n value={state.value === state.enabledValue}\n onChange={(event) => {\n model.setValue(event!.currentTarget.checked ? state.enabledValue : state.disabledValue);\n }}\n />\n </div>\n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css({\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(0, 1),\n height: theme.spacing(theme.components.height.md),\n borderRadius: theme.shape.radius.default,\n border: `1px solid ${theme.components.input.borderColor}`,\n background: theme.colors.background.primary,\n }),\n };\n}\n"],"names":[],"mappings":"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"}
@@ -22,6 +22,9 @@ function isTextBoxVariable(variable) {
22
22
  function isGroupByVariable(variable) {
23
23
  return variable.state.type === "groupby";
24
24
  }
25
+ function isSwitchVariable(variable) {
26
+ return variable.state.type === "switch";
27
+ }
25
28
 
26
- export { isAdHocVariable, isConstantVariable, isCustomVariable, isDataSourceVariable, isGroupByVariable, isIntervalVariable, isQueryVariable, isTextBoxVariable };
29
+ export { isAdHocVariable, isConstantVariable, isCustomVariable, isDataSourceVariable, isGroupByVariable, isIntervalVariable, isQueryVariable, isSwitchVariable, isTextBoxVariable };
27
30
  //# sourceMappingURL=guards.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"guards.js","sources":["../../../../src/variables/variants/guards.ts"],"sourcesContent":["import { AdHocFiltersVariable } from '../adhoc/AdHocFiltersVariable';\nimport { SceneVariable } from '../types';\nimport { ConstantVariable } from './ConstantVariable';\nimport { CustomVariable } from './CustomVariable';\nimport { DataSourceVariable } from './DataSourceVariable';\nimport { IntervalVariable } from './IntervalVariable';\nimport { TextBoxVariable } from './TextBoxVariable';\nimport { QueryVariable } from './query/QueryVariable';\nimport { GroupByVariable } from '../groupby/GroupByVariable';\n\nexport function isAdHocVariable(variable: SceneVariable): variable is AdHocFiltersVariable {\n return variable.state.type === 'adhoc';\n}\n\nexport function isConstantVariable(variable: SceneVariable): variable is ConstantVariable {\n return variable.state.type === 'constant';\n}\n\nexport function isCustomVariable(variable: SceneVariable): variable is CustomVariable {\n return variable.state.type === 'custom';\n}\n\nexport function isDataSourceVariable(variable: SceneVariable): variable is DataSourceVariable {\n return variable.state.type === 'datasource';\n}\n\nexport function isIntervalVariable(variable: SceneVariable): variable is IntervalVariable {\n return variable.state.type === 'interval';\n}\n\nexport function isQueryVariable(variable: SceneVariable): variable is QueryVariable {\n return variable.state.type === 'query';\n}\n\nexport function isTextBoxVariable(variable: SceneVariable): variable is TextBoxVariable {\n return variable.state.type === 'textbox';\n}\n\nexport function isGroupByVariable(variable: SceneVariable): variable is GroupByVariable {\n return variable.state.type === 'groupby';\n}\n"],"names":[],"mappings":"AAUO,SAAS,gBAAgB,QAA2D,EAAA;AACzF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,OAAA;AACjC;AAEO,SAAS,mBAAmB,QAAuD,EAAA;AACxF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,UAAA;AACjC;AAEO,SAAS,iBAAiB,QAAqD,EAAA;AACpF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,QAAA;AACjC;AAEO,SAAS,qBAAqB,QAAyD,EAAA;AAC5F,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,YAAA;AACjC;AAEO,SAAS,mBAAmB,QAAuD,EAAA;AACxF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,UAAA;AACjC;AAEO,SAAS,gBAAgB,QAAoD,EAAA;AAClF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,OAAA;AACjC;AAEO,SAAS,kBAAkB,QAAsD,EAAA;AACtF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,SAAA;AACjC;AAEO,SAAS,kBAAkB,QAAsD,EAAA;AACtF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,SAAA;AACjC;;;;"}
1
+ {"version":3,"file":"guards.js","sources":["../../../../src/variables/variants/guards.ts"],"sourcesContent":["import { AdHocFiltersVariable } from '../adhoc/AdHocFiltersVariable';\nimport { SceneVariable } from '../types';\nimport { ConstantVariable } from './ConstantVariable';\nimport { CustomVariable } from './CustomVariable';\nimport { DataSourceVariable } from './DataSourceVariable';\nimport { IntervalVariable } from './IntervalVariable';\nimport { TextBoxVariable } from './TextBoxVariable';\nimport { QueryVariable } from './query/QueryVariable';\nimport { GroupByVariable } from '../groupby/GroupByVariable';\nimport { SwitchVariable } from './SwitchVariable';\n\nexport function isAdHocVariable(variable: SceneVariable): variable is AdHocFiltersVariable {\n return variable.state.type === 'adhoc';\n}\n\nexport function isConstantVariable(variable: SceneVariable): variable is ConstantVariable {\n return variable.state.type === 'constant';\n}\n\nexport function isCustomVariable(variable: SceneVariable): variable is CustomVariable {\n return variable.state.type === 'custom';\n}\n\nexport function isDataSourceVariable(variable: SceneVariable): variable is DataSourceVariable {\n return variable.state.type === 'datasource';\n}\n\nexport function isIntervalVariable(variable: SceneVariable): variable is IntervalVariable {\n return variable.state.type === 'interval';\n}\n\nexport function isQueryVariable(variable: SceneVariable): variable is QueryVariable {\n return variable.state.type === 'query';\n}\n\nexport function isTextBoxVariable(variable: SceneVariable): variable is TextBoxVariable {\n return variable.state.type === 'textbox';\n}\n\nexport function isGroupByVariable(variable: SceneVariable): variable is GroupByVariable {\n return variable.state.type === 'groupby';\n}\n\nexport function isSwitchVariable(variable: SceneVariable): variable is SwitchVariable {\n // TODO: remove this once switch is in the schema @leventebalogh\n // @ts-expect-error - switch is a valid variable type, but not in the schema yet\n return variable.state.type === 'switch';\n}\n"],"names":[],"mappings":"AAWO,SAAS,gBAAgB,QAA2D,EAAA;AACzF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,OAAA;AACjC;AAEO,SAAS,mBAAmB,QAAuD,EAAA;AACxF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,UAAA;AACjC;AAEO,SAAS,iBAAiB,QAAqD,EAAA;AACpF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,QAAA;AACjC;AAEO,SAAS,qBAAqB,QAAyD,EAAA;AAC5F,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,YAAA;AACjC;AAEO,SAAS,mBAAmB,QAAuD,EAAA;AACxF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,UAAA;AACjC;AAEO,SAAS,gBAAgB,QAAoD,EAAA;AAClF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,OAAA;AACjC;AAEO,SAAS,kBAAkB,QAAsD,EAAA;AACtF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,SAAA;AACjC;AAEO,SAAS,kBAAkB,QAAsD,EAAA;AACtF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,SAAA;AACjC;AAEO,SAAS,iBAAiB,QAAqD,EAAA;AAGpF,EAAO,OAAA,QAAA,CAAS,MAAM,IAAS,KAAA,QAAA;AACjC;;;;"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _grafana_data from '@grafana/data';
2
- import { BusEventWithPayload, EventBus, BusEvent, BusEventType, BusEventHandler, PanelMenuItem, FieldConfigSource, PanelPlugin, AbsoluteTimeRange, PanelData, InterpolateFunction, PanelModel, TimeRange, DataTransformContext, DataFrame, DataQueryRequest, DataSourceGetTagKeysOptions, DataSourceGetTagValuesOptions, IconName, PageLayoutType, UrlQueryMap, DataQuery as DataQuery$1, DataSourceApi, Registry, RegistryItem, ScopedVars, AdHocVariableFilter, GetTagResponse, MetricFindValue, SelectableValue, VariableRefresh as VariableRefresh$1, VariableSort, DrilldownsApplicability, Scope, EventFilterOptions, AnnotationEvent, AnnotationQuery, DataTransformerConfig, TimeOption, FieldConfig, FieldType, FieldValueMatcherConfig, ScopedVar, RawTimeRange } from '@grafana/data';
2
+ import { BusEventWithPayload, EventBus, BusEvent, BusEventType, BusEventHandler, PanelMenuItem, FieldConfigSource, PanelPlugin, AbsoluteTimeRange, PanelData, InterpolateFunction, PanelModel, TimeRange, DataTransformContext, DataFrame, DataQueryRequest, DataSourceGetTagKeysOptions, DataSourceGetTagValuesOptions, IconName, PageLayoutType, UrlQueryMap, DataQuery as DataQuery$1, DataSourceApi, Registry, RegistryItem, ScopedVars, AdHocVariableFilter, SelectableValue, GetTagResponse, MetricFindValue, VariableRefresh as VariableRefresh$1, VariableSort, DrilldownsApplicability, Scope, EventFilterOptions, AnnotationEvent, AnnotationQuery, DataTransformerConfig, TimeOption, FieldConfig, FieldType, FieldValueMatcherConfig, ScopedVar, RawTimeRange } from '@grafana/data';
3
3
  import * as React$1 from 'react';
4
4
  import React__default, { ComponentType, CSSProperties, PointerEvent, ForwardRefExoticComponent } from 'react';
5
5
  import * as rxjs from 'rxjs';
@@ -404,7 +404,7 @@ declare class VizPanel<TOptions = {}, TFieldConfig extends {} = {}> extends Scen
404
404
  onDescriptionChange: (description: string) => void;
405
405
  onDisplayModeChange: (displayMode: 'default' | 'transparent') => void;
406
406
  onToggleCollapse: (collapsed: boolean) => void;
407
- onOptionsChange: (options: DeepPartial<TOptions>, replace?: boolean) => void;
407
+ onOptionsChange: (optionsUpdate: DeepPartial<TOptions>, replace?: boolean, isAfterPluginChange?: boolean) => void;
408
408
  onFieldConfigChange: (fieldConfigUpdate: FieldConfigSource<DeepPartial<TFieldConfig>>, replace?: boolean) => void;
409
409
  interpolate: InterpolateFunction;
410
410
  getDescription: () => string;
@@ -1124,6 +1124,7 @@ interface CustomVariableState extends MultiValueVariableState {
1124
1124
  declare class CustomVariable extends MultiValueVariable<CustomVariableState> {
1125
1125
  protected _variableDependency: VariableDependencyConfig<CustomVariableState>;
1126
1126
  constructor(initialState: Partial<CustomVariableState>);
1127
+ transformCsvStringToOptions(str: string, interpolate?: boolean): VariableValueOption[];
1127
1128
  getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]>;
1128
1129
  static Component: ({ model }: SceneComponentProps<MultiValueVariable>) => React__default.JSX.Element;
1129
1130
  }
@@ -1285,6 +1286,30 @@ declare class GroupByVariable extends MultiValueVariable<GroupByVariableState> {
1285
1286
  }
1286
1287
  declare function GroupByVariableRenderer({ model }: SceneComponentProps<GroupByVariable>): React__default.JSX.Element;
1287
1288
 
1289
+ interface SwitchVariableState extends SceneVariableState {
1290
+ value: string;
1291
+ enabledValue: string;
1292
+ disabledValue: string;
1293
+ }
1294
+ declare class SwitchVariable extends SceneObjectBase<SwitchVariableState> implements SceneVariable<SwitchVariableState> {
1295
+ static Component: typeof SwitchVariableRenderer;
1296
+ private _prevValue;
1297
+ constructor(initialState: Partial<SwitchVariableState>);
1298
+ /**
1299
+ * This function is called on when SceneVariableSet is activated or when a dependency changes.
1300
+ */
1301
+ validateAndUpdate(): Observable<ValidateAndUpdateResult>;
1302
+ setValue(newValue: string): void;
1303
+ getValue(): VariableValue;
1304
+ isEnabled(): boolean;
1305
+ isDisabled(): boolean;
1306
+ private getKey;
1307
+ getKeys(): string[];
1308
+ getUrlState(): SceneObjectUrlValues;
1309
+ updateFromUrl(values: SceneObjectUrlValues): void;
1310
+ }
1311
+ declare function SwitchVariableRenderer({ model }: SceneComponentProps<SwitchVariable>): React__default.JSX.Element;
1312
+
1288
1313
  declare function isAdHocVariable(variable: SceneVariable): variable is AdHocFiltersVariable;
1289
1314
  declare function isConstantVariable(variable: SceneVariable): variable is ConstantVariable;
1290
1315
  declare function isCustomVariable(variable: SceneVariable): variable is CustomVariable;
@@ -1293,6 +1318,7 @@ declare function isIntervalVariable(variable: SceneVariable): variable is Interv
1293
1318
  declare function isQueryVariable(variable: SceneVariable): variable is QueryVariable;
1294
1319
  declare function isTextBoxVariable(variable: SceneVariable): variable is TextBoxVariable;
1295
1320
  declare function isGroupByVariable(variable: SceneVariable): variable is GroupByVariable;
1321
+ declare function isSwitchVariable(variable: SceneVariable): variable is SwitchVariable;
1296
1322
 
1297
1323
  interface SceneObjectStateChangedPayload<TState extends SceneObjectState = SceneObjectState> {
1298
1324
  prevState: TState;
@@ -2188,6 +2214,121 @@ declare class LocalValueVariable extends SceneObjectBase<LocalValueVariableState
2188
2214
  isAncestorLoading(): boolean;
2189
2215
  }
2190
2216
 
2217
+ /**
2218
+ * Controller state returned by useState hook
2219
+ */
2220
+ interface AdHocFiltersControllerState {
2221
+ filters: AdHocFilterWithLabels[];
2222
+ originFilters?: AdHocFilterWithLabels[];
2223
+ readOnly?: boolean;
2224
+ allowCustomValue?: boolean;
2225
+ supportsMultiValueOperators?: boolean;
2226
+ onAddCustomValue?: OnAddCustomValueFn;
2227
+ wip?: AdHocFilterWithLabels;
2228
+ inputPlaceholder?: string;
2229
+ }
2230
+ /**
2231
+ * Controller interface for adhoc filters combobox UI.
2232
+ * Decouples the UI from AdHocFiltersVariable, allowing usage with or without a variable.
2233
+ */
2234
+ interface AdHocFiltersController {
2235
+ /**
2236
+ * React hook to access controller state.
2237
+ * Components should call this to get current filters and configuration.
2238
+ */
2239
+ useState(): AdHocFiltersControllerState;
2240
+ /**
2241
+ * Get possible keys given current filters.
2242
+ * @param currentKey - The key being edited (to exclude from filter context)
2243
+ */
2244
+ getKeys(currentKey: string | null): Promise<Array<SelectableValue<string>>>;
2245
+ /**
2246
+ * Get possible values for a specific filter key.
2247
+ * @param filter - The filter to get values for
2248
+ */
2249
+ getValuesFor(filter: AdHocFilterWithLabels): Promise<Array<SelectableValue<string>>>;
2250
+ /**
2251
+ * Get available operators based on configuration.
2252
+ */
2253
+ getOperators(): Array<SelectableValue<string>>;
2254
+ /**
2255
+ * Update a filter with partial changes.
2256
+ * @param filter - The filter to update
2257
+ * @param update - Partial filter properties to update
2258
+ */
2259
+ updateFilter(filter: AdHocFilterWithLabels, update: Partial<AdHocFilterWithLabels>): void;
2260
+ /**
2261
+ * Update a filter to match all values (=~ .*)
2262
+ * @param filter - The filter to update
2263
+ */
2264
+ updateToMatchAll(filter: AdHocFilterWithLabels): void;
2265
+ /**
2266
+ * Remove a filter.
2267
+ * @param filter - The filter to remove
2268
+ */
2269
+ removeFilter(filter: AdHocFilterWithLabels): void;
2270
+ /**
2271
+ * Remove the last filter in the list.
2272
+ */
2273
+ removeLastFilter(): void;
2274
+ /**
2275
+ * Handle backspace key in combobox (removes filter or navigates to previous).
2276
+ * @param filter - The filter where backspace was pressed
2277
+ */
2278
+ handleComboboxBackspace(filter: AdHocFilterWithLabels): void;
2279
+ /**
2280
+ * Add a new work-in-progress filter.
2281
+ */
2282
+ addWip(): void;
2283
+ /**
2284
+ * Restore an origin filter to its original value.
2285
+ * @param filter - The filter to restore
2286
+ */
2287
+ restoreOriginalFilter(filter: AdHocFilterWithLabels): void;
2288
+ /**
2289
+ * Optional: Start profiling an interaction (for performance tracking).
2290
+ * @param name - The interaction name
2291
+ */
2292
+ startProfile?(name: string): void;
2293
+ /**
2294
+ * Optional: Start tracking an interaction (for analytics).
2295
+ * @param name - The interaction name
2296
+ */
2297
+ startInteraction?(name: string): void;
2298
+ /**
2299
+ * Optional: Stop tracking the current interaction.
2300
+ */
2301
+ stopInteraction?(): void;
2302
+ }
2303
+
2304
+ /**
2305
+ * Adapter that wraps AdHocFiltersVariable to implement the AdHocFiltersController interface.
2306
+ * This allows the combobox UI to work with the variable while keeping the UI decoupled.
2307
+ */
2308
+ declare class VariableBackedAdHocFiltersController implements AdHocFiltersController {
2309
+ private model;
2310
+ constructor(model: AdHocFiltersVariable);
2311
+ useState(): AdHocFiltersControllerState;
2312
+ getKeys(currentKey: string | null): Promise<Array<SelectableValue<string>>>;
2313
+ getValuesFor(filter: AdHocFilterWithLabels): Promise<Array<SelectableValue<string>>>;
2314
+ getOperators(): Array<SelectableValue<string>>;
2315
+ updateFilter(filter: AdHocFilterWithLabels, update: Partial<AdHocFilterWithLabels>): void;
2316
+ updateToMatchAll(filter: AdHocFilterWithLabels): void;
2317
+ removeFilter(filter: AdHocFilterWithLabels): void;
2318
+ removeLastFilter(): void;
2319
+ handleComboboxBackspace(filter: AdHocFilterWithLabels): void;
2320
+ addWip(): void;
2321
+ restoreOriginalFilter(filter: AdHocFilterWithLabels): void;
2322
+ startProfile(name: string): void;
2323
+ startInteraction(name: string): void;
2324
+ stopInteraction(): void;
2325
+ }
2326
+
2327
+ interface Props$2 {
2328
+ controller: AdHocFiltersController;
2329
+ }
2330
+ declare const AdHocFiltersComboboxRenderer: React__default.NamedExoticComponent<Props$2>;
2331
+
2191
2332
  declare function useUrlSync(sceneRoot: SceneObject, options?: SceneUrlSyncOptions): boolean;
2192
2333
 
2193
2334
  interface UrlSyncContextProviderProps extends SceneUrlSyncOptions {
@@ -3178,6 +3319,8 @@ declare const loadResources: ResourceLoader;
3178
3319
 
3179
3320
 
3180
3321
 
3322
+
3323
+
3181
3324
 
3182
3325
 
3183
3326
 
@@ -3201,9 +3344,10 @@ declare const sceneUtils: {
3201
3344
  isQueryVariable: typeof isQueryVariable;
3202
3345
  isTextBoxVariable: typeof isTextBoxVariable;
3203
3346
  isGroupByVariable: typeof isGroupByVariable;
3347
+ isSwitchVariable: typeof isSwitchVariable;
3204
3348
  isRepeatCloneOrChildOf: typeof isRepeatCloneOrChildOf;
3205
3349
  buildPathIdFor: typeof buildPathIdFor;
3206
3350
  };
3207
3351
 
3208
- export { AdHocFiltersVariable, ConstantVariable, ControlsLabel, CustomVariable, DataProviderProxy, DataSourceVariable, EmbeddedScene, FieldConfigBuilder, FieldConfigBuilders, FieldConfigOverridesBuilder, GroupByVariable, IntervalVariable, LazyLoader, LocalValueVariable, MultiOrSingleValueSelect, MultiValueVariable, NestedScene, NewSceneObjectAddedEvent, PATH_ID_SEPARATOR, PanelBuilders, PanelOptionsBuilders, QueryVariable, RuntimeDataSource, SafeSerializableSceneObject, SceneApp, SceneAppPage, SceneByFrameRepeater, SceneByVariableRepeater, SceneCSSGridItem, SceneCSSGridLayout, SceneCanvasText, SceneControlsSpacer, SceneDataLayerBase, SceneDataLayerControls, SceneDataLayerSet, SceneDataLayerSetBase, SceneDataNode, SceneDataTransformer, SceneDebugger, SceneFlexItem, SceneFlexLayout, SceneGridItem, SceneGridLayout, SceneGridLayoutDragStartEvent, SceneGridRow, SceneObjectBase, SceneObjectRef, SceneObjectStateChangedEvent, SceneObjectUrlSyncConfig, SceneQueryRunner, SceneReactObject, SceneRefreshPicker, SceneRenderProfiler, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneVariableSet, SceneVariableValueChangedEvent, ScopesVariable, SplitLayout, TestVariable, TextBoxVariable, UrlSyncContextProvider, UrlSyncManager, UserActionEvent, VariableDependencyConfig, VariableValueControl, VariableValueSelectWrapper, VariableValueSelectors, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, index$1 as behaviors, index as dataLayers, escapeUrlPipeDelimiters, formatRegistry, getExploreURL, isCustomVariableValue, isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject, loadResources, registerQueryWithController, registerRuntimeDataSource, sceneGraph, sceneUtils, useSceneApp, useSceneObjectState, useUrlSync };
3209
- export type { AdHocFilterWithLabels, CancelActivationHandler, ControlsLayout, CustomFormatterVariable, CustomTransformOperator, CustomTransformerDefinition, CustomVariableValue, DataLayerFilter, DataRequestEnricher, DeepPartial, EmbeddedSceneState, ExtraQueryDataProcessor, ExtraQueryDescriptor, ExtraQueryProvider, FiltersRequestEnricher, FormatVariable, InterpolationFormatParameter, MacroVariableConstructor, MultiValueVariableState, QueryRunnerState, SceneActivationHandler, SceneAppDrilldownView, SceneAppPageLike, SceneAppPageState, SceneAppRoute, SceneComponent, SceneComponentProps, SceneDataLayerProvider, SceneDataLayerProviderState, SceneDataProvider, SceneDataProviderResult, SceneDataQuery, SceneDataState, SceneDataTransformerState, SceneDeactivationHandler, SceneFlexItemLike, SceneFlexItemState, SceneGridItemLike, SceneGridItemStateLike, SceneInteractionProfileEvent, SceneLayout, SceneLayoutChildOptions, SceneLayoutState, SceneObject, SceneObjectState, SceneObjectStateChangedPayload, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, SceneQueryControllerEntry, SceneQueryControllerEntryType, SceneQueryControllerLike, SceneRefreshPickerState, SceneRouteMatch, SceneStateChangedHandler, SceneStatelessBehavior, SceneTimeRangeLike, SceneTimeRangeState, SceneUrlSyncOptions, SceneVariable, SceneVariableDependencyConfigLike, SceneVariableSetState, SceneVariableState, SceneVariables, UrlSyncManagerLike, UseStateHookOptions, ValidateAndUpdateResult, VariableCustomFormatterFn, VariableGetOptionsArgs, VariableValue, VariableValueOption, VariableValueSingle, VizConfig, VizPanelState };
3352
+ export { AdHocFiltersComboboxRenderer, AdHocFiltersVariable, ConstantVariable, ControlsLabel, CustomVariable, DataProviderProxy, DataSourceVariable, EmbeddedScene, FieldConfigBuilder, FieldConfigBuilders, FieldConfigOverridesBuilder, GroupByVariable, IntervalVariable, LazyLoader, LocalValueVariable, MultiOrSingleValueSelect, MultiValueVariable, NestedScene, NewSceneObjectAddedEvent, PATH_ID_SEPARATOR, PanelBuilders, PanelOptionsBuilders, QueryVariable, RuntimeDataSource, SafeSerializableSceneObject, SceneApp, SceneAppPage, SceneByFrameRepeater, SceneByVariableRepeater, SceneCSSGridItem, SceneCSSGridLayout, SceneCanvasText, SceneControlsSpacer, SceneDataLayerBase, SceneDataLayerControls, SceneDataLayerSet, SceneDataLayerSetBase, SceneDataNode, SceneDataTransformer, SceneDebugger, SceneFlexItem, SceneFlexLayout, SceneGridItem, SceneGridLayout, SceneGridLayoutDragStartEvent, SceneGridRow, SceneObjectBase, SceneObjectRef, SceneObjectStateChangedEvent, SceneObjectUrlSyncConfig, SceneQueryRunner, SceneReactObject, SceneRefreshPicker, SceneRenderProfiler, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneVariableSet, SceneVariableValueChangedEvent, ScopesVariable, SplitLayout, SwitchVariable, TestVariable, TextBoxVariable, UrlSyncContextProvider, UrlSyncManager, UserActionEvent, VariableBackedAdHocFiltersController, VariableDependencyConfig, VariableValueControl, VariableValueSelectWrapper, VariableValueSelectors, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, index$1 as behaviors, index as dataLayers, escapeUrlPipeDelimiters, formatRegistry, getExploreURL, isCustomVariableValue, isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject, loadResources, registerQueryWithController, registerRuntimeDataSource, sceneGraph, sceneUtils, useSceneApp, useSceneObjectState, useUrlSync };
3353
+ export type { AdHocFilterWithLabels, AdHocFiltersController, AdHocFiltersControllerState, CancelActivationHandler, ControlsLayout, CustomFormatterVariable, CustomTransformOperator, CustomTransformerDefinition, CustomVariableValue, DataLayerFilter, DataRequestEnricher, DeepPartial, EmbeddedSceneState, ExtraQueryDataProcessor, ExtraQueryDescriptor, ExtraQueryProvider, FiltersRequestEnricher, FormatVariable, InterpolationFormatParameter, MacroVariableConstructor, MultiValueVariableState, QueryRunnerState, SceneActivationHandler, SceneAppDrilldownView, SceneAppPageLike, SceneAppPageState, SceneAppRoute, SceneComponent, SceneComponentProps, SceneDataLayerProvider, SceneDataLayerProviderState, SceneDataProvider, SceneDataProviderResult, SceneDataQuery, SceneDataState, SceneDataTransformerState, SceneDeactivationHandler, SceneFlexItemLike, SceneFlexItemState, SceneGridItemLike, SceneGridItemStateLike, SceneInteractionProfileEvent, SceneLayout, SceneLayoutChildOptions, SceneLayoutState, SceneObject, SceneObjectState, SceneObjectStateChangedPayload, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, SceneQueryControllerEntry, SceneQueryControllerEntryType, SceneQueryControllerLike, SceneRefreshPickerState, SceneRouteMatch, SceneStateChangedHandler, SceneStatelessBehavior, SceneTimeRangeLike, SceneTimeRangeState, SceneUrlSyncOptions, SceneVariable, SceneVariableDependencyConfigLike, SceneVariableSetState, SceneVariableState, SceneVariables, UrlSyncManagerLike, UseStateHookOptions, ValidateAndUpdateResult, VariableCustomFormatterFn, VariableGetOptionsArgs, VariableValue, VariableValueOption, VariableValueSingle, VizConfig, VizPanelState };