@grafana/scenes-react 5.6.1 → 5.6.2--canary.844.10073621961.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ import { sceneGraph, MultiValueVariable } from '@grafana/scenes';
2
+ import { useSceneContext } from './hooks.js';
3
+
4
+ function useVariableValue(name) {
5
+ const scene = useSceneContext();
6
+ const variable = sceneGraph.lookupVariable(name, scene);
7
+ if (!variable || variable instanceof MultiValueVariable && variable.state.isMulti === true) {
8
+ return [void 0, false];
9
+ }
10
+ variable.useState();
11
+ const set = variable.parent;
12
+ const isLoading = set.isVariableLoadingOrWaitingToUpdate(variable);
13
+ let value = variable.getValue();
14
+ if (value == null) {
15
+ return [void 0, isLoading];
16
+ }
17
+ return [value, isLoading];
18
+ }
19
+
20
+ export { useVariableValue };
21
+ //# sourceMappingURL=useVariableValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVariableValue.js","sources":["../../../src/hooks/useVariableValue.ts"],"sourcesContent":["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"],"names":[],"mappings":";;;AAGO,SAAS,iBAA0C,IAAwC,EAAA;AAChG,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,QAAW,GAAA,UAAA,CAAW,cAAe,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAEtD,EAAA,IAAI,CAAC,QAAa,IAAA,QAAA,YAAoB,sBAAsB,QAAS,CAAA,KAAA,CAAM,YAAY,IAAO,EAAA;AAC5F,IAAO,OAAA,CAAC,QAAW,KAAK,CAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,QAAA,CAAS,QAAS,EAAA,CAAA;AAElB,EAAA,MAAM,MAAM,QAAS,CAAA,MAAA,CAAA;AACrB,EAAM,MAAA,SAAA,GAAY,GAAI,CAAA,kCAAA,CAAmC,QAAQ,CAAA,CAAA;AACjE,EAAI,IAAA,KAAA,GAAQ,SAAS,QAAS,EAAA,CAAA;AAE9B,EAAA,IAAI,SAAS,IAAM,EAAA;AACjB,IAAO,OAAA,CAAC,QAAW,SAAS,CAAA,CAAA;AAAA,GAC9B;AAEA,EAAO,OAAA,CAAC,OAAY,SAAS,CAAA,CAAA;AAC/B;;;;"}
package/dist/esm/index.js CHANGED
@@ -9,6 +9,7 @@ export { DataLayerControl } from './components/DataLayerControl.js';
9
9
  export { CustomVariable } from './variables/CustomVariable.js';
10
10
  export { Breadcrumb, BreadcrumbContext, BreadcrumbProvider } from './contexts/BreadcrumbContext.js';
11
11
  export { useVariableValues } from './hooks/useVariableValues.js';
12
+ export { useVariableValue } from './hooks/useVariableValue.js';
12
13
  export { AnnotationLayer } from './components/AnnotationLayer.js';
13
14
  export { EmbeddedSceneWithContext } from './interoperability/EmbeddedSceneWithContext.js';
14
15
  export { useSceneContext, useTimeRange, useUpdateWhenSceneChanges, useVariableInterpolator, useVariables } from './hooks/hooks.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
package/dist/index.d.ts CHANGED
@@ -127,6 +127,8 @@ declare function Breadcrumb({ text, path, extraKeys }: BreadcrumbProps): React.R
127
127
 
128
128
  declare function useVariableValues<T = VariableValueSingle>(name: string): [T[] | undefined, boolean];
129
129
 
