@grafana/scenes-react 5.25.1--canary.858.11930656504.0 → 5.26.0--canary.974.11969404553.0
Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md
CHANGED
@@ -91,7 +91,7 @@
|
|
91
91
|
|
92
92
|
#### UrlSync: Support browser history steps, remove singleton ([#878](https://github.com/grafana/scenes/pull/878))
|
93
93
|
|
94
|
-
getUrlSyncManager is no longer exported as UrlSyncManager is now no longer global singleton but local to the UrlSyncContextProvider.
|
94
|
+
getUrlSyncManager is no longer exported as UrlSyncManager is now no longer global singleton but local to the UrlSyncContextProvider.
|
95
95
|
If you called getUrlSyncManager().getUrlState that util function is available via the exported object sceneUtils.
|
96
96
|
|
97
97
|
---
|
@@ -239,4 +239,4 @@ If you called getUrlSyncManager().getUrlState that util function is available vi
|
|
239
239
|
|
240
240
|
---
|
241
241
|
|
242
|
-
Work in progress
|
242
|
+
Work in progress
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DataSourceVariable.js","sources":["../../../src/variables/DataSourceVariable.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { DataSourceVariable as DataSourceVariableObject } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { VariableRefresh, VariableSort } from '@grafana/schema';\nimport { VariableProps } from './types';\n\nexport interface DataSourceVariableProps extends VariableProps {\n pluginId: string;\n regex?: string;\n refresh?: VariableRefresh;\n sort?: VariableSort;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function DataSourceVariable({\n pluginId,\n regex,\n name,\n label,\n hide,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: DataSourceVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: DataSourceVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new DataSourceVariableObject({\n pluginId,\n regex,\n name,\n label,\n value: initialValue
|
1
|
+
{"version":3,"file":"DataSourceVariable.js","sources":["../../../src/variables/DataSourceVariable.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { DataSourceVariable as DataSourceVariableObject } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { VariableRefresh, VariableSort } from '@grafana/schema';\nimport { VariableProps } from './types';\n\nexport interface DataSourceVariableProps extends VariableProps {\n pluginId: string;\n regex?: string;\n refresh?: VariableRefresh;\n sort?: VariableSort;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function DataSourceVariable({\n pluginId,\n regex,\n name,\n label,\n hide,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: DataSourceVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: DataSourceVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new DataSourceVariableObject({ \n pluginId,\n regex,\n name,\n label,\n value: initialValue, \n isMulti,\n hide, \n includeAll,\n });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n if (!variableAdded) {\n return;\n }\n\n if (\n variable.state.pluginId === pluginId &&\n variable.state.regex === regex &&\n variable.state.label === label &&\n variable.state.hide === hide &&\n variable.state.includeAll === includeAll\n ) {\n return;\n }\n\n variable.setState({\n pluginId,\n regex,\n label,\n hide, \n includeAll,\n })\n\n variable.refreshOptions();\n }, [hide, includeAll, label, pluginId, regex, variable, variableAdded])\n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n"],"names":["DataSourceVariableObject"],"mappings":";;;;AAgBO,SAAS,kBAAmB,CAAA;AAAA,EACjC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AACF,CAA6C,EAAA;AAC3C,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAkB,EAAA,CAAA;AAE5D,EAAI,IAAA,QAAA,GAAiD,KAAM,CAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAE5E,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAA,QAAA,GAAW,IAAIA,oBAAyB,CAAA;AAAA,MACtC,QAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAO,EAAA,YAAA;AAAA,MACP,OAAA;AAAA,MACA,IAAA;AAAA,MACA,UAAA;AAAA,KACA,CAAA,CAAA;AAAA,GACJ;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,QAAA,GAAW,KAAM,CAAA,WAAA,CAAY,QAAQ,CAAA,CAAA;AAC3C,IAAA,gBAAA,CAAiB,IAAI,CAAA,CAAA;AACrB,IAAO,OAAA,QAAA,CAAA;AAAA,GACN,EAAA,CAAC,QAAU,EAAA,KAAA,EAAO,IAAI,CAAC,CAAA,CAAA;AAE1B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAe,EAAA;AAClB,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,IACE,SAAS,KAAM,CAAA,QAAA,KAAc,YAC7B,QAAS,CAAA,KAAA,CAAM,UAAU,KACzB,IAAA,QAAA,CAAS,MAAM,KAAU,KAAA,KAAA,IACzB,SAAS,KAAM,CAAA,IAAA,KAAS,QACxB,QAAS,CAAA,KAAA,CAAM,eAAe,UAC9B,EAAA;AACA,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,QAAA,CAAS,QAAS,CAAA;AAAA,MAChB,QAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,UAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,QAAA,CAAS,cAAe,EAAA,CAAA;AAAA,GAC1B,EAAG,CAAC,IAAM,EAAA,UAAA,EAAY,OAAO,QAAU,EAAA,KAAA,EAAO,QAAU,EAAA,aAAa,CAAC,CAAA,CAAA;AAGtE,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,QAAA,CAAA;AACT;;;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"QueryVariable.js","sources":["../../../src/variables/QueryVariable.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { QueryVariable as QueryVariableObject, SceneDataQuery } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { DataSourceRef, VariableRefresh, VariableSort } from '@grafana/schema';\nimport { VariableProps } from './types';\nimport { isEqual } from 'lodash';\n\nexport interface QueryVariableProps extends VariableProps {\n query: string | SceneDataQuery;\n datasource: DataSourceRef | null;\n regex?: string;\n refresh?: VariableRefresh;\n sort?: VariableSort;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function QueryVariable({\n query,\n name,\n datasource,\n label,\n hide,\n regex,\n refresh,\n sort,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: QueryVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: QueryVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new QueryVariableObject({\n name,\n label,\n query,\n datasource
|
1
|
+
{"version":3,"file":"QueryVariable.js","sources":["../../../src/variables/QueryVariable.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { QueryVariable as QueryVariableObject, SceneDataQuery } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { DataSourceRef, VariableRefresh, VariableSort } from '@grafana/schema';\nimport { VariableProps } from './types';\nimport { isEqual } from 'lodash';\n\nexport interface QueryVariableProps extends VariableProps {\n query: string | SceneDataQuery;\n datasource: DataSourceRef | null;\n regex?: string;\n refresh?: VariableRefresh;\n sort?: VariableSort;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function QueryVariable({\n query,\n name,\n datasource,\n label,\n hide,\n regex,\n refresh,\n sort,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: QueryVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: QueryVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new QueryVariableObject({ \n name,\n label,\n query,\n datasource, \n refresh, \n sort, \n regex, \n value: initialValue, \n isMulti,\n hide, \n includeAll,\n });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n if (!variableAdded) {\n return;\n }\n\n if (\n isEqual(variable.state.query, query) &&\n isEqual(variable.state.datasource, datasource) &&\n variable.state.regex === regex &&\n variable.state.label === label &&\n variable.state.hide === hide &&\n variable.state.includeAll === includeAll &&\n variable.state.refresh === refresh &&\n variable.state.sort === sort\n ) {\n return;\n }\n\n variable.setState({\n label,\n query,\n datasource, \n refresh, \n sort, \n regex, \n hide, \n includeAll,\n });\n\n variable.refreshOptions();\n }, [datasource, hide, includeAll, label, query, refresh, regex, sort, variable, variableAdded]);\n \n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n"],"names":["QueryVariableObject"],"mappings":";;;;;AAkBO,SAAS,aAAc,CAAA;AAAA,EAC5B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AACF,CAAwC,EAAA;AACtC,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAkB,EAAA,CAAA;AAE5D,EAAI,IAAA,QAAA,GAA4C,KAAM,CAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAEvE,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAA,QAAA,GAAW,IAAIA,eAAoB,CAAA;AAAA,MACjC,IAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAO,EAAA,YAAA;AAAA,MACP,OAAA;AAAA,MACA,IAAA;AAAA,MACA,UAAA;AAAA,KACA,CAAA,CAAA;AAAA,GACJ;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,QAAA,GAAW,KAAM,CAAA,WAAA,CAAY,QAAQ,CAAA,CAAA;AAC3C,IAAA,gBAAA,CAAiB,IAAI,CAAA,CAAA;AACrB,IAAO,OAAA,QAAA,CAAA;AAAA,GACN,EAAA,CAAC,QAAU,EAAA,KAAA,EAAO,IAAI,CAAC,CAAA,CAAA;AAE1B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAe,EAAA;AAClB,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,IACE,OAAQ,CAAA,QAAA,CAAS,KAAM,CAAA,KAAA,EAAO,KAAK,CACnC,IAAA,OAAA,CAAQ,QAAS,CAAA,KAAA,CAAM,YAAY,UAAU,CAAA,IAC7C,QAAS,CAAA,KAAA,CAAM,UAAU,KACzB,IAAA,QAAA,CAAS,KAAM,CAAA,KAAA,KAAU,SACzB,QAAS,CAAA,KAAA,CAAM,IAAS,KAAA,IAAA,IACxB,SAAS,KAAM,CAAA,UAAA,KAAe,UAC9B,IAAA,QAAA,CAAS,MAAM,OAAY,KAAA,OAAA,IAC3B,QAAS,CAAA,KAAA,CAAM,SAAS,IACxB,EAAA;AACA,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,QAAA,CAAS,QAAS,CAAA;AAAA,MAChB,KAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,UAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,QAAA,CAAS,cAAe,EAAA,CAAA;AAAA,GACvB,EAAA,CAAC,UAAY,EAAA,IAAA,EAAM,UAAY,EAAA,KAAA,EAAO,KAAO,EAAA,OAAA,EAAS,KAAO,EAAA,IAAA,EAAM,QAAU,EAAA,aAAa,CAAC,CAAA,CAAA;AAI9F,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,QAAA,CAAA;AACT;;;;"}
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/utils.ts","../src/contexts/SceneContextObject.tsx","../src/contexts/SceneContextProvider.tsx","../src/hooks/hooks.ts","../src/caching/SceneObjectCache.ts","../src/hooks/useSceneObject.ts","../src/hooks/useQueryRunner.ts","../src/hooks/useDataTransformer.ts","../src/components/TimeRangePicker.tsx","../src/components/VariableControl.tsx","../src/components/VizPanel.tsx","../src/components/RefreshPicker.tsx","../src/components/DataLayerControl.tsx","../src/variables/CustomVariable.tsx","../src/variables/DataSourceVariable.tsx","../src/variables/QueryVariable.tsx","../src/contexts/BreadcrumbContext.tsx","../src/hooks/useVariableValues.ts","../src/hooks/useQueryVariable.ts","../src/hooks/useVariableValue.ts","../src/components/AnnotationLayer.tsx","../src/interoperability/EmbeddedSceneWithContext.tsx","../src/components/VizGridLayout.tsx"],"sourcesContent":["export function writeSceneLog(logger: string, message: string, ...rest: unknown[]) {\n let loggingEnabled = false;\n\n if (typeof window !== 'undefined') {\n loggingEnabled = localStorage.getItem('grafana.debug.scenes') === 'true';\n }\n\n if (loggingEnabled) {\n console.log(`${logger}: `, message, ...rest);\n }\n}\n","import {\n SceneObjectBase,\n SceneObject,\n SceneObjectState,\n SceneVariable,\n SceneVariableSet,\n NewSceneObjectAddedEvent,\n} from '@grafana/scenes';\nimport { writeSceneLog } from '../utils';\n\nexport interface SceneContextObjectState extends SceneObjectState {\n childContexts?: SceneContextObject[];\n children: SceneObject[];\n}\n\nexport class SceneContextObject extends SceneObjectBase<SceneContextObjectState> {\n public constructor(state?: Partial<SceneContextObjectState>) {\n super({\n ...state,\n children: state?.children ?? [],\n childContexts: state?.childContexts ?? [],\n });\n }\n\n public addToScene(obj: SceneObject) {\n this.publishEvent(new NewSceneObjectAddedEvent(obj), true);\n\n this.setState({ children: [...this.state.children, obj] });\n writeSceneLog('SceneContext', `Adding to scene: ${obj.constructor.name} key: ${obj.state.key}`);\n\n const deactivate = obj.activate();\n\n return () => {\n writeSceneLog('SceneContext', `Removing from scene: ${obj.constructor.name} key: ${obj.state.key}`);\n this.setState({ children: this.state.children.filter((x) => x !== obj) });\n\n deactivate();\n };\n }\n\n public findByKey<T>(key: string): T | undefined {\n return this.state.children.find((x) => x.state.key === key) as T;\n }\n\n public findVariable<T>(name: string): T | undefined {\n const variables = this.state.$variables as SceneVariableSet;\n if (!variables) {\n return;\n }\n\n return variables.getByName(name) as T;\n }\n\n public addVariable(variable: SceneVariable) {\n let set = this.state.$variables as SceneVariableSet;\n\n this.publishEvent(new NewSceneObjectAddedEvent(variable), true);\n\n if (set) {\n set.setState({ variables: [...set.state.variables, variable] });\n } else {\n set = new SceneVariableSet({ variables: [variable] });\n this.setState({ $variables: set });\n }\n\n writeSceneLog('SceneContext', `Adding variable: ${variable.constructor.name} key: ${variable.state.key}`);\n\n return () => {\n set.setState({ variables: set.state.variables.filter((x) => x !== variable) });\n writeSceneLog('SceneContext', `Removing variable: ${variable.constructor.name} key: ${variable.state.key}`);\n };\n }\n\n public addChildContext(ctx: SceneContextObject) {\n this.publishEvent(new NewSceneObjectAddedEvent(ctx), true);\n\n this.setState({ childContexts: [...(this.state.childContexts ?? []), ctx] });\n\n writeSceneLog('SceneContext', `Adding child context: ${ctx.constructor.name} key: ${ctx.state.key}`);\n }\n\n public removeChildContext(ctx: SceneContextObject) {\n this.setState({\n childContexts: this.state.childContexts?.filter((context) => ctx !== context),\n });\n\n writeSceneLog('SceneContext', `Remvoing child context: ${ctx.constructor.name} key: ${ctx.state.key}`);\n }\n}\n","import React, { createContext, useContext, useEffect, useState } from 'react';\nimport { SceneTimeRangeState, SceneTimeRange, behaviors, UrlSyncContextProvider } from '@grafana/scenes';\n\nimport { SceneContextObject, SceneContextObjectState } from './SceneContextObject';\n\nexport const SceneContext = createContext<SceneContextObject | null>(null);\n\nexport interface SceneContextProviderProps {\n /**\n * Only the initial time range, cannot be used to update time range\n **/\n timeRange?: Partial<SceneTimeRangeState>;\n /**\n * This makes it possbile to view running state of queries via\n * refresh picker and also cancel all queries in the scene.\n */\n withQueryController?: boolean;\n /**\n * Children\n */\n children: React.ReactNode;\n}\n\n/**\n * Wrapps the react children in a SceneContext\n */\nexport function SceneContextProvider({ children, timeRange, withQueryController }: SceneContextProviderProps) {\n const parentContext = useContext(SceneContext);\n const [childContext, setChildContext] = useState<SceneContextObject | undefined>();\n\n // Becasue timeRange is not part of useEffect dependencies\n const initialTimeRange = timeRange;\n\n useEffect(() => {\n const state: SceneContextObjectState = { children: [] };\n\n if (withQueryController) {\n state.$behaviors = [new behaviors.SceneQueryController()];\n }\n\n if (initialTimeRange) {\n state.$timeRange = new SceneTimeRange(initialTimeRange);\n }\n\n const childContext = new SceneContextObject(state);\n\n if (parentContext) {\n parentContext.addChildContext(childContext);\n }\n\n const deactivate = childContext.activate();\n setChildContext(childContext);\n\n return () => {\n deactivate();\n\n if (parentContext) {\n parentContext.removeChildContext(childContext);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [parentContext, withQueryController]);\n\n if (!childContext) {\n return null;\n }\n\n const innerProvider = <SceneContext.Provider value={childContext}>{children}</SceneContext.Provider>;\n\n if (parentContext) {\n return innerProvider;\n }\n\n // For root context we wrap the provider in a UrlSyncWrapper that handles the hook that updates state on location changes\n return (\n <UrlSyncContextProvider scene={childContext} updateUrlOnInit={true} createBrowserHistorySteps={true}>\n {innerProvider}\n </UrlSyncContextProvider>\n );\n}\n","import { useCallback, useContext, useEffect, useState } from 'react';\nimport { SceneContext } from '../contexts/SceneContextProvider';\nimport { TimeRange } from '@grafana/data';\nimport {\n SceneVariable,\n SceneVariableValueChangedEvent,\n VariableValue,\n sceneGraph,\n SceneTimeRangeLike,\n} from '@grafana/scenes';\nimport { Subscription } from 'rxjs';\n\nexport function useSceneContext() {\n const scene = useContext(SceneContext);\n if (!scene) {\n throw new Error('Cannot find a SceneContext');\n }\n\n return scene;\n}\n\nexport function useTimeRange(): [TimeRange, SceneTimeRangeLike] {\n const scene = useSceneContext();\n const sceneTimeRange = sceneGraph.getTimeRange(scene);\n const { value } = sceneTimeRange.useState();\n\n return [value, sceneTimeRange];\n}\n\n/**\n * Only returns the variables on the closest context level.\n * We could modify it to extract all variables from the full context tree.\n */\nexport function useVariables(): SceneVariable[] {\n const scene = useSceneContext();\n const variables = sceneGraph.getVariables(scene);\n return variables.useState().variables;\n}\n\nexport interface UseUpdateWhenSceneChangesOptions {\n /** Variable names */\n variables?: string[];\n timeRange?: boolean;\n}\n\nexport interface UseUpdateWhenSceneChangesReason {\n variableName?: string;\n variableValue?: VariableValue | undefined | null;\n timeRange?: TimeRange;\n}\n\n/**\n * A utility hook to re-render the calling react component when specified variables or time range changes\n */\nexport function useUpdateWhenSceneChanges({ timeRange, variables = [] }: UseUpdateWhenSceneChangesOptions) {\n const scene = useSceneContext();\n const [updateReason, setUpdateReason] = useState<UseUpdateWhenSceneChangesReason>();\n\n useEffect(() => {\n const subscriptions = new Subscription();\n\n if (variables && variables.length > 0) {\n for (const v of variables) {\n const variable = sceneGraph.lookupVariable(v, scene);\n if (variable) {\n subscriptions.add(\n variable.subscribeToEvent(SceneVariableValueChangedEvent, () => {\n setUpdateReason({ variableName: variable.state.name, variableValue: variable.getValue() });\n })\n );\n }\n }\n }\n\n if (timeRange) {\n const tr = sceneGraph.getTimeRange(scene);\n tr.subscribeToState((newState, oldState) => {\n if (newState.value !== oldState.value) {\n setUpdateReason({ timeRange: newState.value });\n }\n });\n }\n\n return () => subscriptions.unsubscribe();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [scene, timeRange, ...variables]);\n\n return updateReason;\n}\n\n/**\n * Mainly a utility hook to re-render the calling react component when specified variables or time range changes\n */\nexport function useVariableInterpolator(options: UseUpdateWhenSceneChangesOptions) {\n const scene = useSceneContext();\n\n useUpdateWhenSceneChanges(options);\n\n return useCallback(\n (str: string) => {\n return sceneGraph.interpolate(scene, str);\n },\n [scene]\n );\n}\n","import { SceneObject } from '@grafana/scenes';\nimport { isPlainObject } from 'lodash';\nimport { LRUCache } from 'lru-cache';\n\nexport type CacheKey = CacheKeyPart | CacheKeyPart[];\n\nexport type CacheKeyPart = string | number | object | boolean;\n\nexport type SceneObjectConstructor = { new (...args: never[]): SceneObject };\n\nexport class SceneObjectCache {\n #cache: LRUCache<string, SceneObject>;\n #objectRefIds = new WeakMap<any, number>();\n #objectRefIdCounter = 0;\n\n public constructor() {\n this.#cache = new LRUCache({\n max: 500,\n ttl: 1000 * 60 * 5,\n });\n }\n\n public add(keyHash: string, object: SceneObject) {\n this.#cache.set(keyHash, object);\n }\n\n public get<T>(keyHash: string): T | undefined {\n return this.#cache.get(keyHash) as T;\n }\n\n public getHashKey(key: CacheKey, type: SceneObjectConstructor): string {\n if (Array.isArray(key)) {\n return `${type.name}-${key.map((k) => this.getHashKeyElement(k)).join()}`;\n }\n\n return `${type.name}-${this.getHashKeyElement(key)}`;\n }\n\n public getByRefHashKey(obj: unknown) {\n let objectRefId = this.#objectRefIds.get(obj);\n if (objectRefId == null) {\n objectRefId = this.#objectRefIdCounter++;\n this.#objectRefIds.set(obj, objectRefId);\n }\n\n return objectRefId;\n }\n\n private getHashKeyElement<T>(key: CacheKey) {\n if (typeof key === 'string' || typeof key === 'boolean' || typeof key === 'number') {\n return key;\n }\n\n return getObjectHash(key);\n }\n}\n\nlet cache: SceneObjectCache | undefined;\n\nexport function getSceneObjectCache(): SceneObjectCache {\n if (cache) {\n return cache;\n }\n\n return (cache = new SceneObjectCache());\n}\n\n/**\n * Returns a unique hash key string for the given object reference.\n */\nexport function cacheByRef(value: unknown) {\n const cache = getSceneObjectCache();\n return cache.getByRefHashKey(value);\n}\n\nexport function getObjectHash(obj: unknown): string {\n return JSON.stringify(obj, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {} as any)\n : val\n );\n}\n","import { useEffect, useId } from 'react';\nimport { SceneObject, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\nimport { CacheKey, SceneObjectConstructor, getSceneObjectCache } from '../caching/SceneObjectCache';\n\nexport interface UseSceneObjectProps<T extends SceneObject> {\n factory: (key: string) => T;\n cacheKey?: CacheKey;\n objectConstructor: SceneObjectConstructor;\n}\n\n/**\n * Helper hook that handles adding and removing the scene object from the scene object graph.\n * Also handles the lookup of the object from the cache if a cache key is provided.\n */\nexport function useSceneObject<T extends SceneObject>(options: UseSceneObjectProps<T>) {\n const scene = useSceneContext();\n const key = useId();\n const cache = getSceneObjectCache();\n let cacheKeyHash = options.cacheKey ? cache.getHashKey(options.cacheKey, options.objectConstructor) : undefined;\n\n let obj = scene.findByKey<T>(key);\n\n if (!obj && cacheKeyHash) {\n obj = cache.get<T>(cacheKeyHash);\n\n if (obj && obj.parent !== scene) {\n // Before clearing parent make sure the object is not already in the scene\n if (sceneGraph.findObject(scene, (sceneObj) => sceneObj === obj)) {\n console.error('A scene object cache key matched an object that is already in the scene');\n obj = undefined;\n // Setting this to undefined so that we later do not add/overwrite the object that is already in the scene\n cacheKeyHash = undefined;\n } else {\n obj.clearParent();\n }\n }\n }\n\n if (!obj) {\n obj = options.factory(key);\n if (cacheKeyHash) {\n cache.add(cacheKeyHash, obj);\n }\n }\n\n useEffect(() => scene.addToScene(obj), [obj, scene]);\n\n return obj;\n}\n","import { useEffect } from 'react';\nimport { SceneDataQuery, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\nimport { isEqual } from 'lodash';\nimport { CacheKey } from '../caching/SceneObjectCache';\nimport { useSceneObject } from './useSceneObject';\n\nexport interface UseQueryOptions {\n queries: SceneDataQuery[];\n maxDataPoints?: number;\n datasource?: DataSourceRef;\n cacheKey?: CacheKey;\n liveStreaming?: boolean;\n maxDataPointsFromWidth?: boolean;\n}\n\n/**\n * Maintains the state of SceneQueryRunner in the scene\n *\n * @example // To access query results do\n * const query = useQueryRunner(...);\n * const { data } = query.useState();\n */\nexport function useQueryRunner(options: UseQueryOptions): SceneQueryRunner {\n const queryRunner = useSceneObject({\n factory: (key) =>\n new SceneQueryRunner({\n key: key,\n queries: options.queries,\n maxDataPoints: options.maxDataPoints,\n datasource: options.datasource,\n liveStreaming: options.liveStreaming,\n maxDataPointsFromWidth: options.maxDataPointsFromWidth,\n }),\n objectConstructor: SceneQueryRunner,\n cacheKey: options.cacheKey,\n });\n\n // Update queries when they change\n useEffect(() => {\n if (!isEqual(queryRunner.state.queries, options.queries)) {\n queryRunner.setState({ queries: options.queries });\n queryRunner.runQueries();\n }\n }, [queryRunner, options]);\n\n return queryRunner;\n}\n","import {\n CustomTransformerDefinition,\n DataProviderProxy,\n SceneDataProvider,\n SceneDataTransformer,\n} from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\nimport { useEffect, useId } from 'react';\nimport { isEqual } from 'lodash';\nimport { DataTransformerConfig } from '@grafana/schema';\n\nexport interface UseDataTransformerOptions {\n transformations: Array<DataTransformerConfig | CustomTransformerDefinition>;\n data: SceneDataProvider;\n}\n\nexport function useDataTransformer(options: UseDataTransformerOptions) {\n const scene = useSceneContext();\n const key = useId();\n\n let dataTransformer = scene.findByKey<SceneDataTransformer>(key);\n\n if (!dataTransformer) {\n dataTransformer = new SceneDataTransformer({\n key: key,\n $data: new DataProviderProxy({ source: options.data.getRef() }),\n transformations: options.transformations,\n });\n }\n\n useEffect(() => scene.addToScene(dataTransformer), [dataTransformer, scene]);\n\n useEffect(() => {\n if (!isEqual(dataTransformer.state.transformations, options.transformations)) {\n dataTransformer.setState({ transformations: options.transformations });\n dataTransformer.reprocessTransformations();\n }\n }, [dataTransformer, options.transformations]);\n\n return dataTransformer;\n}\n","import { TimeRangePicker as TimeRangePickerUI } from '@grafana/ui';\nimport React from 'react';\nimport { useTimeRange } from '../hooks/hooks';\n\nexport interface Props {}\n\nexport function TimeRangePicker(props: Props) {\n const [value, sceneTimeRange] = useTimeRange();\n\n return (\n <TimeRangePickerUI\n isOnCanvas={true}\n value={value}\n onChange={sceneTimeRange.onTimeRangeChange}\n timeZone={sceneTimeRange.getTimeZone()}\n onMoveBackward={() => {}}\n onMoveForward={() => {}}\n onZoom={() => {}}\n onChangeTimeZone={() => {}}\n onChangeFiscalYearStartMonth={() => {}}\n />\n );\n}\n","import React from 'react';\nimport { ControlsLayout, sceneGraph, VariableValueSelectWrapper } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\n\nexport interface Props {\n name: string;\n hideLabel?: boolean;\n layout?: ControlsLayout;\n}\n\nexport function VariableControl({ name, hideLabel, layout }: Props) {\n const scene = useSceneContext();\n const variable = sceneGraph.lookupVariable(name, scene);\n\n if (!variable) {\n return <div>Variable {name} not found</div>;\n }\n\n return (\n <VariableValueSelectWrapper key={variable.state.key} variable={variable} hideLabel={hideLabel} layout={layout} />\n );\n}\n","import React, { useEffect, useId } from 'react';\nimport {\n SceneDataProvider,\n VizPanel as VizPanelObject,\n VizPanelState,\n VizConfig,\n DataProviderProxy,\n SceneDataNode,\n} from '@grafana/scenes';\nimport { usePrevious } from 'react-use';\nimport { getPanelOptionsWithDefaults } from '@grafana/data';\nimport { writeSceneLog } from '../utils';\nimport { useSceneContext } from '../hooks/hooks';\n\nexport interface VizPanelProps {\n title: string;\n dataProvider?: SceneDataProvider;\n viz: VizConfig;\n headerActions?: React.ReactNode;\n}\n\nexport function VizPanel(props: VizPanelProps) {\n const { title, viz, dataProvider, headerActions } = props;\n const scene = useSceneContext();\n const key = useId();\n const prevProps = usePrevious(props);\n\n let panel = scene.findByKey<VizPanelObject>(key);\n\n if (!panel) {\n panel = new VizPanelObject({\n key: key,\n title: title,\n pluginId: viz.pluginId,\n pluginVersion: viz.pluginVersion,\n options: viz.options,\n fieldConfig: viz.fieldConfig,\n $data: getDataProviderForVizPanel(dataProvider),\n headerActions: headerActions,\n });\n }\n\n useEffect(() => scene.addToScene(panel), [panel, scene]);\n\n // Update options\n useEffect(() => {\n const stateUpdate: Partial<VizPanelState> = {};\n\n if (!prevProps) {\n return;\n }\n\n if (title !== prevProps.title) {\n stateUpdate.title = title;\n }\n\n if (headerActions !== prevProps.headerActions) {\n stateUpdate.headerActions = headerActions;\n }\n\n if (dataProvider !== prevProps.dataProvider) {\n stateUpdate.$data = getDataProviderForVizPanel(dataProvider);\n }\n\n if (viz !== prevProps.viz) {\n if (viz.pluginId === prevProps.viz.pluginId) {\n const plugin = panel.getPlugin();\n if (plugin) {\n const optionsWithDefaults = getPanelOptionsWithDefaults({\n plugin,\n currentOptions: viz.options,\n currentFieldConfig: viz.fieldConfig,\n isAfterPluginChange: false,\n });\n stateUpdate.options = optionsWithDefaults.options;\n stateUpdate.fieldConfig = optionsWithDefaults.fieldConfig;\n\n panel.clearFieldConfigCache();\n }\n }\n }\n\n if (Object.keys(stateUpdate).length > 0) {\n panel.setState(stateUpdate);\n writeSceneLog('VizPanel', 'Updating VizPanel state', stateUpdate);\n }\n }, [panel, title, headerActions, viz, dataProvider, prevProps]);\n\n return <panel.Component model={panel} />;\n}\n\n/**\n * Since the useQueryRunner attaches query runners to the scene context their parent is already set\n * This proxy is to work around that.\n * TODO: Figure out a better way to handle this'\n */\nfunction getDataProviderForVizPanel(data: SceneDataProvider | undefined): SceneDataProvider | undefined {\n if (data && !(data instanceof SceneDataNode)) {\n return new DataProviderProxy({ source: data.getRef() });\n }\n return data;\n}\n","import React, { useEffect, useId } from 'react';\nimport { useSceneContext } from '../hooks/hooks';\nimport { SceneRefreshPicker, SceneRefreshPickerState } from '@grafana/scenes';\nimport { usePrevious } from 'react-use';\n\nexport interface Props {\n refresh?: string;\n withText?: boolean;\n}\n\nexport function RefreshPicker(props: Props) {\n const scene = useSceneContext();\n const key = useId();\n const prevProps = usePrevious(props);\n\n let picker = scene.findByKey<SceneRefreshPicker>(key);\n\n if (!picker) {\n picker = new SceneRefreshPicker({\n key: key,\n ...props,\n });\n }\n\n useEffect(() => scene.addToScene(picker), [picker, scene]);\n\n // Update options\n useEffect(() => {\n const stateUpdate: Partial<SceneRefreshPickerState> = {};\n\n if (!prevProps) {\n return;\n }\n\n if (props.refresh !== prevProps.refresh) {\n stateUpdate.refresh = props.refresh;\n }\n\n if (props.withText !== prevProps.withText) {\n stateUpdate.withText = props.withText;\n }\n\n picker.setState(stateUpdate);\n }, [picker, props, prevProps]);\n\n return <picker.Component model={picker} />;\n}\n","import React from 'react';\nimport { SceneDataLayerProvider, SceneDataLayerSet, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\n\nexport interface Props {\n name: string;\n}\n\nexport function DataLayerControl({ name }: Props) {\n const scene = useSceneContext();\n const layerSets = sceneGraph.getDataLayers(scene);\n\n const layer = getLayer(layerSets, name);\n\n if (!layer) {\n return <div>Annotation {name} not found</div>;\n }\n\n return <layer.Component model={layer} />;\n}\n\nfunction getLayer(layers: SceneDataLayerProvider[], name: string): SceneDataLayerProvider | undefined {\n for (let i = 0; i < layers.length; i++) {\n const layer = (layers[i] as SceneDataLayerSet).state.layers.find((layer) => layer.state.name === name);\n\n if (layer) {\n return layer;\n }\n }\n\n return undefined;\n}\n","import React, { useEffect, useState } from 'react';\nimport { CustomVariable as CustomVariableObject } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { VariableProps } from './types';\n\nexport interface CustomVariableProps extends VariableProps {\n query: string;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function CustomVariable({\n query,\n name,\n label,\n hide,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: CustomVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: CustomVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new CustomVariableObject({ name, label, query, value: initialValue, isMulti, includeAll, hide});\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n variable?.setState({\n label,\n query,\n hide,\n isMulti,\n includeAll\n })\n }, [hide, includeAll, isMulti, label, query, variable]);\n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n","import React, { useEffect, useState } from 'react';\nimport { DataSourceVariable as DataSourceVariableObject } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { VariableRefresh, VariableSort } from '@grafana/schema';\nimport { VariableProps } from './types';\n\nexport interface DataSourceVariableProps extends VariableProps {\n pluginId: string;\n regex?: string;\n refresh?: VariableRefresh;\n sort?: VariableSort;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function DataSourceVariable({\n pluginId,\n regex,\n name,\n label,\n hide,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: DataSourceVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: DataSourceVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new DataSourceVariableObject({\n pluginId,\n regex,\n name,\n label,\n value: initialValue,\n isMulti,\n hide,\n includeAll,\n });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n if (!variableAdded) {\n return;\n }\n\n if (\n variable.state.pluginId === pluginId &&\n variable.state.regex === regex &&\n variable.state.label === label &&\n variable.state.hide === hide &&\n variable.state.includeAll === includeAll\n ) {\n return;\n }\n\n variable.setState({\n pluginId,\n regex,\n label,\n hide,\n includeAll,\n });\n\n variable.refreshOptions();\n }, [hide, includeAll, label, pluginId, regex, variable, variableAdded]);\n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n","import React, { useEffect, useState } from 'react';\nimport { QueryVariable as QueryVariableObject, SceneDataQuery } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { DataSourceRef, VariableRefresh, VariableSort } from '@grafana/schema';\nimport { VariableProps } from './types';\nimport { isEqual } from 'lodash';\n\nexport interface QueryVariableProps extends VariableProps {\n query: string | SceneDataQuery;\n datasource: DataSourceRef | null;\n regex?: string;\n refresh?: VariableRefresh;\n sort?: VariableSort;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function QueryVariable({\n query,\n name,\n datasource,\n label,\n hide,\n regex,\n refresh,\n sort,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: QueryVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: QueryVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new QueryVariableObject({\n name,\n label,\n query,\n datasource,\n refresh,\n sort,\n regex,\n value: initialValue,\n isMulti,\n hide,\n includeAll,\n });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n if (!variableAdded) {\n return;\n }\n\n if (\n isEqual(variable.state.query, query) &&\n isEqual(variable.state.datasource, datasource) &&\n variable.state.regex === regex &&\n variable.state.label === label &&\n variable.state.hide === hide &&\n variable.state.includeAll === includeAll &&\n variable.state.refresh === refresh &&\n variable.state.sort === sort\n ) {\n return;\n }\n\n variable.setState({\n label,\n query,\n datasource,\n refresh,\n sort,\n regex,\n hide,\n includeAll,\n });\n\n variable.refreshOptions();\n }, [datasource, hide, includeAll, label, query, refresh, regex, sort, variable, variableAdded]);\n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n","import { NavModelItem, UrlQueryMap, urlUtil } from '@grafana/data';\nimport { locationSearchToObject, locationService } from '@grafana/runtime';\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useTimeRange, useVariables } from '../hooks/hooks';\n\n/**\n * Code and concepts copied from https://github.com/grafana/hackathon-2023-12-grafana-react/blob/main/src/grafana-react\n *\n * These contexts & components needs some more thought and naming considerations, just a quick proof of concept for now.\n */\n\ntype BreadcrumbItem = Pick<NavModelItem, 'text' | 'url'>;\n\nexport interface BreadcrumbContextValue {\n breadcrumbs: BreadcrumbItem[];\n addBreadcrumb(breadcrumb: BreadcrumbItem): void;\n removeBreadcrumb(breadcrumb: BreadcrumbItem): void;\n}\n\nexport const BreadcrumbContext = createContext<BreadcrumbContextValue>({\n breadcrumbs: [],\n addBreadcrumb: () => {},\n removeBreadcrumb: () => {},\n});\n\nexport function BreadcrumbProvider({ children }: { children: React.ReactNode }) {\n const [breadcrumbs, setBreadcrumbs] = useState<BreadcrumbItem[]>([]);\n\n return (\n <BreadcrumbContext.Provider\n value={{\n breadcrumbs,\n addBreadcrumb: useCallback((breadcrumb: BreadcrumbItem) => setBreadcrumbs((prev) => [...prev, breadcrumb]), []),\n removeBreadcrumb: useCallback(\n (breadcrumb: BreadcrumbItem) => setBreadcrumbs((prev) => prev.filter((b) => b.url !== breadcrumb.url)),\n []\n ),\n }}\n >\n {children}\n </BreadcrumbContext.Provider>\n );\n}\n\nexport interface BreadcrumbProps {\n text: string;\n path: string;\n extraKeys?: string[];\n}\n\nexport function Breadcrumb({ text, path, extraKeys }: BreadcrumbProps): React.ReactNode {\n const { addBreadcrumb, removeBreadcrumb } = useContext(BreadcrumbContext);\n\n const buildUrl = useUrlBuilder();\n\n useEffect(() => {\n const breadcrumb = {\n text,\n url: buildUrl(path, extraKeys),\n };\n\n addBreadcrumb(breadcrumb);\n\n return () => {\n removeBreadcrumb(breadcrumb);\n };\n }, [text, path, extraKeys, addBreadcrumb, buildUrl, removeBreadcrumb]);\n\n return null;\n}\n\nfunction useUrlBuilder() {\n const queryParams = useQueryParams()[0];\n const variables = useVariables();\n const [_, timeRange] = useTimeRange();\n\n return useCallback(\n (urlBase: string, extraKeys: string[] | undefined) => {\n const params: UrlQueryMap = {};\n\n for (const v of variables) {\n if (v.urlSync && !v.state.skipUrlSync) {\n const state = v.urlSync.getUrlState();\n Object.assign(params, state);\n }\n }\n\n if (timeRange.urlSync) {\n const state = timeRange.urlSync.getUrlState();\n Object.assign(params, state);\n }\n\n if (extraKeys) {\n for (const extra of extraKeys) {\n if (queryParams[extra]) {\n params[extra] = queryParams[extra];\n }\n }\n }\n\n return urlUtil.renderUrl(urlBase, params);\n },\n [variables, queryParams, timeRange]\n );\n}\n\nfunction useQueryParams(): [UrlQueryMap, (values: UrlQueryMap, replace?: boolean) => void] {\n const { search } = useLocation();\n const queryParams = useMemo(() => locationSearchToObject(search || ''), [search]);\n const update = useCallback((values: UrlQueryMap, replace?: boolean) => locationService.partial(values, replace), []);\n return [queryParams, update];\n}\n","import { SceneVariables, VariableValueSingle, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\n\nexport function useVariableValues<T = VariableValueSingle>(name: string): [T[] | undefined, boolean] {\n const scene = useSceneContext();\n const variable = sceneGraph.lookupVariable(name, scene);\n\n if (!variable) {\n return [undefined, false];\n }\n\n variable.useState();\n\n const set = variable.parent as SceneVariables;\n const isLoading = set.isVariableLoadingOrWaitingToUpdate(variable);\n let value = variable.getValue();\n\n if (value == null) {\n return [undefined, isLoading];\n }\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n return [value as T[], isLoading];\n}\n","import { QueryVariable, SceneDataQuery, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\nimport { useEffect } from 'react';\nimport { isEqual } from 'lodash';\n\ninterface QueryVariableOptions {\n name: string;\n datasource: string;\n query: string | SceneDataQuery;\n regex?: string;\n}\n\n/**\n * A custom hook that creates or updates a `QueryVariable` in the scene context.\n * \n * @param {QueryVariableOptions} options - Options for configuring the `QueryVariable`.\n * @returns {QueryVariable | null} The `QueryVariable` instance or `null`.\n * \n * @example\n * // Usage example\n * const variable = useQueryVariable({\n * name: \"myQueryVariable\",\n * datasource: \"gdev-testdata\",\n * query: \"*\",\n * regex: \".*someFilter.*\"\n * });\n * \n * // Returns a QueryVariable instance or null if not a valid QueryVariable\n * if (variable) {\n * console.log(\"Variable added to the scene:\", variable);\n * }\n */\nexport function useQueryVariable(options: QueryVariableOptions): QueryVariable | null {\n const scene = useSceneContext();\n let variable = sceneGraph.lookupVariable(options.name, scene);\n\n if (!variable) {\n variable = new QueryVariable({ name: options.name, datasource: { uid: options.datasource }, query: options.query, regex: options.regex });\n }\n\n if (!(variable instanceof QueryVariable)) {\n variable = null;\n }\n\n useEffect(() => {\n if (variable) {\n scene.addVariable(variable)\n }\n }, [variable, scene]);\n\n useEffect(() => {\n if (\n variable?.state.datasource?.uid !== options.datasource ||\n !isEqual(variable?.state.query, options.query) ||\n variable?.state.regex !== options.regex\n ) {\n variable?.setState({ datasource: { uid: options.datasource }, query: options.query, regex: options.regex });\n variable?.refreshOptions();\n }\n }, [options, variable]);\n\n return variable;\n}\n","import { MultiValueVariable, SceneVariables, VariableValueSingle, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\n\nexport function useVariableValue<T = VariableValueSingle>(name: string): [T | undefined, boolean] {\n const scene = useSceneContext();\n const variable = sceneGraph.lookupVariable(name, scene);\n\n if (!variable || (variable instanceof MultiValueVariable && variable.state.isMulti === true)) {\n return [undefined, false];\n }\n\n variable.useState();\n\n const set = variable.parent as SceneVariables;\n const isLoading = set.isVariableLoadingOrWaitingToUpdate(variable);\n let value = variable.getValue();\n\n if (value == null) {\n return [undefined, isLoading];\n }\n\n return [value as T, isLoading];\n}\n","import React, { useEffect, useState } from 'react';\nimport { useSceneContext } from '../hooks/hooks';\nimport { AnnotationQuery } from '@grafana/data';\nimport { SceneDataLayerSet, dataLayers } from '@grafana/scenes';\nimport { SceneContextObject } from '../contexts/SceneContextObject';\nimport { writeSceneLog } from '../utils';\n\nexport interface AnnotationLayerSetProps {\n name: string;\n query: AnnotationQuery;\n children: React.ReactNode;\n}\n\nexport function AnnotationLayer({ name, query, children }: AnnotationLayerSetProps): React.ReactNode {\n const scene = useSceneContext();\n const [annotationAdded, setAnnotationAdded] = useState<boolean>();\n\n let annotation: dataLayers.AnnotationsDataLayer | undefined = findAnnotationLayer(scene, name);\n\n if (!annotation) {\n annotation = new dataLayers.AnnotationsDataLayer({ name, query });\n }\n\n useEffect(() => {\n const removeFn = addAnnotationLayer(scene, annotation);\n setAnnotationAdded(true);\n return removeFn;\n }, [scene, name, annotation]);\n\n useEffect(() => {\n // Handle prop changes\n }, [annotationAdded]);\n\n if (!annotationAdded) {\n return null;\n }\n\n return children;\n}\n\nfunction findAnnotationLayer<T>(scene: SceneContextObject, name: string): T | undefined {\n const annotations = scene.state.$data as SceneDataLayerSet;\n\n if (!annotations) {\n return;\n }\n\n return annotations.state.layers.find((anno) => anno.state.name === name) as T;\n}\n\nfunction addAnnotationLayer(scene: SceneContextObject, layer: dataLayers.AnnotationsDataLayer) {\n let set = scene.state.$data as SceneDataLayerSet;\n\n if (set) {\n set.setState({ layers: [...set.state.layers, layer] });\n } else {\n set = new SceneDataLayerSet({ layers: [layer] });\n scene.setState({ $data: set });\n }\n\n writeSceneLog('SceneContext', `Adding annotation data layer: ${layer.state.name} key: ${layer.state.key}`);\n\n return () => {\n set.setState({ layers: set.state.layers.filter((x) => x !== layer) });\n writeSceneLog('SceneContext', `Removing annotation data layer: ${layer.state.name} key: ${layer.state.key}`);\n };\n}\n","import React from 'react';\nimport { EmbeddedScene, EmbeddedSceneState, SceneComponentProps } from '@grafana/scenes';\nimport { SceneContext } from '../contexts/SceneContextProvider';\nimport { SceneContextObject } from '../contexts/SceneContextObject';\n\nexport class EmbeddedSceneWithContext extends EmbeddedScene {\n public constructor(state: EmbeddedSceneState) {\n super({ ...state, context: new SceneContextObject() });\n }\n\n public static Component = ({ model }: SceneComponentProps<EmbeddedSceneWithContext>) => {\n return (\n <SceneContext.Provider value={model.state.context as SceneContextObject}>\n <EmbeddedScene.Component model={model} />\n </SceneContext.Provider>\n );\n };\n}\n","import { useTheme2 } from '@grafana/ui';\nimport React, { CSSProperties } from 'react';\n\nexport interface Props {\n minWidth?: number;\n minHeight?: number;\n children: React.ReactNode;\n}\n\n/**\n * Simple css grid layout for visualizations\n */\nexport function VizGridLayout({ children, minWidth = 400, minHeight = 320 }: Props) {\n const theme = useTheme2();\n const style: CSSProperties = {\n display: 'grid',\n flexGrow: 1,\n gridTemplateColumns: `repeat(auto-fit, minmax(${minWidth}px, 1fr))`,\n gridAutoRows: `minmax(${minHeight}px, auto)`,\n columnGap: theme.spacing(1),\n rowGap: theme.spacing(1),\n };\n\n return <div style={style}>{children}</div>;\n}\n"],"names":["SceneObjectBase","__spreadProps","NewSceneObjectAddedEvent","SceneVariableSet","createContext","useContext","useState","useEffect","behaviors","SceneTimeRange","childContext","React","UrlSyncContextProvider","sceneGraph","Subscription","SceneVariableValueChangedEvent","useCallback","LRUCache","isPlainObject","useId","SceneQueryRunner","isEqual","SceneDataTransformer","DataProviderProxy","TimeRangePickerUI","VariableValueSelectWrapper","usePrevious","VizPanelObject","getPanelOptionsWithDefaults","SceneDataNode","SceneRefreshPicker","__spreadValues","layer","CustomVariableObject","DataSourceVariableObject","QueryVariableObject","urlUtil","useLocation","useMemo","locationSearchToObject","locationService","QueryVariable","MultiValueVariable","dataLayers","SceneDataLayerSet","EmbeddedScene","useTheme2"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/utils.ts","../src/contexts/SceneContextObject.tsx","../src/contexts/SceneContextProvider.tsx","../src/hooks/hooks.ts","../src/caching/SceneObjectCache.ts","../src/hooks/useSceneObject.ts","../src/hooks/useQueryRunner.ts","../src/hooks/useDataTransformer.ts","../src/components/TimeRangePicker.tsx","../src/components/VariableControl.tsx","../src/components/VizPanel.tsx","../src/components/RefreshPicker.tsx","../src/components/DataLayerControl.tsx","../src/variables/CustomVariable.tsx","../src/variables/DataSourceVariable.tsx","../src/variables/QueryVariable.tsx","../src/contexts/BreadcrumbContext.tsx","../src/hooks/useVariableValues.ts","../src/hooks/useQueryVariable.ts","../src/hooks/useVariableValue.ts","../src/components/AnnotationLayer.tsx","../src/interoperability/EmbeddedSceneWithContext.tsx","../src/components/VizGridLayout.tsx"],"sourcesContent":["export function writeSceneLog(logger: string, message: string, ...rest: unknown[]) {\n let loggingEnabled = false;\n\n if (typeof window !== 'undefined') {\n loggingEnabled = localStorage.getItem('grafana.debug.scenes') === 'true';\n }\n\n if (loggingEnabled) {\n console.log(`${logger}: `, message, ...rest);\n }\n}\n","import {\n SceneObjectBase,\n SceneObject,\n SceneObjectState,\n SceneVariable,\n SceneVariableSet,\n NewSceneObjectAddedEvent,\n} from '@grafana/scenes';\nimport { writeSceneLog } from '../utils';\n\nexport interface SceneContextObjectState extends SceneObjectState {\n childContexts?: SceneContextObject[];\n children: SceneObject[];\n}\n\nexport class SceneContextObject extends SceneObjectBase<SceneContextObjectState> {\n public constructor(state?: Partial<SceneContextObjectState>) {\n super({\n ...state,\n children: state?.children ?? [],\n childContexts: state?.childContexts ?? [],\n });\n }\n\n public addToScene(obj: SceneObject) {\n this.publishEvent(new NewSceneObjectAddedEvent(obj), true);\n\n this.setState({ children: [...this.state.children, obj] });\n writeSceneLog('SceneContext', `Adding to scene: ${obj.constructor.name} key: ${obj.state.key}`);\n\n const deactivate = obj.activate();\n\n return () => {\n writeSceneLog('SceneContext', `Removing from scene: ${obj.constructor.name} key: ${obj.state.key}`);\n this.setState({ children: this.state.children.filter((x) => x !== obj) });\n\n deactivate();\n };\n }\n\n public findByKey<T>(key: string): T | undefined {\n return this.state.children.find((x) => x.state.key === key) as T;\n }\n\n public findVariable<T>(name: string): T | undefined {\n const variables = this.state.$variables as SceneVariableSet;\n if (!variables) {\n return;\n }\n\n return variables.getByName(name) as T;\n }\n\n public addVariable(variable: SceneVariable) {\n let set = this.state.$variables as SceneVariableSet;\n\n this.publishEvent(new NewSceneObjectAddedEvent(variable), true);\n\n if (set) {\n set.setState({ variables: [...set.state.variables, variable] });\n } else {\n set = new SceneVariableSet({ variables: [variable] });\n this.setState({ $variables: set });\n }\n\n writeSceneLog('SceneContext', `Adding variable: ${variable.constructor.name} key: ${variable.state.key}`);\n\n return () => {\n set.setState({ variables: set.state.variables.filter((x) => x !== variable) });\n writeSceneLog('SceneContext', `Removing variable: ${variable.constructor.name} key: ${variable.state.key}`);\n };\n }\n\n public addChildContext(ctx: SceneContextObject) {\n this.publishEvent(new NewSceneObjectAddedEvent(ctx), true);\n\n this.setState({ childContexts: [...(this.state.childContexts ?? []), ctx] });\n\n writeSceneLog('SceneContext', `Adding child context: ${ctx.constructor.name} key: ${ctx.state.key}`);\n }\n\n public removeChildContext(ctx: SceneContextObject) {\n this.setState({\n childContexts: this.state.childContexts?.filter((context) => ctx !== context),\n });\n\n writeSceneLog('SceneContext', `Remvoing child context: ${ctx.constructor.name} key: ${ctx.state.key}`);\n }\n}\n","import React, { createContext, useContext, useEffect, useState } from 'react';\nimport { SceneTimeRangeState, SceneTimeRange, behaviors, UrlSyncContextProvider } from '@grafana/scenes';\n\nimport { SceneContextObject, SceneContextObjectState } from './SceneContextObject';\n\nexport const SceneContext = createContext<SceneContextObject | null>(null);\n\nexport interface SceneContextProviderProps {\n /**\n * Only the initial time range, cannot be used to update time range\n **/\n timeRange?: Partial<SceneTimeRangeState>;\n /**\n * This makes it possbile to view running state of queries via\n * refresh picker and also cancel all queries in the scene.\n */\n withQueryController?: boolean;\n /**\n * Children\n */\n children: React.ReactNode;\n}\n\n/**\n * Wrapps the react children in a SceneContext\n */\nexport function SceneContextProvider({ children, timeRange, withQueryController }: SceneContextProviderProps) {\n const parentContext = useContext(SceneContext);\n const [childContext, setChildContext] = useState<SceneContextObject | undefined>();\n\n // Becasue timeRange is not part of useEffect dependencies\n const initialTimeRange = timeRange;\n\n useEffect(() => {\n const state: SceneContextObjectState = { children: [] };\n\n if (withQueryController) {\n state.$behaviors = [new behaviors.SceneQueryController()];\n }\n\n if (initialTimeRange) {\n state.$timeRange = new SceneTimeRange(initialTimeRange);\n }\n\n const childContext = new SceneContextObject(state);\n\n if (parentContext) {\n parentContext.addChildContext(childContext);\n }\n\n const deactivate = childContext.activate();\n setChildContext(childContext);\n\n return () => {\n deactivate();\n\n if (parentContext) {\n parentContext.removeChildContext(childContext);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [parentContext, withQueryController]);\n\n if (!childContext) {\n return null;\n }\n\n const innerProvider = <SceneContext.Provider value={childContext}>{children}</SceneContext.Provider>;\n\n if (parentContext) {\n return innerProvider;\n }\n\n // For root context we wrap the provider in a UrlSyncWrapper that handles the hook that updates state on location changes\n return (\n <UrlSyncContextProvider scene={childContext} updateUrlOnInit={true} createBrowserHistorySteps={true}>\n {innerProvider}\n </UrlSyncContextProvider>\n );\n}\n","import { useCallback, useContext, useEffect, useState } from 'react';\nimport { SceneContext } from '../contexts/SceneContextProvider';\nimport { TimeRange } from '@grafana/data';\nimport {\n SceneVariable,\n SceneVariableValueChangedEvent,\n VariableValue,\n sceneGraph,\n SceneTimeRangeLike,\n} from '@grafana/scenes';\nimport { Subscription } from 'rxjs';\n\nexport function useSceneContext() {\n const scene = useContext(SceneContext);\n if (!scene) {\n throw new Error('Cannot find a SceneContext');\n }\n\n return scene;\n}\n\nexport function useTimeRange(): [TimeRange, SceneTimeRangeLike] {\n const scene = useSceneContext();\n const sceneTimeRange = sceneGraph.getTimeRange(scene);\n const { value } = sceneTimeRange.useState();\n\n return [value, sceneTimeRange];\n}\n\n/**\n * Only returns the variables on the closest context level.\n * We could modify it to extract all variables from the full context tree.\n */\nexport function useVariables(): SceneVariable[] {\n const scene = useSceneContext();\n const variables = sceneGraph.getVariables(scene);\n return variables.useState().variables;\n}\n\nexport interface UseUpdateWhenSceneChangesOptions {\n /** Variable names */\n variables?: string[];\n timeRange?: boolean;\n}\n\nexport interface UseUpdateWhenSceneChangesReason {\n variableName?: string;\n variableValue?: VariableValue | undefined | null;\n timeRange?: TimeRange;\n}\n\n/**\n * A utility hook to re-render the calling react component when specified variables or time range changes\n */\nexport function useUpdateWhenSceneChanges({ timeRange, variables = [] }: UseUpdateWhenSceneChangesOptions) {\n const scene = useSceneContext();\n const [updateReason, setUpdateReason] = useState<UseUpdateWhenSceneChangesReason>();\n\n useEffect(() => {\n const subscriptions = new Subscription();\n\n if (variables && variables.length > 0) {\n for (const v of variables) {\n const variable = sceneGraph.lookupVariable(v, scene);\n if (variable) {\n subscriptions.add(\n variable.subscribeToEvent(SceneVariableValueChangedEvent, () => {\n setUpdateReason({ variableName: variable.state.name, variableValue: variable.getValue() });\n })\n );\n }\n }\n }\n\n if (timeRange) {\n const tr = sceneGraph.getTimeRange(scene);\n tr.subscribeToState((newState, oldState) => {\n if (newState.value !== oldState.value) {\n setUpdateReason({ timeRange: newState.value });\n }\n });\n }\n\n return () => subscriptions.unsubscribe();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [scene, timeRange, ...variables]);\n\n return updateReason;\n}\n\n/**\n * Mainly a utility hook to re-render the calling react component when specified variables or time range changes\n */\nexport function useVariableInterpolator(options: UseUpdateWhenSceneChangesOptions) {\n const scene = useSceneContext();\n\n useUpdateWhenSceneChanges(options);\n\n return useCallback(\n (str: string) => {\n return sceneGraph.interpolate(scene, str);\n },\n [scene]\n );\n}\n","import { SceneObject } from '@grafana/scenes';\nimport { isPlainObject } from 'lodash';\nimport { LRUCache } from 'lru-cache';\n\nexport type CacheKey = CacheKeyPart | CacheKeyPart[];\n\nexport type CacheKeyPart = string | number | object | boolean;\n\nexport type SceneObjectConstructor = { new (...args: never[]): SceneObject };\n\nexport class SceneObjectCache {\n #cache: LRUCache<string, SceneObject>;\n #objectRefIds = new WeakMap<any, number>();\n #objectRefIdCounter = 0;\n\n public constructor() {\n this.#cache = new LRUCache({\n max: 500,\n ttl: 1000 * 60 * 5,\n });\n }\n\n public add(keyHash: string, object: SceneObject) {\n this.#cache.set(keyHash, object);\n }\n\n public get<T>(keyHash: string): T | undefined {\n return this.#cache.get(keyHash) as T;\n }\n\n public getHashKey(key: CacheKey, type: SceneObjectConstructor): string {\n if (Array.isArray(key)) {\n return `${type.name}-${key.map((k) => this.getHashKeyElement(k)).join()}`;\n }\n\n return `${type.name}-${this.getHashKeyElement(key)}`;\n }\n\n public getByRefHashKey(obj: unknown) {\n let objectRefId = this.#objectRefIds.get(obj);\n if (objectRefId == null) {\n objectRefId = this.#objectRefIdCounter++;\n this.#objectRefIds.set(obj, objectRefId);\n }\n\n return objectRefId;\n }\n\n private getHashKeyElement<T>(key: CacheKey) {\n if (typeof key === 'string' || typeof key === 'boolean' || typeof key === 'number') {\n return key;\n }\n\n return getObjectHash(key);\n }\n}\n\nlet cache: SceneObjectCache | undefined;\n\nexport function getSceneObjectCache(): SceneObjectCache {\n if (cache) {\n return cache;\n }\n\n return (cache = new SceneObjectCache());\n}\n\n/**\n * Returns a unique hash key string for the given object reference.\n */\nexport function cacheByRef(value: unknown) {\n const cache = getSceneObjectCache();\n return cache.getByRefHashKey(value);\n}\n\nexport function getObjectHash(obj: unknown): string {\n return JSON.stringify(obj, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {} as any)\n : val\n );\n}\n","import { useEffect, useId } from 'react';\nimport { SceneObject, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\nimport { CacheKey, SceneObjectConstructor, getSceneObjectCache } from '../caching/SceneObjectCache';\n\nexport interface UseSceneObjectProps<T extends SceneObject> {\n factory: (key: string) => T;\n cacheKey?: CacheKey;\n objectConstructor: SceneObjectConstructor;\n}\n\n/**\n * Helper hook that handles adding and removing the scene object from the scene object graph.\n * Also handles the lookup of the object from the cache if a cache key is provided.\n */\nexport function useSceneObject<T extends SceneObject>(options: UseSceneObjectProps<T>) {\n const scene = useSceneContext();\n const key = useId();\n const cache = getSceneObjectCache();\n let cacheKeyHash = options.cacheKey ? cache.getHashKey(options.cacheKey, options.objectConstructor) : undefined;\n\n let obj = scene.findByKey<T>(key);\n\n if (!obj && cacheKeyHash) {\n obj = cache.get<T>(cacheKeyHash);\n\n if (obj && obj.parent !== scene) {\n // Before clearing parent make sure the object is not already in the scene\n if (sceneGraph.findObject(scene, (sceneObj) => sceneObj === obj)) {\n console.error('A scene object cache key matched an object that is already in the scene');\n obj = undefined;\n // Setting this to undefined so that we later do not add/overwrite the object that is already in the scene\n cacheKeyHash = undefined;\n } else {\n obj.clearParent();\n }\n }\n }\n\n if (!obj) {\n obj = options.factory(key);\n if (cacheKeyHash) {\n cache.add(cacheKeyHash, obj);\n }\n }\n\n useEffect(() => scene.addToScene(obj), [obj, scene]);\n\n return obj;\n}\n","import { useEffect } from 'react';\nimport { SceneDataQuery, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\nimport { isEqual } from 'lodash';\nimport { CacheKey } from '../caching/SceneObjectCache';\nimport { useSceneObject } from './useSceneObject';\n\nexport interface UseQueryOptions {\n queries: SceneDataQuery[];\n maxDataPoints?: number;\n datasource?: DataSourceRef;\n cacheKey?: CacheKey;\n liveStreaming?: boolean;\n maxDataPointsFromWidth?: boolean;\n}\n\n/**\n * Maintains the state of SceneQueryRunner in the scene\n *\n * @example // To access query results do\n * const query = useQueryRunner(...);\n * const { data } = query.useState();\n */\nexport function useQueryRunner(options: UseQueryOptions): SceneQueryRunner {\n const queryRunner = useSceneObject({\n factory: (key) =>\n new SceneQueryRunner({\n key: key,\n queries: options.queries,\n maxDataPoints: options.maxDataPoints,\n datasource: options.datasource,\n liveStreaming: options.liveStreaming,\n maxDataPointsFromWidth: options.maxDataPointsFromWidth,\n }),\n objectConstructor: SceneQueryRunner,\n cacheKey: options.cacheKey,\n });\n\n // Update queries when they change\n useEffect(() => {\n if (!isEqual(queryRunner.state.queries, options.queries)) {\n queryRunner.setState({ queries: options.queries });\n queryRunner.runQueries();\n }\n }, [queryRunner, options]);\n\n return queryRunner;\n}\n","import {\n CustomTransformerDefinition,\n DataProviderProxy,\n SceneDataProvider,\n SceneDataTransformer,\n} from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\nimport { useEffect, useId } from 'react';\nimport { isEqual } from 'lodash';\nimport { DataTransformerConfig } from '@grafana/schema';\n\nexport interface UseDataTransformerOptions {\n transformations: Array<DataTransformerConfig | CustomTransformerDefinition>;\n data: SceneDataProvider;\n}\n\nexport function useDataTransformer(options: UseDataTransformerOptions) {\n const scene = useSceneContext();\n const key = useId();\n\n let dataTransformer = scene.findByKey<SceneDataTransformer>(key);\n\n if (!dataTransformer) {\n dataTransformer = new SceneDataTransformer({\n key: key,\n $data: new DataProviderProxy({ source: options.data.getRef() }),\n transformations: options.transformations,\n });\n }\n\n useEffect(() => scene.addToScene(dataTransformer), [dataTransformer, scene]);\n\n useEffect(() => {\n if (!isEqual(dataTransformer.state.transformations, options.transformations)) {\n dataTransformer.setState({ transformations: options.transformations });\n dataTransformer.reprocessTransformations();\n }\n }, [dataTransformer, options.transformations]);\n\n return dataTransformer;\n}\n","import { TimeRangePicker as TimeRangePickerUI } from '@grafana/ui';\nimport React from 'react';\nimport { useTimeRange } from '../hooks/hooks';\n\nexport interface Props {}\n\nexport function TimeRangePicker(props: Props) {\n const [value, sceneTimeRange] = useTimeRange();\n\n return (\n <TimeRangePickerUI\n isOnCanvas={true}\n value={value}\n onChange={sceneTimeRange.onTimeRangeChange}\n timeZone={sceneTimeRange.getTimeZone()}\n onMoveBackward={() => {}}\n onMoveForward={() => {}}\n onZoom={() => {}}\n onChangeTimeZone={() => {}}\n onChangeFiscalYearStartMonth={() => {}}\n />\n );\n}\n","import React from 'react';\nimport { ControlsLayout, sceneGraph, VariableValueSelectWrapper } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\n\nexport interface Props {\n name: string;\n hideLabel?: boolean;\n layout?: ControlsLayout;\n}\n\nexport function VariableControl({ name, hideLabel, layout }: Props) {\n const scene = useSceneContext();\n const variable = sceneGraph.lookupVariable(name, scene);\n\n if (!variable) {\n return <div>Variable {name} not found</div>;\n }\n\n return (\n <VariableValueSelectWrapper key={variable.state.key} variable={variable} hideLabel={hideLabel} layout={layout} />\n );\n}\n","import React, { useEffect, useId } from 'react';\nimport {\n SceneDataProvider,\n VizPanel as VizPanelObject,\n VizPanelState,\n VizConfig,\n DataProviderProxy,\n SceneDataNode,\n} from '@grafana/scenes';\nimport { usePrevious } from 'react-use';\nimport { getPanelOptionsWithDefaults } from '@grafana/data';\nimport { writeSceneLog } from '../utils';\nimport { useSceneContext } from '../hooks/hooks';\n\nexport interface VizPanelProps {\n title: string;\n dataProvider?: SceneDataProvider;\n viz: VizConfig;\n headerActions?: React.ReactNode;\n}\n\nexport function VizPanel(props: VizPanelProps) {\n const { title, viz, dataProvider, headerActions } = props;\n const scene = useSceneContext();\n const key = useId();\n const prevProps = usePrevious(props);\n\n let panel = scene.findByKey<VizPanelObject>(key);\n\n if (!panel) {\n panel = new VizPanelObject({\n key: key,\n title: title,\n pluginId: viz.pluginId,\n pluginVersion: viz.pluginVersion,\n options: viz.options,\n fieldConfig: viz.fieldConfig,\n $data: getDataProviderForVizPanel(dataProvider),\n headerActions: headerActions,\n });\n }\n\n useEffect(() => scene.addToScene(panel), [panel, scene]);\n\n // Update options\n useEffect(() => {\n const stateUpdate: Partial<VizPanelState> = {};\n\n if (!prevProps) {\n return;\n }\n\n if (title !== prevProps.title) {\n stateUpdate.title = title;\n }\n\n if (headerActions !== prevProps.headerActions) {\n stateUpdate.headerActions = headerActions;\n }\n\n if (dataProvider !== prevProps.dataProvider) {\n stateUpdate.$data = getDataProviderForVizPanel(dataProvider);\n }\n\n if (viz !== prevProps.viz) {\n if (viz.pluginId === prevProps.viz.pluginId) {\n const plugin = panel.getPlugin();\n if (plugin) {\n const optionsWithDefaults = getPanelOptionsWithDefaults({\n plugin,\n currentOptions: viz.options,\n currentFieldConfig: viz.fieldConfig,\n isAfterPluginChange: false,\n });\n stateUpdate.options = optionsWithDefaults.options;\n stateUpdate.fieldConfig = optionsWithDefaults.fieldConfig;\n\n panel.clearFieldConfigCache();\n }\n }\n }\n\n if (Object.keys(stateUpdate).length > 0) {\n panel.setState(stateUpdate);\n writeSceneLog('VizPanel', 'Updating VizPanel state', stateUpdate);\n }\n }, [panel, title, headerActions, viz, dataProvider, prevProps]);\n\n return <panel.Component model={panel} />;\n}\n\n/**\n * Since the useQueryRunner attaches query runners to the scene context their parent is already set\n * This proxy is to work around that.\n * TODO: Figure out a better way to handle this'\n */\nfunction getDataProviderForVizPanel(data: SceneDataProvider | undefined): SceneDataProvider | undefined {\n if (data && !(data instanceof SceneDataNode)) {\n return new DataProviderProxy({ source: data.getRef() });\n }\n return data;\n}\n","import React, { useEffect, useId } from 'react';\nimport { useSceneContext } from '../hooks/hooks';\nimport { SceneRefreshPicker, SceneRefreshPickerState } from '@grafana/scenes';\nimport { usePrevious } from 'react-use';\n\nexport interface Props {\n refresh?: string;\n withText?: boolean;\n}\n\nexport function RefreshPicker(props: Props) {\n const scene = useSceneContext();\n const key = useId();\n const prevProps = usePrevious(props);\n\n let picker = scene.findByKey<SceneRefreshPicker>(key);\n\n if (!picker) {\n picker = new SceneRefreshPicker({\n key: key,\n ...props,\n });\n }\n\n useEffect(() => scene.addToScene(picker), [picker, scene]);\n\n // Update options\n useEffect(() => {\n const stateUpdate: Partial<SceneRefreshPickerState> = {};\n\n if (!prevProps) {\n return;\n }\n\n if (props.refresh !== prevProps.refresh) {\n stateUpdate.refresh = props.refresh;\n }\n\n if (props.withText !== prevProps.withText) {\n stateUpdate.withText = props.withText;\n }\n\n picker.setState(stateUpdate);\n }, [picker, props, prevProps]);\n\n return <picker.Component model={picker} />;\n}\n","import React from 'react';\nimport { SceneDataLayerProvider, SceneDataLayerSet, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\n\nexport interface Props {\n name: string;\n}\n\nexport function DataLayerControl({ name }: Props) {\n const scene = useSceneContext();\n const layerSets = sceneGraph.getDataLayers(scene);\n\n const layer = getLayer(layerSets, name);\n\n if (!layer) {\n return <div>Annotation {name} not found</div>;\n }\n\n return <layer.Component model={layer} />;\n}\n\nfunction getLayer(layers: SceneDataLayerProvider[], name: string): SceneDataLayerProvider | undefined {\n for (let i = 0; i < layers.length; i++) {\n const layer = (layers[i] as SceneDataLayerSet).state.layers.find((layer) => layer.state.name === name);\n\n if (layer) {\n return layer;\n }\n }\n\n return undefined;\n}\n","import React, { useEffect, useState } from 'react';\nimport { CustomVariable as CustomVariableObject } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { VariableProps } from './types';\n\nexport interface CustomVariableProps extends VariableProps {\n query: string;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function CustomVariable({\n query,\n name,\n label,\n hide,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: CustomVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: CustomVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new CustomVariableObject({ name, label, query, value: initialValue, isMulti, includeAll, hide});\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n variable?.setState({\n label,\n query,\n hide,\n isMulti,\n includeAll\n })\n }, [hide, includeAll, isMulti, label, query, variable]);\n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n","import React, { useEffect, useState } from 'react';\nimport { DataSourceVariable as DataSourceVariableObject } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { VariableRefresh, VariableSort } from '@grafana/schema';\nimport { VariableProps } from './types';\n\nexport interface DataSourceVariableProps extends VariableProps {\n pluginId: string;\n regex?: string;\n refresh?: VariableRefresh;\n sort?: VariableSort;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function DataSourceVariable({\n pluginId,\n regex,\n name,\n label,\n hide,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: DataSourceVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: DataSourceVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new DataSourceVariableObject({ \n pluginId,\n regex,\n name,\n label,\n value: initialValue, \n isMulti,\n hide, \n includeAll,\n });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n if (!variableAdded) {\n return;\n }\n\n if (\n variable.state.pluginId === pluginId &&\n variable.state.regex === regex &&\n variable.state.label === label &&\n variable.state.hide === hide &&\n variable.state.includeAll === includeAll\n ) {\n return;\n }\n\n variable.setState({\n pluginId,\n regex,\n label,\n hide, \n includeAll,\n })\n\n variable.refreshOptions();\n }, [hide, includeAll, label, pluginId, regex, variable, variableAdded])\n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n","import React, { useEffect, useState } from 'react';\nimport { QueryVariable as QueryVariableObject, SceneDataQuery } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { DataSourceRef, VariableRefresh, VariableSort } from '@grafana/schema';\nimport { VariableProps } from './types';\nimport { isEqual } from 'lodash';\n\nexport interface QueryVariableProps extends VariableProps {\n query: string | SceneDataQuery;\n datasource: DataSourceRef | null;\n regex?: string;\n refresh?: VariableRefresh;\n sort?: VariableSort;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function QueryVariable({\n query,\n name,\n datasource,\n label,\n hide,\n regex,\n refresh,\n sort,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: QueryVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: QueryVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new QueryVariableObject({ \n name,\n label,\n query,\n datasource, \n refresh, \n sort, \n regex, \n value: initialValue, \n isMulti,\n hide, \n includeAll,\n });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n if (!variableAdded) {\n return;\n }\n\n if (\n isEqual(variable.state.query, query) &&\n isEqual(variable.state.datasource, datasource) &&\n variable.state.regex === regex &&\n variable.state.label === label &&\n variable.state.hide === hide &&\n variable.state.includeAll === includeAll &&\n variable.state.refresh === refresh &&\n variable.state.sort === sort\n ) {\n return;\n }\n\n variable.setState({\n label,\n query,\n datasource, \n refresh, \n sort, \n regex, \n hide, \n includeAll,\n });\n\n variable.refreshOptions();\n }, [datasource, hide, includeAll, label, query, refresh, regex, sort, variable, variableAdded]);\n \n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n","import { NavModelItem, UrlQueryMap, urlUtil } from '@grafana/data';\nimport { locationSearchToObject, locationService } from '@grafana/runtime';\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useTimeRange, useVariables } from '../hooks/hooks';\n\n/**\n * Code and concepts copied from https://github.com/grafana/hackathon-2023-12-grafana-react/blob/main/src/grafana-react\n *\n * These contexts & components needs some more thought and naming considerations, just a quick proof of concept for now.\n */\n\ntype BreadcrumbItem = Pick<NavModelItem, 'text' | 'url'>;\n\nexport interface BreadcrumbContextValue {\n breadcrumbs: BreadcrumbItem[];\n addBreadcrumb(breadcrumb: BreadcrumbItem): void;\n removeBreadcrumb(breadcrumb: BreadcrumbItem): void;\n}\n\nexport const BreadcrumbContext = createContext<BreadcrumbContextValue>({\n breadcrumbs: [],\n addBreadcrumb: () => {},\n removeBreadcrumb: () => {},\n});\n\nexport function BreadcrumbProvider({ children }: { children: React.ReactNode }) {\n const [breadcrumbs, setBreadcrumbs] = useState<BreadcrumbItem[]>([]);\n\n return (\n <BreadcrumbContext.Provider\n value={{\n breadcrumbs,\n addBreadcrumb: useCallback((breadcrumb: BreadcrumbItem) => setBreadcrumbs((prev) => [...prev, breadcrumb]), []),\n removeBreadcrumb: useCallback(\n (breadcrumb: BreadcrumbItem) => setBreadcrumbs((prev) => prev.filter((b) => b.url !== breadcrumb.url)),\n []\n ),\n }}\n >\n {children}\n </BreadcrumbContext.Provider>\n );\n}\n\nexport interface BreadcrumbProps {\n text: string;\n path: string;\n extraKeys?: string[];\n}\n\nexport function Breadcrumb({ text, path, extraKeys }: BreadcrumbProps): React.ReactNode {\n const { addBreadcrumb, removeBreadcrumb } = useContext(BreadcrumbContext);\n\n const buildUrl = useUrlBuilder();\n\n useEffect(() => {\n const breadcrumb = {\n text,\n url: buildUrl(path, extraKeys),\n };\n\n addBreadcrumb(breadcrumb);\n\n return () => {\n removeBreadcrumb(breadcrumb);\n };\n }, [text, path, extraKeys, addBreadcrumb, buildUrl, removeBreadcrumb]);\n\n return null;\n}\n\nfunction useUrlBuilder() {\n const queryParams = useQueryParams()[0];\n const variables = useVariables();\n const [_, timeRange] = useTimeRange();\n\n return useCallback(\n (urlBase: string, extraKeys: string[] | undefined) => {\n const params: UrlQueryMap = {};\n\n for (const v of variables) {\n if (v.urlSync && !v.state.skipUrlSync) {\n const state = v.urlSync.getUrlState();\n Object.assign(params, state);\n }\n }\n\n if (timeRange.urlSync) {\n const state = timeRange.urlSync.getUrlState();\n Object.assign(params, state);\n }\n\n if (extraKeys) {\n for (const extra of extraKeys) {\n if (queryParams[extra]) {\n params[extra] = queryParams[extra];\n }\n }\n }\n\n return urlUtil.renderUrl(urlBase, params);\n },\n [variables, queryParams, timeRange]\n );\n}\n\nfunction useQueryParams(): [UrlQueryMap, (values: UrlQueryMap, replace?: boolean) => void] {\n const { search } = useLocation();\n const queryParams = useMemo(() => locationSearchToObject(search || ''), [search]);\n const update = useCallback((values: UrlQueryMap, replace?: boolean) => locationService.partial(values, replace), []);\n return [queryParams, update];\n}\n","import { SceneVariables, VariableValueSingle, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\n\nexport function useVariableValues<T = VariableValueSingle>(name: string): [T[] | undefined, boolean] {\n const scene = useSceneContext();\n const variable = sceneGraph.lookupVariable(name, scene);\n\n if (!variable) {\n return [undefined, false];\n }\n\n variable.useState();\n\n const set = variable.parent as SceneVariables;\n const isLoading = set.isVariableLoadingOrWaitingToUpdate(variable);\n let value = variable.getValue();\n\n if (value == null) {\n return [undefined, isLoading];\n }\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n return [value as T[], isLoading];\n}\n","import { QueryVariable, SceneDataQuery, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\nimport { useEffect } from 'react';\nimport { isEqual } from 'lodash';\n\ninterface QueryVariableOptions {\n name: string;\n datasource: string;\n query: string | SceneDataQuery;\n regex?: string;\n}\n\n/**\n * A custom hook that creates or updates a `QueryVariable` in the scene context.\n * \n * @param {QueryVariableOptions} options - Options for configuring the `QueryVariable`.\n * @returns {QueryVariable | null} The `QueryVariable` instance or `null`.\n * \n * @example\n * // Usage example\n * const variable = useQueryVariable({\n * name: \"myQueryVariable\",\n * datasource: \"gdev-testdata\",\n * query: \"*\",\n * regex: \".*someFilter.*\"\n * });\n * \n * // Returns a QueryVariable instance or null if not a valid QueryVariable\n * if (variable) {\n * console.log(\"Variable added to the scene:\", variable);\n * }\n */\nexport function useQueryVariable(options: QueryVariableOptions): QueryVariable | null {\n const scene = useSceneContext();\n let variable = sceneGraph.lookupVariable(options.name, scene);\n\n if (!variable) {\n variable = new QueryVariable({ name: options.name, datasource: { uid: options.datasource }, query: options.query, regex: options.regex });\n }\n\n if (!(variable instanceof QueryVariable)) {\n variable = null;\n }\n\n useEffect(() => {\n if (variable) {\n scene.addVariable(variable)\n }\n }, [variable, scene]);\n\n useEffect(() => {\n if (\n variable?.state.datasource?.uid !== options.datasource ||\n !isEqual(variable?.state.query, options.query) ||\n variable?.state.regex !== options.regex\n ) {\n variable?.setState({ datasource: { uid: options.datasource }, query: options.query, regex: options.regex });\n variable?.refreshOptions();\n }\n }, [options, variable]);\n\n return variable;\n}\n","import { MultiValueVariable, SceneVariables, VariableValueSingle, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\n\nexport function useVariableValue<T = VariableValueSingle>(name: string): [T | undefined, boolean] {\n const scene = useSceneContext();\n const variable = sceneGraph.lookupVariable(name, scene);\n\n if (!variable || (variable instanceof MultiValueVariable && variable.state.isMulti === true)) {\n return [undefined, false];\n }\n\n variable.useState();\n\n const set = variable.parent as SceneVariables;\n const isLoading = set.isVariableLoadingOrWaitingToUpdate(variable);\n let value = variable.getValue();\n\n if (value == null) {\n return [undefined, isLoading];\n }\n\n return [value as T, isLoading];\n}\n","import React, { useEffect, useState } from 'react';\nimport { useSceneContext } from '../hooks/hooks';\nimport { AnnotationQuery } from '@grafana/data';\nimport { SceneDataLayerSet, dataLayers } from '@grafana/scenes';\nimport { SceneContextObject } from '../contexts/SceneContextObject';\nimport { writeSceneLog } from '../utils';\n\nexport interface AnnotationLayerSetProps {\n name: string;\n query: AnnotationQuery;\n children: React.ReactNode;\n}\n\nexport function AnnotationLayer({ name, query, children }: AnnotationLayerSetProps): React.ReactNode {\n const scene = useSceneContext();\n const [annotationAdded, setAnnotationAdded] = useState<boolean>();\n\n let annotation: dataLayers.AnnotationsDataLayer | undefined = findAnnotationLayer(scene, name);\n\n if (!annotation) {\n annotation = new dataLayers.AnnotationsDataLayer({ name, query });\n }\n\n useEffect(() => {\n const removeFn = addAnnotationLayer(scene, annotation);\n setAnnotationAdded(true);\n return removeFn;\n }, [scene, name, annotation]);\n\n useEffect(() => {\n // Handle prop changes\n }, [annotationAdded]);\n\n if (!annotationAdded) {\n return null;\n }\n\n return children;\n}\n\nfunction findAnnotationLayer<T>(scene: SceneContextObject, name: string): T | undefined {\n const annotations = scene.state.$data as SceneDataLayerSet;\n\n if (!annotations) {\n return;\n }\n\n return annotations.state.layers.find((anno) => anno.state.name === name) as T;\n}\n\nfunction addAnnotationLayer(scene: SceneContextObject, layer: dataLayers.AnnotationsDataLayer) {\n let set = scene.state.$data as SceneDataLayerSet;\n\n if (set) {\n set.setState({ layers: [...set.state.layers, layer] });\n } else {\n set = new SceneDataLayerSet({ layers: [layer] });\n scene.setState({ $data: set });\n }\n\n writeSceneLog('SceneContext', `Adding annotation data layer: ${layer.state.name} key: ${layer.state.key}`);\n\n return () => {\n set.setState({ layers: set.state.layers.filter((x) => x !== layer) });\n writeSceneLog('SceneContext', `Removing annotation data layer: ${layer.state.name} key: ${layer.state.key}`);\n };\n}\n","import React from 'react';\nimport { EmbeddedScene, EmbeddedSceneState, SceneComponentProps } from '@grafana/scenes';\nimport { SceneContext } from '../contexts/SceneContextProvider';\nimport { SceneContextObject } from '../contexts/SceneContextObject';\n\nexport class EmbeddedSceneWithContext extends EmbeddedScene {\n public constructor(state: EmbeddedSceneState) {\n super({ ...state, context: new SceneContextObject() });\n }\n\n public static Component = ({ model }: SceneComponentProps<EmbeddedSceneWithContext>) => {\n return (\n <SceneContext.Provider value={model.state.context as SceneContextObject}>\n <EmbeddedScene.Component model={model} />\n </SceneContext.Provider>\n );\n };\n}\n","import { useTheme2 } from '@grafana/ui';\nimport React, { CSSProperties } from 'react';\n\nexport interface Props {\n minWidth?: number;\n minHeight?: number;\n children: React.ReactNode;\n}\n\n/**\n * Simple css grid layout for visualizations\n */\nexport function VizGridLayout({ children, minWidth = 400, minHeight = 320 }: Props) {\n const theme = useTheme2();\n const style: CSSProperties = {\n display: 'grid',\n flexGrow: 1,\n gridTemplateColumns: `repeat(auto-fit, minmax(${minWidth}px, 1fr))`,\n gridAutoRows: `minmax(${minHeight}px, auto)`,\n columnGap: theme.spacing(1),\n rowGap: theme.spacing(1),\n };\n\n return <div style={style}>{children}</div>;\n}\n"],"names":["SceneObjectBase","__spreadProps","NewSceneObjectAddedEvent","SceneVariableSet","createContext","useContext","useState","useEffect","behaviors","SceneTimeRange","childContext","React","UrlSyncContextProvider","sceneGraph","Subscription","SceneVariableValueChangedEvent","useCallback","LRUCache","isPlainObject","useId","SceneQueryRunner","isEqual","SceneDataTransformer","DataProviderProxy","TimeRangePickerUI","VariableValueSelectWrapper","usePrevious","VizPanelObject","getPanelOptionsWithDefaults","SceneDataNode","SceneRefreshPicker","__spreadValues","layer","CustomVariableObject","DataSourceVariableObject","QueryVariableObject","urlUtil","useLocation","useMemo","locationSearchToObject","locationService","QueryVariable","MultiValueVariable","dataLayers","SceneDataLayerSet","EmbeddedScene","useTheme2"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@grafana/scenes-react",
|
3
|
-
"version": "5.
|
3
|
+
"version": "5.26.0--canary.974.11969404553.0",
|
4
4
|
"description": "Grafana framework for building dynamic dashboards",
|
5
5
|
"author": "Grafana Labs",
|
6
6
|
"license": "AGPL-3.0-only",
|
@@ -37,7 +37,7 @@
|
|
37
37
|
"url": "https://github.com/grafana/scenes/issues"
|
38
38
|
},
|
39
39
|
"dependencies": {
|
40
|
-
"@grafana/scenes": "5.
|
40
|
+
"@grafana/scenes": "5.26.0--canary.974.11969404553.0",
|
41
41
|
"lru-cache": "^10.2.2",
|
42
42
|
"react-use": "^17.4.0"
|
43
43
|
},
|
@@ -113,5 +113,5 @@
|
|
113
113
|
"prettier --write"
|
114
114
|
]
|
115
115
|
},
|
116
|
-
"gitHead": "
|
116
|
+
"gitHead": "e078376c51f12f8dd115c4989a0cd151a4702e13"
|
117
117
|
}
|