@grafana/scenes 8.9.4 → 8.9.5

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.9.5 (Fri Jul 03 2026)
2
+
3
+ #### 🐛 Bug Fix
4
+
5
+ - ScopesVariable: don't clobber enabled state from a stale cleanup [#1563](https://github.com/grafana/scenes/pull/1563) ([@tskarhed](https://github.com/tskarhed))
6
+
7
+ #### Authors: 1
8
+
9
+ - Tobias Skarhed ([@tskarhed](https://github.com/tskarhed))
10
+
11
+ ---
12
+
1
13
  # v8.9.4 (Thu Jul 02 2026)
2
14
 
3
15
  #### 🐛 Bug Fix
@@ -62,7 +62,7 @@ class ScopesVariable extends SceneObjectBase {
62
62
  });
63
63
  return () => {
64
64
  sub.unsubscribe();
65
- if (this.state.enable != null) {
65
+ if (this.state.enable != null && context.state.enabled === this.state.enable) {
66
66
  context.setEnabled(oldState.enabled);
67
67
  }
68
68
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ScopesVariable.js","sources":["../../../../src/variables/variants/ScopesVariable.tsx"],"sourcesContent":["import { SceneObjectBase } from '../../core/SceneObjectBase';\nimport {\n CustomVariableValue,\n SceneVariable,\n SceneVariableState,\n SceneVariableValueChangedEvent,\n ValidateAndUpdateResult,\n VariableValue,\n} from '../types';\nimport { Scope } from '@grafana/data';\nimport { SceneComponentProps } from '../../core/types';\nimport { ScopesContext, ScopesContextValue } from '@grafana/runtime';\nimport { useContext, useEffect } from 'react';\nimport { VariableFormatID, VariableHide } from '@grafana/schema';\nimport { SCOPES_VARIABLE_NAME } from '../constants';\nimport { isEqual } from 'lodash';\nimport { getQueryController } from '../../core/sceneGraph/getQueryController';\nimport { SCOPES_CHANGED_INTERACTION } from '../../performance/interactionConstants';\nimport { Observable, Subject, of } from 'rxjs';\n\nexport interface ScopesVariableState extends SceneVariableState {\n /**\n * Last captured state from ScopesContext\n */\n scopes: Scope[];\n /**\n * Set to true if you want to the variable to enable / disable scopes when activated / deactivated\n */\n enable?: boolean;\n}\n\nexport class ScopesVariable extends SceneObjectBase<ScopesVariableState> implements SceneVariable<ScopesVariableState> {\n protected _renderBeforeActivation = true;\n protected _context: ScopesContextValue | undefined;\n\n // Special options that enables variables to be hidden but still render to access react contexts\n public UNSAFE_renderAsHidden = true;\n public static Component = ScopesVariableRenderer;\n private _validateAndUpdateObs?: Subject<ValidateAndUpdateResult>;\n\n public constructor(state: Partial<ScopesVariableState>) {\n super({\n skipUrlSync: true,\n loading: true,\n scopes: [],\n ...state,\n type: 'system',\n name: SCOPES_VARIABLE_NAME,\n hide: VariableHide.hideVariable,\n });\n }\n\n public validateAndUpdate(): Observable<ValidateAndUpdateResult> {\n if (!this.state.loading) {\n this._validateAndUpdateObs = undefined;\n return of({});\n }\n\n this._validateAndUpdateObs = new Subject<ValidateAndUpdateResult>();\n return this._validateAndUpdateObs;\n }\n\n /**\n * Temporary simple implementation to stringify the scopes.\n */\n public getValue(): VariableValue {\n const scopes = this.state.scopes ?? [];\n return new ScopesVariableFormatter(scopes.map((scope) => scope.metadata.name));\n }\n\n public getScopes(): Scope[] | undefined {\n return this.state.scopes;\n }\n\n /**\n * This method is used to keep the context up to date with the scopes context received from React\n * 1) Subscribes to ScopesContext state changes and synchronizes it with the variable state\n * 2) Handles enable / disabling of scopes based on variable enable option.\n */\n public setContext(context: ScopesContextValue | undefined) {\n if (!context) {\n return;\n }\n\n this._context = context;\n\n const oldState = context.state;\n\n // Update scopes enable state if state.enable is defined\n if (this.state.enable != null) {\n context.setEnabled(this.state.enable);\n }\n\n // Subscribe to context state changes\n const sub = context.stateObservable.subscribe((state) => {\n this.updateStateFromContext(state);\n });\n\n return () => {\n sub.unsubscribe();\n\n if (this.state.enable != null) {\n context.setEnabled(oldState.enabled);\n }\n };\n }\n\n public updateStateFromContext(state: { loading: boolean; value: Scope[] }) {\n // There was logic in SceneQueryRunner that said if there are no scopes then loading state should not block query execution\n const loading = state.value.length === 0 ? false : state.loading;\n const oldScopes = this.state.scopes.map((scope) => scope.metadata.name);\n const newScopes = state.value.map((scope) => scope.metadata.name);\n const scopesHaveChanged = !isEqual(oldScopes, newScopes);\n\n // Only update scopes value state when loading is false and the scopes have changed\n if (!loading && (scopesHaveChanged || newScopes.length === 0)) {\n const queryController = getQueryController(this);\n queryController?.startProfile(SCOPES_CHANGED_INTERACTION);\n this.setState({ scopes: state.value, loading });\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n // Signals to SceneVariableSet that we have a value\n this._validateAndUpdateObs?.next({});\n } else {\n this.setState({ loading });\n }\n }\n}\n\nfunction ScopesVariableRenderer({ model }: SceneComponentProps<ScopesVariable>) {\n const context = useContext(ScopesContext);\n\n useEffect(() => {\n return model.setContext(context);\n }, [context, model]);\n\n return null;\n}\n\nexport class ScopesVariableFormatter implements CustomVariableValue {\n public constructor(private _value: string[]) {}\n\n public formatter(formatNameOrFn?: string): string {\n if (formatNameOrFn === VariableFormatID.QueryParam) {\n return this._value.map((scope) => `scopes=${encodeURIComponent(scope)}`).join('&');\n }\n\n return this._value.join(', ');\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScopesVariable.js","sources":["../../../../src/variables/variants/ScopesVariable.tsx"],"sourcesContent":["import { SceneObjectBase } from '../../core/SceneObjectBase';\nimport {\n CustomVariableValue,\n SceneVariable,\n SceneVariableState,\n SceneVariableValueChangedEvent,\n ValidateAndUpdateResult,\n VariableValue,\n} from '../types';\nimport { Scope } from '@grafana/data';\nimport { SceneComponentProps } from '../../core/types';\nimport { ScopesContext, ScopesContextValue } from '@grafana/runtime';\nimport { useContext, useEffect } from 'react';\nimport { VariableFormatID, VariableHide } from '@grafana/schema';\nimport { SCOPES_VARIABLE_NAME } from '../constants';\nimport { isEqual } from 'lodash';\nimport { getQueryController } from '../../core/sceneGraph/getQueryController';\nimport { SCOPES_CHANGED_INTERACTION } from '../../performance/interactionConstants';\nimport { Observable, Subject, of } from 'rxjs';\n\nexport interface ScopesVariableState extends SceneVariableState {\n /**\n * Last captured state from ScopesContext\n */\n scopes: Scope[];\n /**\n * Set to true if you want to the variable to enable / disable scopes when activated / deactivated\n */\n enable?: boolean;\n}\n\nexport class ScopesVariable extends SceneObjectBase<ScopesVariableState> implements SceneVariable<ScopesVariableState> {\n protected _renderBeforeActivation = true;\n protected _context: ScopesContextValue | undefined;\n\n // Special options that enables variables to be hidden but still render to access react contexts\n public UNSAFE_renderAsHidden = true;\n public static Component = ScopesVariableRenderer;\n private _validateAndUpdateObs?: Subject<ValidateAndUpdateResult>;\n\n public constructor(state: Partial<ScopesVariableState>) {\n super({\n skipUrlSync: true,\n loading: true,\n scopes: [],\n ...state,\n type: 'system',\n name: SCOPES_VARIABLE_NAME,\n hide: VariableHide.hideVariable,\n });\n }\n\n public validateAndUpdate(): Observable<ValidateAndUpdateResult> {\n if (!this.state.loading) {\n this._validateAndUpdateObs = undefined;\n return of({});\n }\n\n this._validateAndUpdateObs = new Subject<ValidateAndUpdateResult>();\n return this._validateAndUpdateObs;\n }\n\n /**\n * Temporary simple implementation to stringify the scopes.\n */\n public getValue(): VariableValue {\n const scopes = this.state.scopes ?? [];\n return new ScopesVariableFormatter(scopes.map((scope) => scope.metadata.name));\n }\n\n public getScopes(): Scope[] | undefined {\n return this.state.scopes;\n }\n\n /**\n * This method is used to keep the context up to date with the scopes context received from React\n * 1) Subscribes to ScopesContext state changes and synchronizes it with the variable state\n * 2) Handles enable / disabling of scopes based on variable enable option.\n */\n public setContext(context: ScopesContextValue | undefined) {\n if (!context) {\n return;\n }\n\n this._context = context;\n\n const oldState = context.state;\n\n // Update scopes enable state if state.enable is defined\n if (this.state.enable != null) {\n context.setEnabled(this.state.enable);\n }\n\n // Subscribe to context state changes\n const sub = context.stateObservable.subscribe((state) => {\n this.updateStateFromContext(state);\n });\n\n return () => {\n sub.unsubscribe();\n\n // Only restore the previous enabled state if this variable is still the current authority —\n // i.e. the live enabled flag still matches what we set on mount. If it has drifted, another\n // ScopesVariable's cleanup (or an external setEnabled call) has taken over ownership and we\n // must not clobber their value.\n if (this.state.enable != null && context.state.enabled === this.state.enable) {\n context.setEnabled(oldState.enabled);\n }\n };\n }\n\n public updateStateFromContext(state: { loading: boolean; value: Scope[] }) {\n // There was logic in SceneQueryRunner that said if there are no scopes then loading state should not block query execution\n const loading = state.value.length === 0 ? false : state.loading;\n const oldScopes = this.state.scopes.map((scope) => scope.metadata.name);\n const newScopes = state.value.map((scope) => scope.metadata.name);\n const scopesHaveChanged = !isEqual(oldScopes, newScopes);\n\n // Only update scopes value state when loading is false and the scopes have changed\n if (!loading && (scopesHaveChanged || newScopes.length === 0)) {\n const queryController = getQueryController(this);\n queryController?.startProfile(SCOPES_CHANGED_INTERACTION);\n this.setState({ scopes: state.value, loading });\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n // Signals to SceneVariableSet that we have a value\n this._validateAndUpdateObs?.next({});\n } else {\n this.setState({ loading });\n }\n }\n}\n\nfunction ScopesVariableRenderer({ model }: SceneComponentProps<ScopesVariable>) {\n const context = useContext(ScopesContext);\n\n useEffect(() => {\n return model.setContext(context);\n }, [context, model]);\n\n return null;\n}\n\nexport class ScopesVariableFormatter implements CustomVariableValue {\n public constructor(private _value: string[]) {}\n\n public formatter(formatNameOrFn?: string): string {\n if (formatNameOrFn === VariableFormatID.QueryParam) {\n return this._value.map((scope) => `scopes=${encodeURIComponent(scope)}`).join('&');\n }\n\n return this._value.join(', ');\n }\n}\n"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2640,7 +2640,7 @@ class ScopesVariable extends SceneObjectBase {
2640
2640
  });
2641
2641
  return () => {
2642
2642
  sub.unsubscribe();
2643
- if (this.state.enable != null) {
2643
+ if (this.state.enable != null && context.state.enabled === this.state.enable) {
2644
2644
  context.setEnabled(oldState.enabled);
2645
2645
  }
2646
2646
  };