@grafana/scenes 8.12.0 → 8.12.1

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,15 @@
1
+ # v8.12.1 (Mon Jul 13 2026)
2
+
3
+ #### 🐛 Bug Fix
4
+
5
+ - SceneRefreshPicker: Disable refresh when in image render mode [#1552](https://github.com/grafana/scenes/pull/1552) ([@tskarhed](https://github.com/tskarhed))
6
+
7
+ #### Authors: 1
8
+
9
+ - Tobias Skarhed ([@tskarhed](https://github.com/tskarhed))
10
+
11
+ ---
12
+
1
13
  # v8.12.0 (Mon Jul 13 2026)
2
14
 
3
15
  #### 🚀 Enhancement
@@ -76,8 +76,11 @@ class SceneRefreshPicker extends SceneObjectBase {
76
76
  if (refresh !== RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {
77
77
  return;
78
78
  }
79
- let intervalMs;
80
79
  (_a = this._autoTimeRangeListener) == null ? void 0 : _a.unsubscribe();
80
+ if (isImageRenderer()) {
81
+ return;
82
+ }
83
+ let intervalMs;
81
84
  if (refresh === RefreshPicker.autoOption.value) {
82
85
  const autoRefreshInterval = this.calculateAutoRefreshInterval();
83
86
  intervalMs = autoRefreshInterval.intervalMs;
@@ -208,6 +211,9 @@ function findClosestInterval(userInterval, allowedIntervals) {
208
211
  }
209
212
  return selectedInterval;
210
213
  }
214
+ function isImageRenderer() {
215
+ return typeof window !== "undefined" && typeof window.__grafanaImageRendererMessageChannel === "function";
216
+ }
211
217
 
212
218
  export { DEFAULT_INTERVALS, SceneRefreshPicker, SceneRefreshPickerRenderer };
213
219
  //# sourceMappingURL=SceneRefreshPicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneRefreshPicker.js","sources":["../../../src/components/SceneRefreshPicker.tsx"],"sourcesContent":["import React from 'react';\nimport { Unsubscribable } from 'rxjs';\nimport { rangeUtil } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { RefreshPicker } from '@grafana/ui';\n\nimport { SceneObjectBase } from '../core/SceneObjectBase';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { SceneComponentProps, SceneObject, SceneObjectState, SceneObjectUrlValues } from '../core/types';\nimport { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig';\nimport { REFRESH_INTERACTION } from '../performance/interactionConstants';\nimport { t } from '@grafana/i18n';\n\nexport const DEFAULT_INTERVALS = ['5s', '10s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'];\n\nexport interface SceneRefreshPickerState extends SceneObjectState {\n /**\n * Refresh interval, e.g. 5s, 1m, 2h\n */\n refresh: string;\n autoEnabled?: boolean;\n autoMinInterval?: string;\n autoValue?: string;\n /**\n * List of allowed refresh intervals, e.g. ['5s', '1m']\n */\n intervals?: string[];\n isOnCanvas?: boolean;\n primary?: boolean;\n withText?: boolean;\n /**\n * Overrides the default minRefreshInterval from the grafana config. Can be set to \"0s\" to remove the minimum refresh interval.\n */\n minRefreshInterval?: string;\n}\n\nexport class SceneRefreshPicker extends SceneObjectBase<SceneRefreshPickerState> {\n public static Component = SceneRefreshPickerRenderer;\n protected _urlSync = new SceneObjectUrlSyncConfig(this, { keys: ['refresh'] });\n private _intervalTimer: ReturnType<typeof setInterval> | undefined;\n private _autoTimeRangeListener: Unsubscribable | undefined;\n private _autoRefreshBlocked = false;\n\n public constructor(state: Partial<SceneRefreshPickerState>) {\n const filterDissalowedIntervals = (i: string) => {\n const minInterval = state.minRefreshInterval ?? config.minRefreshInterval;\n try {\n return minInterval ? rangeUtil.intervalToMs(i) >= rangeUtil.intervalToMs(minInterval) : true;\n } catch (e) {\n // Unable to parse interval\n return false;\n }\n };\n\n super({\n refresh: '',\n ...state,\n autoValue: undefined,\n autoEnabled: state.autoEnabled ?? true,\n autoMinInterval: state.autoMinInterval ?? config.minRefreshInterval,\n intervals: (state.intervals ?? DEFAULT_INTERVALS).filter(filterDissalowedIntervals),\n });\n\n this.addActivationHandler(() => {\n this.setupIntervalTimer();\n\n const onVisibilityChange = () => {\n if (this._autoRefreshBlocked && document.visibilityState === 'visible') {\n this._autoRefreshBlocked = false;\n this.onRefresh();\n }\n };\n\n document.addEventListener('visibilitychange', onVisibilityChange);\n\n return () => {\n if (this._intervalTimer) {\n clearInterval(this._intervalTimer);\n }\n\n document.removeEventListener('visibilitychange', onVisibilityChange);\n this._autoTimeRangeListener?.unsubscribe();\n };\n });\n }\n\n public onRefresh = () => {\n const queryController = sceneGraph.getQueryController(this);\n\n if (queryController?.state.isRunning) {\n queryController.cancelAll();\n queryController.cancelProfile();\n return;\n }\n\n queryController?.startProfile(REFRESH_INTERACTION);\n\n const timeRange = sceneGraph.getTimeRange(this);\n\n if (this._intervalTimer) {\n clearInterval(this._intervalTimer);\n }\n\n timeRange.onRefresh();\n this.setupIntervalTimer();\n };\n\n public onIntervalChanged = (interval: string) => {\n this.setState({ refresh: interval });\n this.setupIntervalTimer();\n };\n\n public getUrlState() {\n let refresh: string | undefined = this.state.refresh;\n\n if (typeof refresh !== 'string' || refresh.length === 0) {\n refresh = undefined;\n }\n\n return { refresh };\n }\n\n public updateFromUrl(values: SceneObjectUrlValues) {\n const { intervals } = this.state;\n let refresh = values.refresh;\n\n if (typeof refresh === 'string' && isIntervalString(refresh)) {\n if (intervals?.includes(refresh)) {\n this.setState({ refresh });\n } else {\n this.setState({\n // Round down to the largest allowed refresh interval <= the URL interval if the interval from the URL is not allowed.\n refresh: intervals ? findClosestInterval(refresh, intervals) : undefined,\n });\n }\n }\n }\n\n private setupAutoTimeRangeListener = () => {\n // If the time range has changed, we need to recalculate the auto interval but prevent unnecessary processing\n return sceneGraph.getTimeRange(this).subscribeToState((newState, prevState) => {\n if (newState.from !== prevState.from || newState.to !== prevState.to) {\n this.setupIntervalTimer();\n }\n });\n };\n\n private calculateAutoRefreshInterval = () => {\n const timeRange = sceneGraph.getTimeRange(this);\n const resolution = window?.innerWidth ?? 2000;\n return rangeUtil.calculateInterval(timeRange.state.value, resolution, this.state.autoMinInterval);\n };\n\n private isTabVisible() {\n return document.visibilityState === undefined || document.visibilityState === 'visible';\n }\n\n private setupIntervalTimer = () => {\n const timeRange = sceneGraph.getTimeRange(this);\n const { refresh, intervals } = this.state;\n\n if (this._intervalTimer || refresh === '') {\n clearInterval(this._intervalTimer);\n }\n\n if (refresh === '') {\n return;\n }\n\n // If the provided interval is not allowed\n if (refresh !== RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {\n return;\n }\n\n let intervalMs: number;\n\n // Unsubscribe from previous listener no matter what\n this._autoTimeRangeListener?.unsubscribe();\n\n if (refresh === RefreshPicker.autoOption.value) {\n const autoRefreshInterval = this.calculateAutoRefreshInterval();\n\n intervalMs = autoRefreshInterval.intervalMs;\n\n this._autoTimeRangeListener = this.setupAutoTimeRangeListener();\n\n if (autoRefreshInterval.interval !== this.state.autoValue) {\n this.setState({ autoValue: autoRefreshInterval.interval });\n }\n } else {\n intervalMs = rangeUtil.intervalToMs(refresh);\n }\n\n this._intervalTimer = setInterval(() => {\n if (this.isTabVisible()) {\n const queryController = sceneGraph.getQueryController(this);\n\n if (queryController?.state.isRunning) {\n queryController.cancelProfile();\n }\n\n queryController?.startProfile(REFRESH_INTERACTION);\n timeRange.onRefresh();\n } else {\n this._autoRefreshBlocked = true;\n }\n }, intervalMs);\n };\n}\n\nexport function SceneRefreshPickerRenderer({ model }: SceneComponentProps<SceneRefreshPicker>) {\n const { refresh, intervals, autoEnabled, autoValue, isOnCanvas, primary, withText } = model.useState();\n const isRunning = useQueryControllerState(model);\n\n let text =\n refresh === RefreshPicker.autoOption?.value\n ? autoValue\n : withText\n ? t('grafana-scenes.components.scene-refresh-picker.text-refresh', 'Refresh')\n : undefined;\n let tooltip: string | undefined;\n let loadingText: string | undefined;\n if (withText) {\n loadingText = t('grafana-scenes.components.scene-refresh-picker.text-cancel', 'Cancel');\n }\n\n if (isRunning) {\n tooltip = t('grafana-scenes.components.scene-refresh-picker.tooltip-cancel', 'Cancel all queries');\n }\n\n return (\n <RefreshPicker\n showAutoInterval={autoEnabled}\n value={refresh}\n intervals={intervals}\n tooltip={tooltip}\n text={text}\n // @ts-expect-error - this prop is only available in grafana>13.1.0-25211456722\n loadingText={loadingText}\n onRefresh={() => {\n model.onRefresh();\n }}\n primary={primary}\n onIntervalChanged={model.onIntervalChanged}\n isLoading={isRunning}\n isOnCanvas={isOnCanvas ?? true}\n />\n );\n}\n\nfunction useQueryControllerState(model: SceneObject): boolean {\n const queryController = sceneGraph.getQueryController(model);\n if (!queryController) {\n return false;\n }\n\n return queryController.useState().isRunning;\n}\n\nfunction isIntervalString(str: string): boolean {\n try {\n const res = rangeUtil.describeInterval(str);\n return res.count > 0;\n } catch {\n return false;\n }\n}\n\nfunction findClosestInterval(userInterval: string, allowedIntervals: string[]): string | undefined {\n if (allowedIntervals.length === 0) {\n return undefined;\n }\n\n const userIntervalMs = rangeUtil.intervalToMs(userInterval);\n let selectedInterval = allowedIntervals[0];\n\n for (let i = 1; i < allowedIntervals.length; i++) {\n const intervalMs = rangeUtil.intervalToMs(allowedIntervals[i]);\n\n if (intervalMs > userIntervalMs) {\n break;\n }\n\n selectedInterval = allowedIntervals[i];\n }\n return selectedInterval;\n}\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"SceneRefreshPicker.js","sources":["../../../src/components/SceneRefreshPicker.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/triple-slash-reference -- type-only reference; avoids emitting a runtime import for a pure global augmentation\n/// <reference path=\"../types/window.d.ts\" />\nimport React from 'react';\nimport { Unsubscribable } from 'rxjs';\nimport { rangeUtil } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { RefreshPicker } from '@grafana/ui';\n\nimport { SceneObjectBase } from '../core/SceneObjectBase';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { SceneComponentProps, SceneObject, SceneObjectState, SceneObjectUrlValues } from '../core/types';\nimport { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig';\nimport { REFRESH_INTERACTION } from '../performance/interactionConstants';\nimport { t } from '@grafana/i18n';\n\nexport const DEFAULT_INTERVALS = ['5s', '10s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'];\n\nexport interface SceneRefreshPickerState extends SceneObjectState {\n /**\n * Refresh interval, e.g. 5s, 1m, 2h\n */\n refresh: string;\n autoEnabled?: boolean;\n autoMinInterval?: string;\n autoValue?: string;\n /**\n * List of allowed refresh intervals, e.g. ['5s', '1m']\n */\n intervals?: string[];\n isOnCanvas?: boolean;\n primary?: boolean;\n withText?: boolean;\n /**\n * Overrides the default minRefreshInterval from the grafana config. Can be set to \"0s\" to remove the minimum refresh interval.\n */\n minRefreshInterval?: string;\n}\n\nexport class SceneRefreshPicker extends SceneObjectBase<SceneRefreshPickerState> {\n public static Component = SceneRefreshPickerRenderer;\n protected _urlSync = new SceneObjectUrlSyncConfig(this, { keys: ['refresh'] });\n private _intervalTimer: ReturnType<typeof setInterval> | undefined;\n private _autoTimeRangeListener: Unsubscribable | undefined;\n private _autoRefreshBlocked = false;\n\n public constructor(state: Partial<SceneRefreshPickerState>) {\n const filterDissalowedIntervals = (i: string) => {\n const minInterval = state.minRefreshInterval ?? config.minRefreshInterval;\n try {\n return minInterval ? rangeUtil.intervalToMs(i) >= rangeUtil.intervalToMs(minInterval) : true;\n } catch (e) {\n // Unable to parse interval\n return false;\n }\n };\n\n super({\n refresh: '',\n ...state,\n autoValue: undefined,\n autoEnabled: state.autoEnabled ?? true,\n autoMinInterval: state.autoMinInterval ?? config.minRefreshInterval,\n intervals: (state.intervals ?? DEFAULT_INTERVALS).filter(filterDissalowedIntervals),\n });\n\n this.addActivationHandler(() => {\n this.setupIntervalTimer();\n\n const onVisibilityChange = () => {\n if (this._autoRefreshBlocked && document.visibilityState === 'visible') {\n this._autoRefreshBlocked = false;\n this.onRefresh();\n }\n };\n\n document.addEventListener('visibilitychange', onVisibilityChange);\n\n return () => {\n if (this._intervalTimer) {\n clearInterval(this._intervalTimer);\n }\n\n document.removeEventListener('visibilitychange', onVisibilityChange);\n this._autoTimeRangeListener?.unsubscribe();\n };\n });\n }\n\n public onRefresh = () => {\n const queryController = sceneGraph.getQueryController(this);\n\n if (queryController?.state.isRunning) {\n queryController.cancelAll();\n queryController.cancelProfile();\n return;\n }\n\n queryController?.startProfile(REFRESH_INTERACTION);\n\n const timeRange = sceneGraph.getTimeRange(this);\n\n if (this._intervalTimer) {\n clearInterval(this._intervalTimer);\n }\n\n timeRange.onRefresh();\n this.setupIntervalTimer();\n };\n\n public onIntervalChanged = (interval: string) => {\n this.setState({ refresh: interval });\n this.setupIntervalTimer();\n };\n\n public getUrlState() {\n let refresh: string | undefined = this.state.refresh;\n\n if (typeof refresh !== 'string' || refresh.length === 0) {\n refresh = undefined;\n }\n\n return { refresh };\n }\n\n public updateFromUrl(values: SceneObjectUrlValues) {\n const { intervals } = this.state;\n let refresh = values.refresh;\n\n if (typeof refresh === 'string' && isIntervalString(refresh)) {\n if (intervals?.includes(refresh)) {\n this.setState({ refresh });\n } else {\n this.setState({\n // Round down to the largest allowed refresh interval <= the URL interval if the interval from the URL is not allowed.\n refresh: intervals ? findClosestInterval(refresh, intervals) : undefined,\n });\n }\n }\n }\n\n private setupAutoTimeRangeListener = () => {\n // If the time range has changed, we need to recalculate the auto interval but prevent unnecessary processing\n return sceneGraph.getTimeRange(this).subscribeToState((newState, prevState) => {\n if (newState.from !== prevState.from || newState.to !== prevState.to) {\n this.setupIntervalTimer();\n }\n });\n };\n\n private calculateAutoRefreshInterval = () => {\n const timeRange = sceneGraph.getTimeRange(this);\n const resolution = window?.innerWidth ?? 2000;\n return rangeUtil.calculateInterval(timeRange.state.value, resolution, this.state.autoMinInterval);\n };\n\n private isTabVisible() {\n return document.visibilityState === undefined || document.visibilityState === 'visible';\n }\n\n private setupIntervalTimer = () => {\n const timeRange = sceneGraph.getTimeRange(this);\n const { refresh, intervals } = this.state;\n\n if (this._intervalTimer || refresh === '') {\n clearInterval(this._intervalTimer);\n }\n\n if (refresh === '') {\n return;\n }\n\n // If the provided interval is not allowed\n if (refresh !== RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {\n return;\n }\n\n // Unsubscribe from previous listener no matter what\n this._autoTimeRangeListener?.unsubscribe();\n\n // Disable refreshes in image renderer, as they may cause unintentional timeouts\n // The UI will still show the configure refresh amount, but it will not refresh.\n if (isImageRenderer()) {\n return;\n }\n\n let intervalMs: number;\n\n if (refresh === RefreshPicker.autoOption.value) {\n const autoRefreshInterval = this.calculateAutoRefreshInterval();\n\n intervalMs = autoRefreshInterval.intervalMs;\n\n this._autoTimeRangeListener = this.setupAutoTimeRangeListener();\n\n if (autoRefreshInterval.interval !== this.state.autoValue) {\n this.setState({ autoValue: autoRefreshInterval.interval });\n }\n } else {\n intervalMs = rangeUtil.intervalToMs(refresh);\n }\n\n this._intervalTimer = setInterval(() => {\n if (this.isTabVisible()) {\n const queryController = sceneGraph.getQueryController(this);\n\n if (queryController?.state.isRunning) {\n queryController.cancelProfile();\n }\n\n queryController?.startProfile(REFRESH_INTERACTION);\n timeRange.onRefresh();\n } else {\n this._autoRefreshBlocked = true;\n }\n }, intervalMs);\n };\n}\n\nexport function SceneRefreshPickerRenderer({ model }: SceneComponentProps<SceneRefreshPicker>) {\n const { refresh, intervals, autoEnabled, autoValue, isOnCanvas, primary, withText } = model.useState();\n const isRunning = useQueryControllerState(model);\n\n let text =\n refresh === RefreshPicker.autoOption?.value\n ? autoValue\n : withText\n ? t('grafana-scenes.components.scene-refresh-picker.text-refresh', 'Refresh')\n : undefined;\n let tooltip: string | undefined;\n let loadingText: string | undefined;\n if (withText) {\n loadingText = t('grafana-scenes.components.scene-refresh-picker.text-cancel', 'Cancel');\n }\n\n if (isRunning) {\n tooltip = t('grafana-scenes.components.scene-refresh-picker.tooltip-cancel', 'Cancel all queries');\n }\n\n return (\n <RefreshPicker\n showAutoInterval={autoEnabled}\n value={refresh}\n intervals={intervals}\n tooltip={tooltip}\n text={text}\n // @ts-expect-error - this prop is only available in grafana>13.1.0-25211456722\n loadingText={loadingText}\n onRefresh={() => {\n model.onRefresh();\n }}\n primary={primary}\n onIntervalChanged={model.onIntervalChanged}\n isLoading={isRunning}\n isOnCanvas={isOnCanvas ?? true}\n />\n );\n}\n\nfunction useQueryControllerState(model: SceneObject): boolean {\n const queryController = sceneGraph.getQueryController(model);\n if (!queryController) {\n return false;\n }\n\n return queryController.useState().isRunning;\n}\n\nfunction isIntervalString(str: string): boolean {\n try {\n const res = rangeUtil.describeInterval(str);\n return res.count > 0;\n } catch {\n return false;\n }\n}\n\nfunction findClosestInterval(userInterval: string, allowedIntervals: string[]): string | undefined {\n if (allowedIntervals.length === 0) {\n return undefined;\n }\n\n const userIntervalMs = rangeUtil.intervalToMs(userInterval);\n let selectedInterval = allowedIntervals[0];\n\n for (let i = 1; i < allowedIntervals.length; i++) {\n const intervalMs = rangeUtil.intervalToMs(allowedIntervals[i]);\n\n if (intervalMs > userIntervalMs) {\n break;\n }\n\n selectedInterval = allowedIntervals[i];\n }\n return selectedInterval;\n}\n\nfunction isImageRenderer() {\n // Check binding added by chromedp. Does not work with the polling method\n return typeof window !== 'undefined' && typeof window.__grafanaImageRendererMessageChannel === 'function';\n}\n"],"names":["_a"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -16252,8 +16252,11 @@ class SceneRefreshPicker extends SceneObjectBase {
16252
16252
  if (refresh !== ui.RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {
16253
16253
  return;
16254
16254
  }
16255
- let intervalMs;
16256
16255
  (_a = this._autoTimeRangeListener) == null ? void 0 : _a.unsubscribe();
16256
+ if (isImageRenderer()) {
16257
+ return;
16258
+ }
16259
+ let intervalMs;
16257
16260
  if (refresh === ui.RefreshPicker.autoOption.value) {
16258
16261
  const autoRefreshInterval = this.calculateAutoRefreshInterval();
16259
16262
  intervalMs = autoRefreshInterval.intervalMs;
@@ -16384,6 +16387,9 @@ function findClosestInterval(userInterval, allowedIntervals) {
16384
16387
  }
16385
16388
  return selectedInterval;
16386
16389
  }
16390
+ function isImageRenderer() {
16391
+ return typeof window !== "undefined" && typeof window.__grafanaImageRendererMessageChannel === "function";
16392
+ }
16387
16393
 
16388
16394
  const getCompareSeriesRefId = (refId) => `${refId}-compare`;
16389
16395