@grafana/scenes-react 5.3.7 → 5.3.8

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
+ # v5.3.8 (Wed Jul 10 2024)
2
+
3
+ #### 🐛 Bug Fix
4
+
5
+ - Add more props + tests to CustomVariable [#817](https://github.com/grafana/scenes/pull/817) ([@mdvictor](https://github.com/mdvictor))
6
+
7
+ #### Authors: 1
8
+
9
+ - Victor Marin ([@mdvictor](https://github.com/mdvictor))
10
+
11
+ ---
12
+
1
13
  # v5.3.7 (Thu Jul 04 2024)
2
14
 
3
15
  #### 🐛 Bug Fix
@@ -6,15 +6,17 @@ function CustomVariable({
6
6
  query,
7
7
  name,
8
8
  label,
9
+ hide,
9
10
  initialValue,
10
- children,
11
- isMulti
11
+ isMulti,
12
+ includeAll,
13
+ children
12
14
  }) {
13
15
  const scene = useSceneContext();
14
16
  const [variableAdded, setVariableAdded] = useState();
15
17
  let variable = scene.findVariable(name);
16
18
  if (!variable) {
17
- variable = new CustomVariable$1({ name, label, query, value: initialValue, isMulti });
19
+ variable = new CustomVariable$1({ name, label, query, value: initialValue, isMulti, includeAll, hide });
18
20
  }
19
21
  useEffect(() => {
20
22
  const removeFn = scene.addVariable(variable);
@@ -22,7 +24,14 @@ function CustomVariable({
22
24
  return removeFn;
23
25
  }, [variable, scene, name]);
24
26
  useEffect(() => {
25
- }, [variable]);
27
+ variable == null ? void 0 : variable.setState({
28
+ label,
29
+ query,
30
+ hide,
31
+ isMulti,
32
+ includeAll
33
+ });
34
+ }, [hide, includeAll, isMulti, label, query, variable]);
26
35
  if (!variableAdded) {
27
36
  return null;
28
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CustomVariable.js","sources":["../../../src/variables/CustomVariable.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { CustomVariable as CustomVariableObject, VariableValue } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\n\nexport interface CustomVariableProps {\n query: string;\n name: string;\n label?: string;\n initialValue?: VariableValue;\n isMulti?: boolean;\n children: React.ReactNode;\n}\n\nexport function CustomVariable({\n query,\n name,\n label,\n initialValue,\n children,\n isMulti,\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 });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n // Handle prop changes\n }, [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"],"names":["CustomVariableObject"],"mappings":";;;;AAaO,SAAS,cAAe,CAAA;AAAA,EAC7B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AACF,CAAyC,EAAA;AACvC,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAkB,EAAA,CAAA;AAE5D,EAAI,IAAA,QAAA,GAA6C,KAAM,CAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAExE,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAW,QAAA,GAAA,IAAIA,iBAAqB,EAAE,IAAA,EAAM,OAAO,KAAO,EAAA,KAAA,EAAO,YAAc,EAAA,OAAA,EAAS,CAAA,CAAA;AAAA,GAC1F;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;AAAA,GAEhB,EAAG,CAAC,QAAQ,CAAC,CAAA,CAAA;AAGb,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,QAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"CustomVariable.js","sources":["../../../src/variables/CustomVariable.tsx"],"sourcesContent":["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"],"names":["CustomVariableObject"],"mappings":";;;;AAYO,SAAS,cAAe,CAAA;AAAA,EAC7B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AACF,CAAyC,EAAA;AACvC,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAkB,EAAA,CAAA;AAE5D,EAAI,IAAA,QAAA,GAA6C,KAAM,CAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAExE,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAW,QAAA,GAAA,IAAIA,gBAAqB,CAAA,EAAE,IAAM,EAAA,KAAA,EAAO,KAAO,EAAA,KAAA,EAAO,YAAc,EAAA,OAAA,EAAS,UAAY,EAAA,IAAA,EAAK,CAAA,CAAA;AAAA,GAC3G;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,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,QAAS,CAAA;AAAA,MACjB,KAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,KACF,CAAA,CAAA;AAAA,GACF,EAAG,CAAC,IAAM,EAAA,UAAA,EAAY,SAAS,KAAO,EAAA,KAAA,EAAO,QAAQ,CAAC,CAAA,CAAA;AAGtD,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,QAAA,CAAA;AACT;;;;"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { SceneQueryRunner, SceneDataQuery, SceneDataTransformer, CustomTransformerDefinition, SceneDataProvider, SceneObjectBase, SceneObject, SceneVariable, SceneObjectState, SceneTimeRangeState, ControlsLayout, VizConfig, VariableValue, VariableValueSingle, EmbeddedScene, EmbeddedSceneState, SceneComponentProps, SceneTimeRangeLike } from '@grafana/scenes';
2
- import { DataSourceRef, DataTransformerConfig } from '@grafana/schema';
2
+ import { DataSourceRef, DataTransformerConfig, VariableHide } from '@grafana/schema';
3
3
  import React from 'react';
4
4
  import { NavModelItem, AnnotationQuery, TimeRange } from '@grafana/data';
5
5
 
@@ -88,15 +88,20 @@ interface Props {
88
88
  }
89
89
  declare function DataLayerControl({ name }: Props): React.JSX.Element;
90
90
 
91
- interface CustomVariableProps {
92
- query: string;
91
+ interface VariableProps {
93
92
  name: string;
94
93
  label?: string;
94
+ hide?: VariableHide;
95
95
  initialValue?: VariableValue;
96
+ }
97
+
98
+ interface CustomVariableProps extends VariableProps {
99
+ query: string;
96
100
  isMulti?: boolean;
101
+ includeAll?: boolean;
97
102
  children: React.ReactNode;
98
103
  }
99
- declare function CustomVariable({ query, name, label, initialValue, children, isMulti, }: CustomVariableProps): React.ReactNode;
104
+ declare function CustomVariable({ query, name, label, hide, initialValue, isMulti, includeAll, children, }: CustomVariableProps): React.ReactNode;
100
105
 
101
106
  /**
102
107
  * Code and concepts copied from https://github.com/grafana/hackathon-2023-12-grafana-react/blob/main/src/grafana-react
package/dist/index.js CHANGED
@@ -447,15 +447,17 @@ function CustomVariable({
447
447
  query,
448
448
  name,
449
449
  label,
450
+ hide,
450
451
  initialValue,
451
- children,
452
- isMulti
452
+ isMulti,
453
+ includeAll,
454
+ children
453
455
  }) {
454
456
  const scene = useSceneContext();
455
457
  const [variableAdded, setVariableAdded] = React.useState();
456
458
  let variable = scene.findVariable(name);
457
459
  if (!variable) {
458
- variable = new scenes.CustomVariable({ name, label, query, value: initialValue, isMulti });
460
+ variable = new scenes.CustomVariable({ name, label, query, value: initialValue, isMulti, includeAll, hide });
459
461
  }
460
462
  React.useEffect(() => {
461
463
  const removeFn = scene.addVariable(variable);
@@ -463,7 +465,14 @@ function CustomVariable({
463
465
  return removeFn;
464
466
  }, [variable, scene, name]);
465
467
  React.useEffect(() => {
466
- }, [variable]);
468
+ variable == null ? void 0 : variable.setState({
469
+ label,
470
+ query,
471
+ hide,
472
+ isMulti,
473
+ includeAll
474
+ });
475
+ }, [hide, includeAll, isMulti, label, query, variable]);
467
476
  if (!variableAdded) {
468
477
  return null;
469
478
  }
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/hooks/useQueryRunner.ts","../src/DataProxyProvider.tsx","../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/contexts/BreadcrumbContext.tsx","../src/hooks/useVariableValues.ts","../src/components/AnnotationLayer.tsx","../src/interoperability/EmbeddedSceneWithContext.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 getUrlSyncManager,\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 getUrlSyncManager().handleNewObject(obj);\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 getUrlSyncManager().handleNewObject(variable);\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.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 {\n SceneTimeRangeState,\n SceneTimeRange,\n behaviors,\n UrlSyncContextProvider,\n getUrlSyncManager,\n} 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 getUrlSyncManager().handleNewObject(childContext);\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 <UrlSyncContextProvider scene={childContext}>{innerProvider}</UrlSyncContextProvider>;\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 { useEffect, useId } from 'react';\nimport { SceneDataQuery, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\nimport { isEqual } from 'lodash';\nimport { useSceneContext } from './hooks';\n\nexport interface UseQueryOptions {\n queries: SceneDataQuery[];\n maxDataPoints?: number;\n datasource?: DataSourceRef;\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 scene = useSceneContext();\n const key = useId();\n\n let queryRunner = scene.findByKey<SceneQueryRunner>(key);\n\n if (!queryRunner) {\n queryRunner = new SceneQueryRunner({\n key: key,\n queries: options.queries,\n maxDataPoints: options.maxDataPoints,\n datasource: options.datasource,\n });\n }\n\n useEffect(() => scene.addToScene(queryRunner), [queryRunner, scene]);\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 SceneObjectBase,\n SceneObjectRef,\n SceneDataProvider,\n SceneDataProviderResult,\n SceneDataState,\n} from '@grafana/scenes';\nimport { Observable } from 'rxjs';\n\nexport interface DataProxyProviderState extends SceneDataState {\n source: SceneObjectRef<SceneDataProvider>;\n}\n\nexport class DataProxyProvider extends SceneObjectBase<DataProxyProviderState> implements SceneDataProvider {\n public constructor(state: DataProxyProviderState) {\n super({\n source: state.source,\n data: state.source.resolve().state.data,\n });\n\n this.addActivationHandler(() => {\n this._subs.add(\n this.state.source.resolve().subscribeToState((newState, oldState) => {\n if (newState.data !== oldState.data) {\n this.setState({ data: newState.data });\n }\n })\n );\n });\n }\n\n public setContainerWidth(width: number) {\n this.state.source.resolve().setContainerWidth?.(width);\n }\n\n public isDataReadyToDisplay() {\n return this.state.source.resolve().isDataReadyToDisplay?.() ?? true;\n }\n\n public cancelQuery() {\n this.state.source.resolve().cancelQuery?.();\n }\n\n public getResultsStream(): Observable<SceneDataProviderResult> {\n return this.state.source.resolve().getResultsStream();\n }\n}\n","import { CustomTransformerDefinition, SceneDataProvider, SceneDataTransformer } from \"@grafana/scenes\"\nimport { useSceneContext } from \"./hooks\";\nimport { useEffect, useId } from \"react\";\nimport { isEqual } from \"lodash\";\nimport { DataTransformerConfig } from \"@grafana/schema\";\nimport { DataProxyProvider } from \"../DataProxyProvider\";\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 DataProxyProvider({ 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 SceneQueryRunner,\n} from '@grafana/scenes';\nimport { DataProxyProvider } from '../DataProxyProvider';\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 instanceof SceneQueryRunner) {\n return new DataProxyProvider({ 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, VariableValue } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\n\nexport interface CustomVariableProps {\n query: string;\n name: string;\n label?: string;\n initialValue?: VariableValue;\n isMulti?: boolean;\n children: React.ReactNode;\n}\n\nexport function CustomVariable({\n query,\n name,\n label,\n initialValue,\n children,\n isMulti,\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 });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n // Handle prop changes\n }, [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 { 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 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"],"names":["SceneObjectBase","__spreadProps","getUrlSyncManager","SceneVariableSet","createContext","useContext","useState","useEffect","behaviors","SceneTimeRange","childContext","React","UrlSyncContextProvider","sceneGraph","Subscription","SceneVariableValueChangedEvent","useCallback","useId","SceneQueryRunner","isEqual","SceneDataTransformer","TimeRangePickerUI","VariableValueSelectWrapper","usePrevious","VizPanelObject","getPanelOptionsWithDefaults","SceneRefreshPicker","__spreadValues","layer","CustomVariableObject","urlUtil","useLocation","useMemo","locationSearchToObject","locationService","dataLayers","SceneDataLayerSet","EmbeddedScene"],"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/hooks/useQueryRunner.ts","../src/DataProxyProvider.tsx","../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/contexts/BreadcrumbContext.tsx","../src/hooks/useVariableValues.ts","../src/components/AnnotationLayer.tsx","../src/interoperability/EmbeddedSceneWithContext.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 getUrlSyncManager,\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 getUrlSyncManager().handleNewObject(obj);\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 getUrlSyncManager().handleNewObject(variable);\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.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 {\n SceneTimeRangeState,\n SceneTimeRange,\n behaviors,\n UrlSyncContextProvider,\n getUrlSyncManager,\n} 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 getUrlSyncManager().handleNewObject(childContext);\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 <UrlSyncContextProvider scene={childContext}>{innerProvider}</UrlSyncContextProvider>;\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 { useEffect, useId } from 'react';\nimport { SceneDataQuery, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\nimport { isEqual } from 'lodash';\nimport { useSceneContext } from './hooks';\n\nexport interface UseQueryOptions {\n queries: SceneDataQuery[];\n maxDataPoints?: number;\n datasource?: DataSourceRef;\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 scene = useSceneContext();\n const key = useId();\n\n let queryRunner = scene.findByKey<SceneQueryRunner>(key);\n\n if (!queryRunner) {\n queryRunner = new SceneQueryRunner({\n key: key,\n queries: options.queries,\n maxDataPoints: options.maxDataPoints,\n datasource: options.datasource,\n });\n }\n\n useEffect(() => scene.addToScene(queryRunner), [queryRunner, scene]);\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 SceneObjectBase,\n SceneObjectRef,\n SceneDataProvider,\n SceneDataProviderResult,\n SceneDataState,\n} from '@grafana/scenes';\nimport { Observable } from 'rxjs';\n\nexport interface DataProxyProviderState extends SceneDataState {\n source: SceneObjectRef<SceneDataProvider>;\n}\n\nexport class DataProxyProvider extends SceneObjectBase<DataProxyProviderState> implements SceneDataProvider {\n public constructor(state: DataProxyProviderState) {\n super({\n source: state.source,\n data: state.source.resolve().state.data,\n });\n\n this.addActivationHandler(() => {\n this._subs.add(\n this.state.source.resolve().subscribeToState((newState, oldState) => {\n if (newState.data !== oldState.data) {\n this.setState({ data: newState.data });\n }\n })\n );\n });\n }\n\n public setContainerWidth(width: number) {\n this.state.source.resolve().setContainerWidth?.(width);\n }\n\n public isDataReadyToDisplay() {\n return this.state.source.resolve().isDataReadyToDisplay?.() ?? true;\n }\n\n public cancelQuery() {\n this.state.source.resolve().cancelQuery?.();\n }\n\n public getResultsStream(): Observable<SceneDataProviderResult> {\n return this.state.source.resolve().getResultsStream();\n }\n}\n","import { CustomTransformerDefinition, SceneDataProvider, SceneDataTransformer } from \"@grafana/scenes\"\nimport { useSceneContext } from \"./hooks\";\nimport { useEffect, useId } from \"react\";\nimport { isEqual } from \"lodash\";\nimport { DataTransformerConfig } from \"@grafana/schema\";\nimport { DataProxyProvider } from \"../DataProxyProvider\";\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 DataProxyProvider({ 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 SceneQueryRunner,\n} from '@grafana/scenes';\nimport { DataProxyProvider } from '../DataProxyProvider';\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 instanceof SceneQueryRunner) {\n return new DataProxyProvider({ 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 { 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 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"],"names":["SceneObjectBase","__spreadProps","getUrlSyncManager","SceneVariableSet","createContext","useContext","useState","useEffect","behaviors","SceneTimeRange","childContext","React","UrlSyncContextProvider","sceneGraph","Subscription","SceneVariableValueChangedEvent","useCallback","useId","SceneQueryRunner","isEqual","SceneDataTransformer","TimeRangePickerUI","VariableValueSelectWrapper","usePrevious","VizPanelObject","getPanelOptionsWithDefaults","SceneRefreshPicker","__spreadValues","layer","CustomVariableObject","urlUtil","useLocation","useMemo","locationSearchToObject","locationService","dataLayers","SceneDataLayerSet","EmbeddedScene"],"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.7",
3
+ "version": "5.3.8",
4
4
  "description": "Grafana framework for building dynamic dashboards",
5
5
  "author": "Grafana Labs",
6
6
  "license": "AGPL-3.0-only",
@@ -38,7 +38,7 @@
38
38
  },
39
39
  "dependencies": {
40
40
  "@grafana/e2e-selectors": "^11.0.0",
41
- "@grafana/scenes": "5.3.7",
41
+ "@grafana/scenes": "5.3.8",
42
42
  "react-use": "17.4.0"
43
43
  },
44
44
  "peerDependencies": {
@@ -112,5 +112,5 @@
112
112
  "prettier --write"
113
113
  ]
114
114
  },
115
- "gitHead": "bf6118631e93fd116f9574524c67f708eadde55b"
115
+ "gitHead": "29ab19d14f5658f81c89255cceaafe056c7f32f6"
116
116
  }