130
+ declare function useVariableValue<T = VariableValueSingle>(name: string): [T | undefined, boolean];
131
+
130
132
  interface AnnotationLayerSetProps {
131
133
  name: string;
132
134
  query: AnnotationQuery;
@@ -165,4 +167,4 @@ declare function useUpdateWhenSceneChanges({ timeRange, variables }: UseUpdateWh
165
167
  */
166
168
  declare function useVariableInterpolator(options: UseUpdateWhenSceneChangesOptions): (str: string) => string;
167
169
 
168
- export { AnnotationLayer, Breadcrumb, BreadcrumbContext, BreadcrumbProvider, CustomVariable, DataLayerControl, EmbeddedSceneWithContext, RefreshPicker, SceneContext, SceneContextProvider, SceneContextProviderProps, TimeRangePicker, UseUpdateWhenSceneChangesOptions, UseUpdateWhenSceneChangesReason, VariableControl, VizPanel, useDataTransformer, useQueryRunner, useSceneContext, useTimeRange, useUpdateWhenSceneChanges, useVariableInterpolator, useVariableValues, useVariables };
170
+ export { AnnotationLayer, Breadcrumb, BreadcrumbContext, BreadcrumbProvider, CustomVariable, DataLayerControl, EmbeddedSceneWithContext, RefreshPicker, SceneContext, SceneContextProvider, SceneContextProviderProps, TimeRangePicker, UseUpdateWhenSceneChangesOptions, UseUpdateWhenSceneChangesReason, VariableControl, VizPanel, useDataTransformer, useQueryRunner, useSceneContext, useTimeRange, useUpdateWhenSceneChanges, useVariableInterpolator, useVariableValue, useVariableValues, useVariables };
package/dist/index.js CHANGED
@@ -569,6 +569,22 @@ function useVariableValues(name) {
569
569
  return [value, isLoading];
570
570
  }
571
571
 
572
+ function useVariableValue(name) {
573
+ const scene = useSceneContext();
574
+ const variable = scenes.sceneGraph.lookupVariable(name, scene);
575
+ if (!variable || variable instanceof scenes.MultiValueVariable && variable.state.isMulti === true) {
576
+ return [void 0, false];
577
+ }
578
+ variable.useState();
579
+ const set = variable.parent;
580
+ const isLoading = set.isVariableLoadingOrWaitingToUpdate(variable);
581
+ let value = variable.getValue();
582
+ if (value == null) {
583
+ return [void 0, isLoading];
584
+ }
585
+ return [value, isLoading];
586
+ }
587
+
572
588
  function AnnotationLayer({ name, query, children }) {
573
589
  const scene = useSceneContext();
574
590
  const [annotationAdded, setAnnotationAdded] = React.useState();
@@ -661,6 +677,7 @@ exports.useSceneContext = useSceneContext;
661
677
  exports.useTimeRange = useTimeRange;
662
678
  exports.useUpdateWhenSceneChanges = useUpdateWhenSceneChanges;
663
679
  exports.useVariableInterpolator = useVariableInterpolator;
680
+ exports.useVariableValue = useVariableValue;
664
681
  exports.useVariableValues = useVariableValues;
665
682
  exports.useVariables = useVariables;
666
683
  //# sourceMappingURL=index.js.map
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 } 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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"}
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/hooks/useVariableValue.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 { 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"],"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","MultiValueVariable","dataLayers","SceneDataLayerSet","EmbeddedScene"],"mappings":";;;;;;;;;;;;;;;;;;AAAgB,SAAA,aAAA,CAAc,MAAgB,EAAA,OAAA,EAAA,GAAoB,IAAiB,EAAA;AACjF,EAAA,IAAI,cAAiB,GAAA,KAAA,CAAA;AAErB,EAAI,IAAA,OAAO,WAAW,WAAa,EAAA;AACjC,IAAiB,cAAA,GAAA,YAAA,CAAa,OAAQ,CAAA,sBAAsB,CAAM,KAAA,MAAA,CAAA;AAAA,GACpE;AAEA,EAAA,IAAI,cAAgB,EAAA;AAClB,IAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,EAAG,MAAY,CAAA,EAAA,CAAA,EAAA,OAAA,EAAS,GAAG,IAAI,CAAA,CAAA;AAAA,GAC7C;AACF;;;;;;;;;;;;;;;;;;;;;ACKO,MAAM,2BAA2BA,sBAAyC,CAAA;AAAA,EACxE,YAAY,KAA0C,EAAA;AAhB/D,IAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAiBI,IAAA,KAAA,CAAMC,qCACD,KADC,CAAA,EAAA;AAAA,MAEJ,QAAU,EAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,QAAP,KAAA,IAAA,GAAA,EAAA,GAAmB,EAAC;AAAA,MAC9B,aAAe,EAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,aAAP,KAAA,IAAA,GAAA,EAAA,GAAwB,EAAC;AAAA,KACzC,CAAA,CAAA,CAAA;AAAA,GACH;AAAA,EAEO,WAAW,GAAkB,EAAA;AAClC,IAAkBC,wBAAA,EAAA,CAAE,gBAAgB,GAAG,CAAA,CAAA;AAEvC,IAAK,IAAA,CAAA,QAAA,CAAS,EAAE,QAAA,EAAU,CAAC,GAAG,KAAK,KAAM,CAAA,QAAA,EAAU,GAAG,CAAA,EAAG,CAAA,CAAA;AACzD,IAAA,aAAA,CAAc,gBAAgB,CAAoB,iBAAA,EAAA,GAAA,CAAI,YAAY,IAAa,CAAA,MAAA,EAAA,GAAA,CAAI,MAAM,GAAK,CAAA,CAAA,CAAA,CAAA;AAE9F,IAAM,MAAA,UAAA,GAAa,IAAI,QAAS,EAAA,CAAA;AAEhC,IAAA,OAAO,MAAM;AACX,MAAA,aAAA,CAAc,gBAAgB,CAAwB,qBAAA,EAAA,GAAA,CAAI,YAAY,IAAa,CAAA,MAAA,EAAA,GAAA,CAAI,MAAM,GAAK,CAAA,CAAA,CAAA,CAAA;AAClG,MAAA,IAAA,CAAK,QAAS,CAAA,EAAE,QAAU,EAAA,IAAA,CAAK,KAAM,CAAA,QAAA,CAAS,MAAO,CAAA,CAAC,CAAM,KAAA,CAAA,KAAM,GAAG,CAAA,EAAG,CAAA,CAAA;AAExE,MAAW,UAAA,EAAA,CAAA;AAAA,KACb,CAAA;AAAA,GACF;AAAA,EAEO,UAAa,GAA4B,EAAA;AAC9C,IAAO,OAAA,IAAA,CAAK,MAAM,QAAS,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA,CAAA,CAAE,KAAM,CAAA,GAAA,KAAQ,GAAG,CAAA,CAAA;AAAA,GAC5D;AAAA,EAEO,aAAgB,IAA6B,EAAA;AAClD,IAAM,MAAA,SAAA,GAAY,KAAK,KAAM,CAAA,UAAA,CAAA;AAC7B,IAAA,IAAI,CAAC,SAAW,EAAA;AACd,MAAA,OAAA;AAAA,KACF;AAEA,IAAO,OAAA,SAAA,CAAU,UAAU,IAAI,CAAA,CAAA;AAAA,GACjC;AAAA,EAEO,YAAY,QAAyB,EAAA;AAC1C,IAAI,IAAA,GAAA,GAAM,KAAK,KAAM,CAAA,UAAA,CAAA;AAErB,IAAkBA,wBAAA,EAAA,CAAE,gBAAgB,QAAQ,CAAA,CAAA;AAE5C,IAAA,IAAI,GAAK,EAAA;AACP,MAAI,GAAA,CAAA,QAAA,CAAS,EAAE,SAAA,EAAW,CAAC,GAAG,IAAI,KAAM,CAAA,SAAA,EAAW,QAAQ,CAAA,EAAG,CAAA,CAAA;AAAA,KACzD,MAAA;AACL,MAAA,GAAA,GAAM,IAAIC,uBAAiB,CAAA,EAAE,WAAW,CAAC,QAAQ,GAAG,CAAA,CAAA;AACpD,MAAA,IAAA,CAAK,QAAS,CAAA,EAAE,UAAY,EAAA,GAAA,EAAK,CAAA,CAAA;AAAA,KACnC;AAEA,IAAA,aAAA,CAAc,gBAAgB,CAAoB,iBAAA,EAAA,QAAA,CAAS,YAAY,IAAa,CAAA,MAAA,EAAA,QAAA,CAAS,MAAM,GAAK,CAAA,CAAA,CAAA,CAAA;AAExG,IAAA,OAAO,MAAM;AACX,MAAA,GAAA,CAAI,QAAS,CAAA,EAAE,SAAW,EAAA,GAAA,CAAI,KAAM,CAAA,SAAA,CAAU,MAAO,CAAA,CAAC,CAAM,KAAA,CAAA,KAAM,QAAQ,CAAA,EAAG,CAAA,CAAA;AAC7E,MAAA,aAAA,CAAc,gBAAgB,CAAsB,mBAAA,EAAA,QAAA,CAAS,YAAY,IAAa,CAAA,MAAA,EAAA,QAAA,CAAS,MAAM,GAAK,CAAA,CAAA,CAAA,CAAA;AAAA,KAC5G,CAAA;AAAA,GACF;AAAA,EAEO,gBAAgB,GAAyB,EAAA;AAzElD,IAAA,IAAA,EAAA,CAAA;AA0EI,IAAA,IAAA,CAAK,QAAS,CAAA,EAAE,aAAe,EAAA,CAAC,GAAI,CAAA,EAAA,GAAA,IAAA,CAAK,KAAM,CAAA,aAAA,KAAX,IAA4B,GAAA,EAAA,GAAA,EAAK,EAAA,GAAG,GAAG,CAAA,CAAA;AAE3E,IAAA,aAAA,CAAc,gBAAgB,CAAyB,sBAAA,EAAA,GAAA,CAAI,YAAY,IAAa,CAAA,MAAA,EAAA,GAAA,CAAI,MAAM,GAAK,CAAA,CAAA,CAAA,CAAA;AAAA,GACrG;AAAA,EAEO,mBAAmB,GAAyB,EAAA;AA/ErD,IAAA,IAAA,EAAA,CAAA;AAgFI,IAAA,IAAA,CAAK,QAAS,CAAA;AAAA,MACZ,aAAA,EAAA,CAAe,UAAK,KAAM,CAAA,aAAA,KAAX,mBAA0B,MAAO,CAAA,CAAC,YAAY,GAAQ,KAAA,OAAA,CAAA;AAAA,KACtE,CAAA,CAAA;AAED,IAAA,aAAA,CAAc,gBAAgB,CAA2B,wBAAA,EAAA,GAAA,CAAI,YAAY,IAAa,CAAA,MAAA,EAAA,GAAA,CAAI,MAAM,GAAK,CAAA,CAAA,CAAA,CAAA;AAAA,GACvG;AACF;;AC3Ea,MAAA,YAAA,GAAeC,oBAAyC,IAAI,EAAA;AAqBlE,SAAS,oBAAqB,CAAA,EAAE,QAAU,EAAA,SAAA,EAAW,qBAAkD,EAAA;AAC5G,EAAM,MAAA,aAAA,GAAgBC,iBAAW,YAAY,CAAA,CAAA;AAC7C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIC,cAAyC,EAAA,CAAA;AAGjF,EAAA,MAAM,gBAAmB,GAAA,SAAA,CAAA;AAEzB,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAiC,GAAA,EAAE,QAAU,EAAA,EAAG,EAAA,CAAA;AAEtD,IAAA,IAAI,mBAAqB,EAAA;AACvB,MAAA,KAAA,CAAM,UAAa,GAAA,CAAC,IAAIC,gBAAA,CAAU,sBAAsB,CAAA,CAAA;AAAA,KAC1D;AAEA,IAAA,IAAI,gBAAkB,EAAA;AACpB,MAAM,KAAA,CAAA,UAAA,GAAa,IAAIC,qBAAA,CAAe,gBAAgB,CAAA,CAAA;AAAA,KACxD;AAEA,IAAMC,MAAAA,aAAAA,GAAe,IAAI,kBAAA,CAAmB,KAAK,CAAA,CAAA;AAEjD,IAAA,IAAI,aAAe,EAAA;AACjB,MAAkBR,wBAAA,EAAA,CAAE,gBAAgBQ,aAAY,CAAA,CAAA;AAChD,MAAA,aAAA,CAAc,gBAAgBA,aAAY,CAAA,CAAA;AAAA,KAC5C;AAEA,IAAM,MAAA,UAAA,GAAaA,cAAa,QAAS,EAAA,CAAA;AACzC,IAAA,eAAA,CAAgBA,aAAY,CAAA,CAAA;AAE5B,IAAA,OAAO,MAAM;AACX,MAAW,UAAA,EAAA,CAAA;AAEX,MAAA,IAAI,aAAe,EAAA;AACjB,QAAA,aAAA,CAAc,mBAAmBA,aAAY,CAAA,CAAA;AAAA,OAC/C;AAAA,KACF,CAAA;AAAA,GAEC,EAAA,CAAC,aAAe,EAAA,mBAAmB,CAAC,CAAA,CAAA;AAEvC,EAAA,IAAI,CAAC,YAAc,EAAA;AACjB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAM,MAAA,aAAA,mBAAiBC,yBAAA,CAAA,aAAA,CAAA,YAAA,CAAa,QAAb,EAAA;AAAA,IAAsB,KAAO,EAAA,YAAA;AAAA,GAAA,EAAe,QAAS,CAAA,CAAA;AAE5E,EAAA,IAAI,aAAe,EAAA;AACjB,IAAO,OAAA,aAAA,CAAA;AAAA,GACT;AAGA,EAAA,uBAAQA,yBAAA,CAAA,aAAA,CAAAC,6BAAA,EAAA;AAAA,IAAuB,KAAO,EAAA,YAAA;AAAA,GAAA,EAAe,aAAc,CAAA,CAAA;AACrE;;ACtEO,SAAS,eAAkB,GAAA;AAChC,EAAM,MAAA,KAAA,GAAQP,iBAAW,YAAY,CAAA,CAAA;AACrC,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAM,MAAA,IAAI,MAAM,4BAA4B,CAAA,CAAA;AAAA,GAC9C;AAEA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AAEO,SAAS,YAAgD,GAAA;AAC9D,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAM,MAAA,cAAA,GAAiBQ,iBAAW,CAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AACpD,EAAA,MAAM,EAAE,KAAA,EAAU,GAAA,cAAA,CAAe,QAAS,EAAA,CAAA;AAE1C,EAAO,OAAA,CAAC,OAAO,cAAc,CAAA,CAAA;AAC/B,CAAA;AAMO,SAAS,YAAgC,GAAA;AAC9C,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAM,MAAA,SAAA,GAAYA,iBAAW,CAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAC/C,EAAO,OAAA,SAAA,CAAU,UAAW,CAAA,SAAA,CAAA;AAC9B,CAAA;AAiBO,SAAS,0BAA0B,EAAE,SAAA,EAAW,SAAY,GAAA,IAAwC,EAAA;AACzG,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIP,cAA0C,EAAA,CAAA;AAElF,EAAAC,eAAA,CAAU,MAAM;AACd,IAAM,MAAA,aAAA,GAAgB,IAAIO,iBAAa,EAAA,CAAA;AAEvC,IAAI,IAAA,SAAA,IAAa,SAAU,CAAA,MAAA,GAAS,CAAG,EAAA;AACrC,MAAA,KAAA,MAAW,KAAK,SAAW,EAAA;AACzB,QAAA,MAAM,QAAW,GAAAD,iBAAA,CAAW,cAAe,CAAA,CAAA,EAAG,KAAK,CAAA,CAAA;AACnD,QAAA,IAAI,QAAU,EAAA;AACZ,UAAc,aAAA,CAAA,GAAA;AAAA,YACZ,QAAA,CAAS,gBAAiB,CAAAE,qCAAA,EAAgC,MAAM;AAC9D,cAAgB,eAAA,CAAA,EAAE,cAAc,QAAS,CAAA,KAAA,CAAM,MAAM,aAAe,EAAA,QAAA,CAAS,QAAS,EAAA,EAAG,CAAA,CAAA;AAAA,aAC1F,CAAA;AAAA,WACH,CAAA;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEA,IAAA,IAAI,SAAW,EAAA;AACb,MAAM,MAAA,EAAA,GAAKF,iBAAW,CAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AACxC,MAAG,EAAA,CAAA,gBAAA,CAAiB,CAAC,QAAA,EAAU,QAAa,KAAA;AAC1C,QAAI,IAAA,QAAA,CAAS,KAAU,KAAA,QAAA,CAAS,KAAO,EAAA;AACrC,UAAA,eAAA,CAAgB,EAAE,SAAA,EAAW,QAAS,CAAA,KAAA,EAAO,CAAA,CAAA;AAAA,SAC/C;AAAA,OACD,CAAA,CAAA;AAAA,KACH;AAEA,IAAO,OAAA,MAAM,cAAc,WAAY,EAAA,CAAA;AAAA,KAEtC,CAAC,KAAA,EAAO,SAAW,EAAA,GAAG,SAAS,CAAC,CAAA,CAAA;AAEnC,EAAO,OAAA,YAAA,CAAA;AACT,CAAA;AAKO,SAAS,wBAAwB,OAA2C,EAAA;AACjF,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAE9B,EAAA,yBAAA,CAA0B,OAAO,CAAA,CAAA;AAEjC,EAAO,OAAAG,iBAAA;AAAA,IACL,CAAC,GAAgB,KAAA;AACf,MAAO,OAAAH,iBAAA,CAAW,WAAY,CAAA,KAAA,EAAO,GAAG,CAAA,CAAA;AAAA,KAC1C;AAAA,IACA,CAAC,KAAK,CAAA;AAAA,GACR,CAAA;AACF;;ACrFO,SAAS,eAAe,OAA4C,EAAA;AACzE,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,MAAMI,WAAM,EAAA,CAAA;AAElB,EAAI,IAAA,WAAA,GAAc,KAAM,CAAA,SAAA,CAA4B,GAAG,CAAA,CAAA;AAEvD,EAAA,IAAI,CAAC,WAAa,EAAA;AAChB,IAAA,WAAA,GAAc,IAAIC,uBAAiB,CAAA;AAAA,MACjC,GAAA;AAAA,MACA,SAAS,OAAQ,CAAA,OAAA;AAAA,MACjB,eAAe,OAAQ,CAAA,aAAA;AAAA,MACvB,YAAY,OAAQ,CAAA,UAAA;AAAA,KACrB,CAAA,CAAA;AAAA,GACH;AAEA,EAAUX,eAAA,CAAA,MAAM,MAAM,UAAW,CAAA,WAAW,GAAG,CAAC,WAAA,EAAa,KAAK,CAAC,CAAA,CAAA;AAGnE,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAACY,cAAQ,CAAA,WAAA,CAAY,MAAM,OAAS,EAAA,OAAA,CAAQ,OAAO,CAAG,EAAA;AACxD,MAAA,WAAA,CAAY,QAAS,CAAA,EAAE,OAAS,EAAA,OAAA,CAAQ,SAAS,CAAA,CAAA;AACjD,MAAA,WAAA,CAAY,UAAW,EAAA,CAAA;AAAA,KACzB;AAAA,GACC,EAAA,CAAC,WAAa,EAAA,OAAO,CAAC,CAAA,CAAA;AAEzB,EAAO,OAAA,WAAA,CAAA;AACT;;AChCO,MAAM,0BAA0BnB,sBAAqE,CAAA;AAAA,EACnG,YAAY,KAA+B,EAAA;AAChD,IAAM,KAAA,CAAA;AAAA,MACJ,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,IAAM,EAAA,KAAA,CAAM,MAAO,CAAA,OAAA,GAAU,KAAM,CAAA,IAAA;AAAA,KACpC,CAAA,CAAA;AAED,IAAA,IAAA,CAAK,qBAAqB,MAAM;AAC9B,MAAA,IAAA,CAAK,KAAM,CAAA,GAAA;AAAA,QACT,IAAA,CAAK,MAAM,MAAO,CAAA,OAAA,GAAU,gBAAiB,CAAA,CAAC,UAAU,QAAa,KAAA;AACnE,UAAI,IAAA,QAAA,CAAS,IAAS,KAAA,QAAA,CAAS,IAAM,EAAA;AACnC,YAAA,IAAA,CAAK,QAAS,CAAA,EAAE,IAAM,EAAA,QAAA,CAAS,MAAM,CAAA,CAAA;AAAA,WACvC;AAAA,SACD,CAAA;AAAA,OACH,CAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEO,kBAAkB,KAAe,EAAA;AA/B1C,IAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAgCI,IAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,KAAM,CAAA,MAAA,CAAO,OAAQ,EAAA,EAAE,sBAA5B,IAAgD,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAA,CAAA,CAAA;AAAA,GAClD;AAAA,EAEO,oBAAuB,GAAA;AAnChC,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAoCI,IAAA,OAAA,CAAO,sBAAK,KAAM,CAAA,MAAA,CAAO,OAAQ,EAAA,EAAE,yBAA5B,IAAwD,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAA,IAAA,CAAA;AAAA,GACjE;AAAA,EAEO,WAAc,GAAA;AAvCvB,IAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAwCI,IAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,KAAM,CAAA,MAAA,CAAO,OAAQ,EAAA,EAAE,WAA5B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA;AAAA,GACF;AAAA,EAEO,gBAAwD,GAAA;AAC7D,IAAA,OAAO,IAAK,CAAA,KAAA,CAAM,MAAO,CAAA,OAAA,GAAU,gBAAiB,EAAA,CAAA;AAAA,GACtD;AACF;;AClCO,SAAS,mBAAmB,OAAoC,EAAA;AACrE,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,MAAMiB,WAAM,EAAA,CAAA;AAElB,EAAI,IAAA,eAAA,GAAkB,KAAM,CAAA,SAAA,CAAgC,GAAG,CAAA,CAAA;AAE/D,EAAA,IAAI,CAAC,eAAiB,EAAA;AACpB,IAAA,eAAA,GAAkB,IAAIG,2BAAqB,CAAA;AAAA,MACzC,GAAA;AAAA,MACA,KAAA,EAAO,IAAI,iBAAkB,CAAA,EAAE,QAAQ,OAAQ,CAAA,IAAA,CAAK,MAAO,EAAA,EAAG,CAAA;AAAA,MAC9D,iBAAiB,OAAQ,CAAA,eAAA;AAAA,KAC1B,CAAA,CAAA;AAAA,GACH;AAEA,EAAUb,eAAA,CAAA,MAAM,MAAM,UAAW,CAAA,eAAe,GAAG,CAAC,eAAA,EAAiB,KAAK,CAAC,CAAA,CAAA;AAE3E,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAACY,cAAQ,CAAA,eAAA,CAAgB,MAAM,eAAiB,EAAA,OAAA,CAAQ,eAAe,CAAG,EAAA;AAC5E,MAAA,eAAA,CAAgB,QAAS,CAAA,EAAE,eAAiB,EAAA,OAAA,CAAQ,iBAAiB,CAAA,CAAA;AACrE,MAAA,eAAA,CAAgB,wBAAyB,EAAA,CAAA;AAAA,KAC3C;AAAA,GACC,EAAA,CAAC,eAAiB,EAAA,OAAA,CAAQ,eAAe,CAAC,CAAA,CAAA;AAE7C,EAAO,OAAA,eAAA,CAAA;AACT;;AC9BO,SAAS,gBAAgB,KAAc,EAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,cAAc,CAAA,GAAI,YAAa,EAAA,CAAA;AAE7C,EAAA,uBACGR,yBAAA,CAAA,aAAA,CAAAU,kBAAA,EAAA;AAAA,IACC,UAAY,EAAA,IAAA;AAAA,IACZ,KAAA;AAAA,IACA,UAAU,cAAe,CAAA,iBAAA;AAAA,IACzB,QAAA,EAAU,eAAe,WAAY,EAAA;AAAA,IACrC,gBAAgB,MAAM;AAAA,KAAC;AAAA,IACvB,eAAe,MAAM;AAAA,KAAC;AAAA,IACtB,QAAQ,MAAM;AAAA,KAAC;AAAA,IACf,kBAAkB,MAAM;AAAA,KAAC;AAAA,IACzB,8BAA8B,MAAM;AAAA,KAAC;AAAA,GACvC,CAAA,CAAA;AAEJ;;ACZO,SAAS,eAAgB,CAAA,EAAE,IAAM,EAAA,SAAA,EAAW,QAAiB,EAAA;AAClE,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,QAAW,GAAAR,iBAAA,CAAW,cAAe,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAEtD,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAA,uBAAQF,yBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA,EAAI,WAAU,EAAA,IAAA,EAAK,YAAU,CAAA,CAAA;AAAA,GACvC;AAEA,EAAA,uBACGA,yBAAA,CAAA,aAAA,CAAAW,iCAAA,EAAA;AAAA,IAA2B,GAAA,EAAK,SAAS,KAAM,CAAA,GAAA;AAAA,IAAK,QAAA;AAAA,IAAoB,SAAA;AAAA,IAAsB,MAAA;AAAA,GAAgB,CAAA,CAAA;AAEnH;;ACAO,SAAS,SAAS,KAAsB,EAAA;AAC7C,EAAA,MAAM,EAAE,KAAA,EAAO,GAAK,EAAA,YAAA,EAAc,eAAkB,GAAA,KAAA,CAAA;AACpD,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,MAAML,WAAM,EAAA,CAAA;AAClB,EAAM,MAAA,SAAA,GAAYM,qBAAY,KAAK,CAAA,CAAA;AAEnC,EAAI,IAAA,KAAA,GAAQ,KAAM,CAAA,SAAA,CAA0B,GAAG,CAAA,CAAA;AAE/C,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAA,KAAA,GAAQ,IAAIC,eAAe,CAAA;AAAA,MACzB,GAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAU,GAAI,CAAA,QAAA;AAAA,MACd,eAAe,GAAI,CAAA,aAAA;AAAA,MACnB,SAAS,GAAI,CAAA,OAAA;AAAA,MACb,aAAa,GAAI,CAAA,WAAA;AAAA,MACjB,KAAA,EAAO,2BAA2B,YAAY,CAAA;AAAA,MAC9C,aAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAEA,EAAUjB,eAAA,CAAA,MAAM,MAAM,UAAW,CAAA,KAAK,GAAG,CAAC,KAAA,EAAO,KAAK,CAAC,CAAA,CAAA;AAGvD,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,cAAsC,EAAC,CAAA;AAE7C,IAAA,IAAI,CAAC,SAAW,EAAA;AACd,MAAA,OAAA;AAAA,KACF;AAEA,IAAI,IAAA,KAAA,KAAU,UAAU,KAAO,EAAA;AAC7B,MAAA,WAAA,CAAY,KAAQ,GAAA,KAAA,CAAA;AAAA,KACtB;AAEA,IAAI,IAAA,aAAA,KAAkB,UAAU,aAAe,EAAA;AAC7C,MAAA,WAAA,CAAY,aAAgB,GAAA,aAAA,CAAA;AAAA,KAC9B;AAEA,IAAI,IAAA,YAAA,KAAiB,UAAU,YAAc,EAAA;AAC3C,MAAY,WAAA,CAAA,KAAA,GAAQ,2BAA2B,YAAY,CAAA,CAAA;AAAA,KAC7D;AAEA,IAAI,IAAA,GAAA,KAAQ,UAAU,GAAK,EAAA;AACzB,MAAA,IAAI,GAAI,CAAA,QAAA,KAAa,SAAU,CAAA,GAAA,CAAI,QAAU,EAAA;AAC3C,QAAM,MAAA,MAAA,GAAS,MAAM,SAAU,EAAA,CAAA;AAC/B,QAAA,IAAI,MAAQ,EAAA;AACV,UAAA,MAAM,sBAAsBkB,gCAA4B,CAAA;AAAA,YACtD,MAAA;AAAA,YACA,gBAAgB,GAAI,CAAA,OAAA;AAAA,YACpB,oBAAoB,GAAI,CAAA,WAAA;AAAA,YACxB,mBAAqB,EAAA,KAAA;AAAA,WACtB,CAAA,CAAA;AACD,UAAA,WAAA,CAAY,UAAU,mBAAoB,CAAA,OAAA,CAAA;AAC1C,UAAA,WAAA,CAAY,cAAc,mBAAoB,CAAA,WAAA,CAAA;AAE9C,UAAA,KAAA,CAAM,qBAAsB,EAAA,CAAA;AAAA,SAC9B;AAAA,OACF;AAAA,KACF;AAEA,IAAA,IAAI,MAAO,CAAA,IAAA,CAAK,WAAW,CAAA,CAAE,SAAS,CAAG,EAAA;AACvC,MAAA,KAAA,CAAM,SAAS,WAAW,CAAA,CAAA;AAC1B,MAAc,aAAA,CAAA,UAAA,EAAY,2BAA2B,WAAW,CAAA,CAAA;AAAA,KAClE;AAAA,GACF,EAAG,CAAC,KAAO,EAAA,KAAA,EAAO,eAAe,GAAK,EAAA,YAAA,EAAc,SAAS,CAAC,CAAA,CAAA;AAE9D,EAAO,uBAAAd,yBAAA,CAAA,aAAA,CAAC,MAAM,SAAN,EAAA;AAAA,IAAgB,KAAO,EAAA,KAAA;AAAA,GAAO,CAAA,CAAA;AACxC,CAAA;AAOA,SAAS,2BAA2B,IAAoE,EAAA;AACtG,EAAA,IAAI,gBAAgBO,uBAAkB,EAAA;AACpC,IAAA,OAAO,IAAI,iBAAkB,CAAA,EAAE,QAAQ,IAAK,CAAA,MAAA,IAAU,CAAA,CAAA;AAAA,GACxD;AACA,EAAO,OAAA,IAAA,CAAA;AACT;;;;;;;;;;;;;;;;;;AC3FO,SAAS,cAAc,KAAc,EAAA;AAC1C,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,MAAMD,WAAM,EAAA,CAAA;AAClB,EAAM,MAAA,SAAA,GAAYM,qBAAY,KAAK,CAAA,CAAA;AAEnC,EAAI,IAAA,MAAA,GAAS,KAAM,CAAA,SAAA,CAA8B,GAAG,CAAA,CAAA;AAEpD,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAA,MAAA,GAAS,IAAIG,yBAAmB,CAAAC,gBAAA,CAAA;AAAA,MAC9B,GAAA;AAAA,KAAA,EACG,KACJ,CAAA,CAAA,CAAA;AAAA,GACH;AAEA,EAAUpB,eAAA,CAAA,MAAM,MAAM,UAAW,CAAA,MAAM,GAAG,CAAC,MAAA,EAAQ,KAAK,CAAC,CAAA,CAAA;AAGzD,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,cAAgD,EAAC,CAAA;AAEvD,IAAA,IAAI,CAAC,SAAW,EAAA;AACd,MAAA,OAAA;AAAA,KACF;AAEA,IAAI,IAAA,KAAA,CAAM,OAAY,KAAA,SAAA,CAAU,OAAS,EAAA;AACvC,MAAA,WAAA,CAAY,UAAU,KAAM,CAAA,OAAA,CAAA;AAAA,KAC9B;AAEA,IAAI,IAAA,KAAA,CAAM,QAAa,KAAA,SAAA,CAAU,QAAU,EAAA;AACzC,MAAA,WAAA,CAAY,WAAW,KAAM,CAAA,QAAA,CAAA;AAAA,KAC/B;AAEA,IAAA,MAAA,CAAO,SAAS,WAAW,CAAA,CAAA;AAAA,GAC1B,EAAA,CAAC,MAAQ,EAAA,KAAA,EAAO,SAAS,CAAC,CAAA,CAAA;AAE7B,EAAO,uBAAAI,yBAAA,CAAA,aAAA,CAAC,OAAO,SAAP,EAAA;AAAA,IAAiB,KAAO,EAAA,MAAA;AAAA,GAAQ,CAAA,CAAA;AAC1C;;ACtCgB,SAAA,gBAAA,CAAiB,EAAE,IAAA,EAAe,EAAA;AAChD,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAM,MAAA,SAAA,GAAYE,iBAAW,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAEhD,EAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,SAAA,EAAW,IAAI,CAAA,CAAA;AAEtC,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAA,uBAAQF,yBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA,EAAI,aAAY,EAAA,IAAA,EAAK,YAAU,CAAA,CAAA;AAAA,GACzC;AAEA,EAAO,uBAAAA,yBAAA,CAAA,aAAA,CAAC,MAAM,SAAN,EAAA;AAAA,IAAgB,KAAO,EAAA,KAAA;AAAA,GAAO,CAAA,CAAA;AACxC,CAAA;AAEA,SAAS,QAAA,CAAS,QAAkC,IAAkD,EAAA;AACpG,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,MAAA,CAAO,QAAQ,CAAK,EAAA,EAAA;AACtC,IAAM,MAAA,KAAA,GAAS,MAAO,CAAA,CAAA,CAAA,CAAyB,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,CAACiB,MAAUA,KAAAA,MAAAA,CAAM,KAAM,CAAA,IAAA,KAAS,IAAI,CAAA,CAAA;AAErG,IAAA,IAAI,KAAO,EAAA;AACT,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAAA,GACF;AAEA,EAAO,OAAA,KAAA,CAAA,CAAA;AACT;;ACnBO,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,GAAItB,cAAkB,EAAA,CAAA;AAE5D,EAAI,IAAA,QAAA,GAA6C,KAAM,CAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAExE,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAW,QAAA,GAAA,IAAIuB,qBAAqB,CAAA,EAAE,IAAM,EAAA,KAAA,EAAO,KAAO,EAAA,KAAA,EAAO,YAAc,EAAA,OAAA,EAAS,UAAY,EAAA,IAAA,EAAK,CAAA,CAAA;AAAA,GAC3G;AAEA,EAAAtB,eAAA,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,EAAAA,eAAA,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;;ACjCO,MAAM,oBAAoBH,mBAAsC,CAAA;AAAA,EACrE,aAAa,EAAC;AAAA,EACd,eAAe,MAAM;AAAA,GAAC;AAAA,EACtB,kBAAkB,MAAM;AAAA,GAAC;AAC3B,CAAC,EAAA;AAEe,SAAA,kBAAA,CAAmB,EAAE,QAAA,EAA2C,EAAA;AAC9E,EAAA,MAAM,CAAC,WAAa,EAAA,cAAc,CAAI,GAAAE,cAAA,CAA2B,EAAE,CAAA,CAAA;AAEnE,EACE,uBAAAK,yBAAA,CAAA,aAAA,CAAC,kBAAkB,QAAlB,EAAA;AAAA,IACC,KAAO,EAAA;AAAA,MACL,WAAA;AAAA,MACA,aAAe,EAAAK,iBAAA,CAAY,CAAC,UAAA,KAA+B,eAAe,CAAC,IAAA,KAAS,CAAC,GAAG,IAAM,EAAA,UAAU,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,MAC9G,gBAAkB,EAAAA,iBAAA;AAAA,QAChB,CAAC,UAAA,KAA+B,cAAe,CAAA,CAAC,IAAS,KAAA,IAAA,CAAK,MAAO,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,GAAQ,KAAA,UAAA,CAAW,GAAG,CAAC,CAAA;AAAA,QACrG,EAAC;AAAA,OACH;AAAA,KACF;AAAA,GAAA,EAEC,QACH,CAAA,CAAA;AAEJ,CAAA;AAQO,SAAS,UAAW,CAAA,EAAE,IAAM,EAAA,IAAA,EAAM,WAA+C,EAAA;AACtF,EAAA,MAAM,EAAE,aAAA,EAAe,gBAAiB,EAAA,GAAIX,iBAAW,iBAAiB,CAAA,CAAA;AAExE,EAAA,MAAM,WAAW,aAAc,EAAA,CAAA;AAE/B,EAAAE,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAa,GAAA;AAAA,MACjB,IAAA;AAAA,MACA,GAAA,EAAK,QAAS,CAAA,IAAA,EAAM,SAAS,CAAA;AAAA,KAC/B,CAAA;AAEA,IAAA,aAAA,CAAc,UAAU,CAAA,CAAA;AAExB,IAAA,OAAO,MAAM;AACX,MAAA,gBAAA,CAAiB,UAAU,CAAA,CAAA;AAAA,KAC7B,CAAA;AAAA,GACF,EAAG,CAAC,IAAM,EAAA,IAAA,EAAM,WAAW,aAAe,EAAA,QAAA,EAAU,gBAAgB,CAAC,CAAA,CAAA;AAErE,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEA,SAAS,aAAgB,GAAA;AACvB,EAAM,MAAA,WAAA,GAAc,gBAAiB,CAAA,CAAA,CAAA,CAAA;AACrC,EAAA,MAAM,YAAY,YAAa,EAAA,CAAA;AAC/B,EAAA,MAAM,CAAC,CAAA,EAAG,SAAS,CAAA,GAAI,YAAa,EAAA,CAAA;AAEpC,EAAO,OAAAS,iBAAA;AAAA,IACL,CAAC,SAAiB,SAAoC,KAAA;AACpD,MAAA,MAAM,SAAsB,EAAC,CAAA;AAE7B,MAAA,KAAA,MAAW,KAAK,SAAW,EAAA;AACzB,QAAA,IAAI,CAAE,CAAA,OAAA,IAAW,CAAC,CAAA,CAAE,MAAM,WAAa,EAAA;AACrC,UAAM,MAAA,KAAA,GAAQ,CAAE,CAAA,OAAA,CAAQ,WAAY,EAAA,CAAA;AACpC,UAAO,MAAA,CAAA,MAAA,CAAO,QAAQ,KAAK,CAAA,CAAA;AAAA,SAC7B;AAAA,OACF;AAEA,MAAA,IAAI,UAAU,OAAS,EAAA;AACrB,QAAM,MAAA,KAAA,GAAQ,SAAU,CAAA,OAAA,CAAQ,WAAY,EAAA,CAAA;AAC5C,QAAO,MAAA,CAAA,MAAA,CAAO,QAAQ,KAAK,CAAA,CAAA;AAAA,OAC7B;AAEA,MAAA,IAAI,SAAW,EAAA;AACb,QAAA,KAAA,MAAW,SAAS,SAAW,EAAA;AAC7B,UAAA,IAAI,YAAY,KAAQ,CAAA,EAAA;AACtB,YAAA,MAAA,CAAO,SAAS,WAAY,CAAA,KAAA,CAAA,CAAA;AAAA,WAC9B;AAAA,SACF;AAAA,OACF;AAEA,MAAO,OAAAc,YAAA,CAAQ,SAAU,CAAA,OAAA,EAAS,MAAM,CAAA,CAAA;AAAA,KAC1C;AAAA,IACA,CAAC,SAAW,EAAA,WAAA,EAAa,SAAS,CAAA;AAAA,GACpC,CAAA;AACF,CAAA;AAEA,SAAS,cAAkF,GAAA;AACzF,EAAM,MAAA,EAAE,MAAO,EAAA,GAAIC,0BAAY,EAAA,CAAA;AAC/B,EAAM,MAAA,WAAA,GAAcC,cAAQ,MAAMC,8BAAA,CAAuB,UAAU,EAAE,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA,CAAA;AAChF,EAAM,MAAA,MAAA,GAASjB,iBAAY,CAAA,CAAC,MAAqB,EAAA,OAAA,KAAsBkB,uBAAgB,CAAA,OAAA,CAAQ,MAAQ,EAAA,OAAO,CAAG,EAAA,EAAE,CAAA,CAAA;AACnH,EAAO,OAAA,CAAC,aAAa,MAAM,CAAA,CAAA;AAC7B;;AC7GO,SAAS,kBAA2C,IAA0C,EAAA;AACnG,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,QAAW,GAAArB,iBAAA,CAAW,cAAe,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAEtD,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAO,OAAA,CAAC,QAAW,KAAK,CAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,QAAA,CAAS,QAAS,EAAA,CAAA;AAElB,EAAA,MAAM,MAAM,QAAS,CAAA,MAAA,CAAA;AACrB,EAAM,MAAA,SAAA,GAAY,GAAI,CAAA,kCAAA,CAAmC,QAAQ,CAAA,CAAA;AACjE,EAAI,IAAA,KAAA,GAAQ,SAAS,QAAS,EAAA,CAAA;AAE9B,EAAA,IAAI,SAAS,IAAM,EAAA;AACjB,IAAO,OAAA,CAAC,QAAW,SAAS,CAAA,CAAA;AAAA,GAC9B;AAEA,EAAA,IAAI,CAAC,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACzB,IAAA,KAAA,GAAQ,CAAC,KAAK,CAAA,CAAA;AAAA,GAChB;AAEA,EAAO,OAAA,CAAC,OAAc,SAAS,CAAA,CAAA;AACjC;;ACvBO,SAAS,iBAA0C,IAAwC,EAAA;AAChG,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,QAAW,GAAAA,iBAAA,CAAW,cAAe,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAEtD,EAAA,IAAI,CAAC,QAAa,IAAA,QAAA,YAAoBsB,6BAAsB,QAAS,CAAA,KAAA,CAAM,YAAY,IAAO,EAAA;AAC5F,IAAO,OAAA,CAAC,QAAW,KAAK,CAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,QAAA,CAAS,QAAS,EAAA,CAAA;AAElB,EAAA,MAAM,MAAM,QAAS,CAAA,MAAA,CAAA;AACrB,EAAM,MAAA,SAAA,GAAY,GAAI,CAAA,kCAAA,CAAmC,QAAQ,CAAA,CAAA;AACjE,EAAI,IAAA,KAAA,GAAQ,SAAS,QAAS,EAAA,CAAA;AAE9B,EAAA,IAAI,SAAS,IAAM,EAAA;AACjB,IAAO,OAAA,CAAC,QAAW,SAAS,CAAA,CAAA;AAAA,GAC9B;AAEA,EAAO,OAAA,CAAC,OAAY,SAAS,CAAA,CAAA;AAC/B;;ACTO,SAAS,eAAgB,CAAA,EAAE,IAAM,EAAA,KAAA,EAAO,UAAsD,EAAA;AACnG,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI7B,cAAkB,EAAA,CAAA;AAEhE,EAAI,IAAA,UAAA,GAA0D,mBAAoB,CAAA,KAAA,EAAO,IAAI,CAAA,CAAA;AAE7F,EAAA,IAAI,CAAC,UAAY,EAAA;AACf,IAAA,UAAA,GAAa,IAAI8B,iBAAW,CAAA,oBAAA,CAAqB,EAAE,IAAA,EAAM,OAAO,CAAA,CAAA;AAAA,GAClE;AAEA,EAAA7B,eAAA,CAAU,MAAM;AACd,IAAM,MAAA,QAAA,GAAW,kBAAmB,CAAA,KAAA,EAAO,UAAU,CAAA,CAAA;AACrD,IAAA,kBAAA,CAAmB,IAAI,CAAA,CAAA;AACvB,IAAO,OAAA,QAAA,CAAA;AAAA,GACN,EAAA,CAAC,KAAO,EAAA,IAAA,EAAM,UAAU,CAAC,CAAA,CAAA;AAE5B,EAAAA,eAAA,CAAU,MAAM;AAAA,GAEhB,EAAG,CAAC,eAAe,CAAC,CAAA,CAAA;AAEpB,EAAA,IAAI,CAAC,eAAiB,EAAA;AACpB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,QAAA,CAAA;AACT,CAAA;AAEA,SAAS,mBAAA,CAAuB,OAA2B,IAA6B,EAAA;AACtF,EAAM,MAAA,WAAA,GAAc,MAAM,KAAM,CAAA,KAAA,CAAA;AAEhC,EAAA,IAAI,CAAC,WAAa,EAAA;AAChB,IAAA,OAAA;AAAA,GACF;AAEA,EAAO,OAAA,WAAA,CAAY,MAAM,MAAO,CAAA,IAAA,CAAK,CAAC,IAAS,KAAA,IAAA,CAAK,KAAM,CAAA,IAAA,KAAS,IAAI,CAAA,CAAA;AACzE,CAAA;AAEA,SAAS,kBAAA,CAAmB,OAA2B,KAAwC,EAAA;AAC7F,EAAI,IAAA,GAAA,GAAM,MAAM,KAAM,CAAA,KAAA,CAAA;AAEtB,EAAA,IAAI,GAAK,EAAA;AACP,IAAI,GAAA,CAAA,QAAA,CAAS,EAAE,MAAA,EAAQ,CAAC,GAAG,IAAI,KAAM,CAAA,MAAA,EAAQ,KAAK,CAAA,EAAG,CAAA,CAAA;AAAA,GAChD,MAAA;AACL,IAAA,GAAA,GAAM,IAAI8B,wBAAkB,CAAA,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAA,CAAA;AAC/C,IAAA,KAAA,CAAM,QAAS,CAAA,EAAE,KAAO,EAAA,GAAA,EAAK,CAAA,CAAA;AAAA,GAC/B;AAEA,EAAA,aAAA,CAAc,gBAAgB,CAAiC,8BAAA,EAAA,KAAA,CAAM,MAAM,IAAa,CAAA,MAAA,EAAA,KAAA,CAAM,MAAM,GAAK,CAAA,CAAA,CAAA,CAAA;AAEzG,EAAA,OAAO,MAAM;AACX,IAAA,GAAA,CAAI,QAAS,CAAA,EAAE,MAAQ,EAAA,GAAA,CAAI,KAAM,CAAA,MAAA,CAAO,MAAO,CAAA,CAAC,CAAM,KAAA,CAAA,KAAM,KAAK,CAAA,EAAG,CAAA,CAAA;AACpE,IAAA,aAAA,CAAc,gBAAgB,CAAmC,gCAAA,EAAA,KAAA,CAAM,MAAM,IAAa,CAAA,MAAA,EAAA,KAAA,CAAM,MAAM,GAAK,CAAA,CAAA,CAAA,CAAA;AAAA,GAC7G,CAAA;AACF;;;;;;;;;;;;;;;;;;;;;AC7DO,MAAM,iCAAiCC,oBAAc,CAAA;AAAA,EACnD,YAAY,KAA2B,EAAA;AAC5C,IAAA,KAAA,CAAM,iCAAK,KAAL,CAAA,EAAA,EAAY,SAAS,IAAI,kBAAA,IAAsB,CAAA,CAAA,CAAA;AAAA,GACvD;AASF,CAAA;AAZa,wBAAA,CAKG,SAAY,GAAA,CAAC,EAAE,KAAA,EAA2D,KAAA;AACtF,EACE,uBAAA3B,yBAAA,CAAA,aAAA,CAAC,aAAa,QAAb,EAAA;AAAA,IAAsB,KAAA,EAAO,MAAM,KAAM,CAAA,OAAA;AAAA,GACxC,kBAAAA,yBAAA,CAAA,aAAA,CAAC2B,qBAAc,SAAd,EAAA;AAAA,IAAwB,KAAA;AAAA,GAAc,CACzC,CAAA,CAAA;AAEJ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grafana/scenes-react",
3
- "version": "5.6.1",
3
+ "version": "5.6.2--canary.844.10073621961.0",
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.6.1",
41
+ "@grafana/scenes": "5.6.2--canary.844.10073621961.0",
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": "332af4f5cd23df8df8eba842633a68c23ab4f5dc"
115
+ "gitHead": "d37a040ab371c29deedf87e36bdc8169f696863a"
116
116
  }