@grafana/scenes 6.42.2--canary.1293.18968800163.0 → 6.42.3--canary.1294.18971111328.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ # v6.42.2 (Fri Oct 31 2025)
2
+
3
+ #### 🐛 Bug Fix
4
+
5
+ - I18n: Download translations from Crowdin [#1293](https://github.com/grafana/scenes/pull/1293) ([@github-actions[bot]](https://github.com/github-actions[bot]) [@grafana-pr-automation[bot]](https://github.com/grafana-pr-automation[bot]))
6
+
7
+ #### Authors: 2
8
+
9
+ - [@github-actions[bot]](https://github.com/github-actions[bot])
10
+ - [@grafana-pr-automation[bot]](https://github.com/grafana-pr-automation[bot])
11
+
12
+ ---
13
+
1
14
  # v6.42.1 (Thu Oct 30 2025)
2
15
 
3
16
  #### 🐛 Bug Fix
package/dist/esm/index.js CHANGED
@@ -49,6 +49,7 @@ export { ScopesVariable } from './variables/variants/ScopesVariable.js';
49
49
  export { MultiValueVariable } from './variables/variants/MultiValueVariable.js';
50
50
  export { LocalValueVariable } from './variables/variants/LocalValueVariable.js';
51
51
  export { IntervalVariable } from './variables/variants/IntervalVariable.js';
52
+ export { ExperimentalIntervalVariable } from './variables/variants/ExperimentalIntervalVariable.js';
52
53
  export { AdHocFiltersVariable } from './variables/adhoc/AdHocFiltersVariable.js';
53
54
  export { AdHocFiltersVariableController } from './variables/adhoc/controller/AdHocFiltersVariableController.js';
54
55
  export { AdHocFiltersComboboxRenderer } from './variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js';
@@ -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 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 performanceUtils from './performance';\nexport { writePerformanceLog } from './utils/writePerformanceLog';\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} from './behaviors/types';\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 { AdHocFiltersVariableController } from './variables/adhoc/controller/AdHocFiltersVariableController';\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;;;;"}
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 performanceUtils from './performance';\nexport { writePerformanceLog } from './utils/writePerformanceLog';\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} from './behaviors/types';\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 { ExperimentalIntervalVariable } from './variables/variants/ExperimentalIntervalVariable';\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 { AdHocFiltersVariableController } from './variables/adhoc/controller/AdHocFiltersVariableController';\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyJO,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;;;;"}
@@ -0,0 +1,106 @@
1
+ import { t } from '@grafana/i18n';
2
+ import { rangeUtil } from '@grafana/data';
3
+ import { VariableRefresh } from '@grafana/schema';
4
+ import { Combobox } from '@grafana/ui';
5
+ import React from 'react';
6
+ import { of } from 'rxjs';
7
+ import { sceneGraph } from '../../core/sceneGraph/index.js';
8
+ import { SceneObjectBase } from '../../core/SceneObjectBase.js';
9
+ import { SceneObjectUrlSyncConfig } from '../../services/SceneObjectUrlSyncConfig.js';
10
+ import { AUTO_VARIABLE_TEXT, AUTO_VARIABLE_VALUE } from '../constants.js';
11
+ import { SceneVariableValueChangedEvent } from '../types.js';
12
+
13
+ class ExperimentalIntervalVariable extends SceneObjectBase {
14
+ constructor(initialState) {
15
+ super({
16
+ type: "interval",
17
+ value: "",
18
+ intervals: ["1m", "10m", "30m", "1h", "6h", "12h", "1d", "7d", "14d", "30d"],
19
+ name: "",
20
+ autoStepCount: 30,
21
+ autoMinInterval: "10s",
22
+ autoEnabled: false,
23
+ refresh: VariableRefresh.onTimeRangeChanged,
24
+ ...initialState
25
+ });
26
+ this._onChange = (value) => {
27
+ this.setState({ value: value.value });
28
+ this.publishEvent(new SceneVariableValueChangedEvent(this), true);
29
+ };
30
+ this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: () => [this.getKey()] });
31
+ }
32
+ getKey() {
33
+ return `var-${this.state.name}`;
34
+ }
35
+ getUrlState() {
36
+ return { [this.getKey()]: this.state.value };
37
+ }
38
+ updateFromUrl(values) {
39
+ const update = {};
40
+ const val = values[this.getKey()];
41
+ if (typeof val === "string") {
42
+ if (val.startsWith("$__auto_interval_")) {
43
+ update.value = AUTO_VARIABLE_VALUE;
44
+ } else {
45
+ update.value = val;
46
+ }
47
+ }
48
+ this.setState(update);
49
+ }
50
+ getOptionsForSelect() {
51
+ const { value: currentValue, intervals, autoEnabled } = this.state;
52
+ let options = intervals.map((interval) => ({ value: interval, label: interval }));
53
+ if (autoEnabled) {
54
+ options = [{ value: AUTO_VARIABLE_VALUE, label: AUTO_VARIABLE_TEXT }, ...options];
55
+ }
56
+ if (currentValue && !options.some((option) => option.value === currentValue)) {
57
+ options.push({ value: currentValue, label: currentValue });
58
+ }
59
+ return options;
60
+ }
61
+ getValue() {
62
+ const { value, autoStepCount, autoMinInterval } = this.state;
63
+ if (value === AUTO_VARIABLE_VALUE) {
64
+ return this.getAutoRefreshInteval(autoStepCount, autoMinInterval);
65
+ }
66
+ return value;
67
+ }
68
+ getAutoRefreshInteval(autoStepCount, minRefreshInterval) {
69
+ const timeRange = sceneGraph.getTimeRange(this).state.value;
70
+ const intervalObject = rangeUtil.calculateInterval(timeRange, autoStepCount, minRefreshInterval);
71
+ return intervalObject.interval;
72
+ }
73
+ validateAndUpdate() {
74
+ const { value, intervals } = this.state;
75
+ let shouldPublish = false;
76
+ if (value === AUTO_VARIABLE_VALUE) {
77
+ shouldPublish = true;
78
+ } else if (!value && intervals.length > 0) {
79
+ const firstOption = intervals[0];
80
+ this.setState({ value: firstOption });
81
+ shouldPublish = true;
82
+ }
83
+ if (shouldPublish) {
84
+ this.publishEvent(new SceneVariableValueChangedEvent(this), true);
85
+ }
86
+ return of({});
87
+ }
88
+ }
89
+ ExperimentalIntervalVariable.Component = ({ model }) => {
90
+ const { key, value } = model.useState();
91
+ return /* @__PURE__ */ React.createElement(
92
+ Combobox,
93
+ {
94
+ id: key,
95
+ placeholder: t("grafana-scenes.variables.interval-variable.placeholder-select-value", "Select value"),
96
+ value,
97
+ options: model.getOptionsForSelect(),
98
+ onChange: model._onChange,
99
+ width: "auto",
100
+ minWidth: 32
101
+ }
102
+ );
103
+ };
104
+
105
+ export { ExperimentalIntervalVariable };
106
+ //# sourceMappingURL=ExperimentalIntervalVariable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExperimentalIntervalVariable.js","sources":["../../../../src/variables/variants/ExperimentalIntervalVariable.tsx"],"sourcesContent":["import { t } from '@grafana/i18n';\nimport { rangeUtil } from '@grafana/data';\nimport { VariableRefresh } from '@grafana/schema';\nimport { Combobox, ComboboxOption } from '@grafana/ui';\nimport React from 'react';\nimport { Observable, of } from 'rxjs';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport { SceneComponentProps, SceneObjectUrlValues } from '../../core/types';\nimport { SceneObjectUrlSyncConfig } from '../../services/SceneObjectUrlSyncConfig';\nimport { AUTO_VARIABLE_TEXT, AUTO_VARIABLE_VALUE } from '../constants';\nimport {\n SceneVariable,\n SceneVariableState,\n SceneVariableValueChangedEvent,\n ValidateAndUpdateResult,\n VariableValue,\n} from '../types';\n\nexport interface IntervalVariableState extends SceneVariableState {\n intervals: string[];\n value: string;\n autoEnabled: boolean;\n autoMinInterval: string;\n autoStepCount: number;\n refresh: VariableRefresh;\n}\n\n/**\n * @experimental Temporary experimental alternative to IntervalVariable\n * that implements new `<Combobox />` instead of `<Select />`\n */\n\nexport class ExperimentalIntervalVariable\n extends SceneObjectBase<IntervalVariableState>\n implements SceneVariable<IntervalVariableState>\n{\n public constructor(initialState: Partial<IntervalVariableState>) {\n super({\n type: 'interval',\n value: '',\n intervals: ['1m', '10m', '30m', '1h', '6h', '12h', '1d', '7d', '14d', '30d'],\n name: '',\n autoStepCount: 30,\n autoMinInterval: '10s',\n autoEnabled: false,\n refresh: VariableRefresh.onTimeRangeChanged,\n ...initialState,\n });\n\n this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: () => [this.getKey()] });\n }\n\n private getKey(): string {\n return `var-${this.state.name}`;\n }\n\n public getUrlState() {\n return { [this.getKey()]: this.state.value };\n }\n\n public updateFromUrl(values: SceneObjectUrlValues) {\n const update: Partial<IntervalVariableState> = {};\n const val = values[this.getKey()];\n if (typeof val === 'string') {\n // support old auto interval url value\n if (val.startsWith('$__auto_interval_')) {\n update.value = AUTO_VARIABLE_VALUE;\n } else {\n update.value = val;\n }\n }\n this.setState(update);\n }\n\n public getOptionsForSelect(): Array<ComboboxOption<string>> {\n const { value: currentValue, intervals, autoEnabled } = this.state;\n\n let options = intervals.map((interval) => ({ value: interval, label: interval }));\n\n if (autoEnabled) {\n options = [{ value: AUTO_VARIABLE_VALUE, label: AUTO_VARIABLE_TEXT }, ...options];\n }\n\n // If the current value is not in the list of intervals, add it to the list\n if (currentValue && !options.some((option) => option.value === currentValue)) {\n options.push({ value: currentValue, label: currentValue });\n }\n\n return options;\n }\n\n public getValue(): VariableValue {\n const { value, autoStepCount, autoMinInterval } = this.state;\n if (value === AUTO_VARIABLE_VALUE) {\n return this.getAutoRefreshInteval(autoStepCount, autoMinInterval);\n }\n\n return value;\n }\n\n private getAutoRefreshInteval(autoStepCount: number, minRefreshInterval: string) {\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const intervalObject = rangeUtil.calculateInterval(timeRange, autoStepCount, minRefreshInterval);\n return intervalObject.interval;\n }\n\n public _onChange = (value: ComboboxOption<string>) => {\n this.setState({ value: value.value! });\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n };\n\n public validateAndUpdate(): Observable<ValidateAndUpdateResult> {\n const { value, intervals } = this.state;\n let shouldPublish = false;\n\n if (value === AUTO_VARIABLE_VALUE) {\n shouldPublish = true;\n } else if (!value && intervals.length > 0) {\n const firstOption = intervals[0];\n this.setState({ value: firstOption });\n shouldPublish = true;\n }\n\n if (shouldPublish) {\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n }\n\n return of({});\n }\n\n public static Component = ({ model }: SceneComponentProps<ExperimentalIntervalVariable>) => {\n const { key, value } = model.useState();\n\n return (\n <Combobox\n id={key}\n placeholder={t('grafana-scenes.variables.interval-variable.placeholder-select-value', 'Select value')}\n value={value}\n options={model.getOptionsForSelect()}\n onChange={model._onChange}\n width=\"auto\"\n minWidth={32}\n />\n );\n };\n}\n"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ import * as React$1 from 'react';
6
6
  import React__default, { ComponentType, CSSProperties, PointerEvent, ForwardRefExoticComponent } from 'react';
7
7
  import * as rxjs from 'rxjs';
8
8
  import { Observable, Subscription, Unsubscribable, MonoTypeOperatorFunction, ReplaySubject } from 'rxjs';
9
- import { PanelContext, WeekStart, IconName as IconName$1 } from '@grafana/ui';
9
+ import { PanelContext, WeekStart, ComboboxOption, IconName as IconName$1 } from '@grafana/ui';
10
10
  import { LocationService, VariableInterpolation, ScopesContextValue } from '@grafana/runtime';
11
11
  import { Location } from 'history';
12
12
  import ReactGridLayout from 'react-grid-layout';
@@ -1276,7 +1276,7 @@ declare class DataSourceVariable extends MultiValueVariable<DataSourceVariableSt
1276
1276
  static Component: ({ model }: SceneComponentProps<MultiValueVariable>) => React__default.JSX.Element;
1277
1277
  }
1278
1278
 
1279
- interface IntervalVariableState extends SceneVariableState {
1279
+ interface IntervalVariableState$1 extends SceneVariableState {
1280
1280
  intervals: string[];
1281
1281
  value: string;
1282
1282
  autoEnabled: boolean;
@@ -1284,8 +1284,8 @@ interface IntervalVariableState extends SceneVariableState {
1284
1284
  autoStepCount: number;
1285
1285
  refresh: VariableRefresh;
1286
1286
  }
1287
- declare class IntervalVariable extends SceneObjectBase<IntervalVariableState> implements SceneVariable<IntervalVariableState> {
1288
- constructor(initialState: Partial<IntervalVariableState>);
1287
+ declare class IntervalVariable extends SceneObjectBase<IntervalVariableState$1> implements SceneVariable<IntervalVariableState$1> {
1288
+ constructor(initialState: Partial<IntervalVariableState$1>);
1289
1289
  private getKey;
1290
1290
  getUrlState(): {
1291
1291
  [x: string]: string;
@@ -2448,6 +2448,33 @@ declare class LocalValueVariable extends SceneObjectBase<LocalValueVariableState
2448
2448
  isAncestorLoading(): boolean;
2449
2449
  }
2450
2450
 
2451
+ interface IntervalVariableState extends SceneVariableState {
2452
+ intervals: string[];
2453
+ value: string;
2454
+ autoEnabled: boolean;
2455
+ autoMinInterval: string;
2456
+ autoStepCount: number;
2457
+ refresh: VariableRefresh;
2458
+ }
2459
+ /**
2460
+ * @experimental Temporary experimental alternative to IntervalVariable
2461
+ * that implements new `<Combobox />` instead of `<Select />`
2462
+ */
2463
+ declare class ExperimentalIntervalVariable extends SceneObjectBase<IntervalVariableState> implements SceneVariable<IntervalVariableState> {
2464
+ constructor(initialState: Partial<IntervalVariableState>);
2465
+ private getKey;
2466
+ getUrlState(): {
2467
+ [x: string]: string;
2468
+ };
2469
+ updateFromUrl(values: SceneObjectUrlValues): void;
2470
+ getOptionsForSelect(): Array<ComboboxOption<string>>;
2471
+ getValue(): VariableValue;
2472
+ private getAutoRefreshInteval;
2473
+ _onChange: (value: ComboboxOption<string>) => void;
2474
+ validateAndUpdate(): Observable<ValidateAndUpdateResult>;
2475
+ static Component: ({ model }: SceneComponentProps<ExperimentalIntervalVariable>) => React__default.JSX.Element;
2476
+ }
2477
+
2451
2478
  /**
2452
2479
  * Controller state returned by useState hook
2453
2480
  */
@@ -3582,5 +3609,5 @@ declare const sceneUtils: {
3582
3609
  buildPathIdFor: typeof buildPathIdFor;
3583
3610
  };
3584
3611
 
3585
- export { AdHocFiltersComboboxRenderer, AdHocFiltersVariable, AdHocFiltersVariableController, 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, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneVariableSet, SceneVariableValueChangedEvent, ScopesVariable, SplitLayout, SwitchVariable, TestVariable, TextBoxVariable, UrlSyncContextProvider, UrlSyncManager, UserActionEvent, VariableDependencyConfig, VariableValueControl, VariableValueSelectWrapper, VariableValueSelectors, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, index$2 as behaviors, index as dataLayers, escapeUrlPipeDelimiters, formatRegistry, getExploreURL, isCustomVariableValue, isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject, loadResources, index$1 as performanceUtils, registerQueryWithController, registerRuntimeDataSource, sceneGraph, sceneUtils, useSceneApp, useSceneObjectState, useUrlSync, writePerformanceLog };
3612
+ export { AdHocFiltersComboboxRenderer, AdHocFiltersVariable, AdHocFiltersVariableController, ConstantVariable, ControlsLabel, CustomVariable, DataProviderProxy, DataSourceVariable, EmbeddedScene, ExperimentalIntervalVariable, 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, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneVariableSet, SceneVariableValueChangedEvent, ScopesVariable, SplitLayout, SwitchVariable, TestVariable, TextBoxVariable, UrlSyncContextProvider, UrlSyncManager, UserActionEvent, VariableDependencyConfig, VariableValueControl, VariableValueSelectWrapper, VariableValueSelectors, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, index$2 as behaviors, index as dataLayers, escapeUrlPipeDelimiters, formatRegistry, getExploreURL, isCustomVariableValue, isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject, loadResources, index$1 as performanceUtils, registerQueryWithController, registerRuntimeDataSource, sceneGraph, sceneUtils, useSceneApp, useSceneObjectState, useUrlSync, writePerformanceLog };
3586
3613
  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, 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 };
package/dist/index.js CHANGED
@@ -12282,6 +12282,98 @@ IntervalVariable.Component = ({ model }) => {
12282
12282
  );
12283
12283
  };
12284
12284
 
12285
+ class ExperimentalIntervalVariable extends SceneObjectBase {
12286
+ constructor(initialState) {
12287
+ super({
12288
+ type: "interval",
12289
+ value: "",
12290
+ intervals: ["1m", "10m", "30m", "1h", "6h", "12h", "1d", "7d", "14d", "30d"],
12291
+ name: "",
12292
+ autoStepCount: 30,
12293
+ autoMinInterval: "10s",
12294
+ autoEnabled: false,
12295
+ refresh: schema.VariableRefresh.onTimeRangeChanged,
12296
+ ...initialState
12297
+ });
12298
+ this._onChange = (value) => {
12299
+ this.setState({ value: value.value });
12300
+ this.publishEvent(new SceneVariableValueChangedEvent(this), true);
12301
+ };
12302
+ this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: () => [this.getKey()] });
12303
+ }
12304
+ getKey() {
12305
+ return `var-${this.state.name}`;
12306
+ }
12307
+ getUrlState() {
12308
+ return { [this.getKey()]: this.state.value };
12309
+ }
12310
+ updateFromUrl(values) {
12311
+ const update = {};
12312
+ const val = values[this.getKey()];
12313
+ if (typeof val === "string") {
12314
+ if (val.startsWith("$__auto_interval_")) {
12315
+ update.value = AUTO_VARIABLE_VALUE;
12316
+ } else {
12317
+ update.value = val;
12318
+ }
12319
+ }
12320
+ this.setState(update);
12321
+ }
12322
+ getOptionsForSelect() {
12323
+ const { value: currentValue, intervals, autoEnabled } = this.state;
12324
+ let options = intervals.map((interval) => ({ value: interval, label: interval }));
12325
+ if (autoEnabled) {
12326
+ options = [{ value: AUTO_VARIABLE_VALUE, label: AUTO_VARIABLE_TEXT }, ...options];
12327
+ }
12328
+ if (currentValue && !options.some((option) => option.value === currentValue)) {
12329
+ options.push({ value: currentValue, label: currentValue });
12330
+ }
12331
+ return options;
12332
+ }
12333
+ getValue() {
12334
+ const { value, autoStepCount, autoMinInterval } = this.state;
12335
+ if (value === AUTO_VARIABLE_VALUE) {
12336
+ return this.getAutoRefreshInteval(autoStepCount, autoMinInterval);
12337
+ }
12338
+ return value;
12339
+ }
12340
+ getAutoRefreshInteval(autoStepCount, minRefreshInterval) {
12341
+ const timeRange = sceneGraph.getTimeRange(this).state.value;
12342
+ const intervalObject = data.rangeUtil.calculateInterval(timeRange, autoStepCount, minRefreshInterval);
12343
+ return intervalObject.interval;
12344
+ }
12345
+ validateAndUpdate() {
12346
+ const { value, intervals } = this.state;
12347
+ let shouldPublish = false;
12348
+ if (value === AUTO_VARIABLE_VALUE) {
12349
+ shouldPublish = true;
12350
+ } else if (!value && intervals.length > 0) {
12351
+ const firstOption = intervals[0];
12352
+ this.setState({ value: firstOption });
12353
+ shouldPublish = true;
12354
+ }
12355
+ if (shouldPublish) {
12356
+ this.publishEvent(new SceneVariableValueChangedEvent(this), true);
12357
+ }
12358
+ return rxjs.of({});
12359
+ }
12360
+ }
12361
+ ExperimentalIntervalVariable.Component = ({ model }) => {
12362
+ const { key, value } = model.useState();
12363
+ return /* @__PURE__ */ React__default.default.createElement(
12364
+ ui.Combobox,
12365
+ {
12366
+ id: key,
12367
+ placeholder: i18n.t("grafana-scenes.variables.interval-variable.placeholder-select-value", "Select value"),
12368
+ value,
12369
+ options: model.getOptionsForSelect(),
12370
+ onChange: model._onChange,
12371
+ width: "auto",
12372
+ minWidth: 32
12373
+ }
12374
+ );
12375
+ };
12376
+
12285
12377
  var __typeError = (msg) => {
12286
12378
  throw TypeError(msg);
12287
12379
  };
@@ -16101,6 +16193,7 @@ exports.CustomVariable = CustomVariable;
16101
16193
  exports.DataProviderProxy = DataProviderProxy;
16102
16194
  exports.DataSourceVariable = DataSourceVariable;
16103
16195
  exports.EmbeddedScene = EmbeddedScene;
16196
+ exports.ExperimentalIntervalVariable = ExperimentalIntervalVariable;
16104
16197
  exports.FieldConfigBuilder = FieldConfigBuilder;
16105
16198
  exports.FieldConfigBuilders = FieldConfigBuilders;
16106
16199
  exports.FieldConfigOverridesBuilder = FieldConfigOverridesBuilder;