@grafana/scenes 6.10.4--canary.1118.14886789462.0 → 6.11.0--canary.1121.15019988505.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.
Files changed (37) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/esm/behaviors/SceneRenderProfiler.js.map +1 -1
  3. package/dist/esm/components/SceneApp/SceneApp.js +2 -2
  4. package/dist/esm/components/SceneApp/SceneApp.js.map +1 -1
  5. package/dist/esm/components/SceneApp/SceneAppPage.js +2 -18
  6. package/dist/esm/components/SceneApp/SceneAppPage.js.map +1 -1
  7. package/dist/esm/components/SceneTimePicker.js +3 -2
  8. package/dist/esm/components/SceneTimePicker.js.map +1 -1
  9. package/dist/esm/core/sceneGraph/index.js +2 -2
  10. package/dist/esm/core/sceneGraph/index.js.map +1 -1
  11. package/dist/esm/core/sceneGraph/sceneGraph.js +9 -5
  12. package/dist/esm/core/sceneGraph/sceneGraph.js.map +1 -1
  13. package/dist/esm/index.js +1 -1
  14. package/dist/esm/index.js.map +1 -1
  15. package/dist/esm/querying/SceneQueryRunner.js +10 -33
  16. package/dist/esm/querying/SceneQueryRunner.js.map +1 -1
  17. package/dist/esm/variables/VariableDependencyConfig.js +4 -1
  18. package/dist/esm/variables/VariableDependencyConfig.js.map +1 -1
  19. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js +19 -18
  20. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
  21. package/dist/esm/variables/components/VariableValueSelectors.js +3 -0
  22. package/dist/esm/variables/components/VariableValueSelectors.js.map +1 -1
  23. package/dist/esm/variables/constants.js +2 -1
  24. package/dist/esm/variables/constants.js.map +1 -1
  25. package/dist/esm/variables/groupby/GroupByVariable.js +2 -2
  26. package/dist/esm/variables/groupby/GroupByVariable.js.map +1 -1
  27. package/dist/esm/variables/sets/SceneVariableSet.js +10 -7
  28. package/dist/esm/variables/sets/SceneVariableSet.js.map +1 -1
  29. package/dist/esm/variables/types.js.map +1 -1
  30. package/dist/esm/variables/variants/ScopesVariable.js +80 -0
  31. package/dist/esm/variables/variants/ScopesVariable.js.map +1 -0
  32. package/dist/index.d.ts +55 -51
  33. package/dist/index.js +113 -151
  34. package/dist/index.js.map +1 -1
  35. package/package.json +2 -2
  36. package/dist/esm/core/SceneScopesBridge.js +0 -93
  37. package/dist/esm/core/SceneScopesBridge.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  import * as _grafana_data from '@grafana/data';
2
- import { BusEventWithPayload, EventBus, BusEvent, BusEventType, BusEventHandler, PanelMenuItem, FieldConfigSource, PanelPlugin, AbsoluteTimeRange, PanelData, InterpolateFunction, PanelModel, TimeRange, DataTransformContext, DataFrame, DataQueryRequest, DataSourceGetTagKeysOptions, DataSourceGetTagValuesOptions, Scope, IconName, PageLayoutType, UrlQueryMap, DataQuery as DataQuery$1, DataSourceApi, Registry, RegistryItem, ScopedVars, AdHocVariableFilter, GetTagResponse, MetricFindValue, SelectableValue, VariableRefresh as VariableRefresh$1, VariableSort, EventFilterOptions, AnnotationEvent, AnnotationQuery, DataTransformerConfig, TimeOption, FieldConfig, FieldType, FieldValueMatcherConfig, ScopedVar, RawTimeRange } from '@grafana/data';
2
+ import { BusEventWithPayload, EventBus, BusEvent, BusEventType, BusEventHandler, PanelMenuItem, FieldConfigSource, PanelPlugin, AbsoluteTimeRange, PanelData, InterpolateFunction, PanelModel, TimeRange, DataTransformContext, DataFrame, DataQueryRequest, DataSourceGetTagKeysOptions, DataSourceGetTagValuesOptions, IconName, PageLayoutType, UrlQueryMap, DataQuery as DataQuery$1, DataSourceApi, Registry, RegistryItem, ScopedVars, AdHocVariableFilter, GetTagResponse, MetricFindValue, SelectableValue, VariableRefresh as VariableRefresh$1, VariableSort, Scope, EventFilterOptions, AnnotationEvent, AnnotationQuery, DataTransformerConfig, TimeOption, FieldConfig, FieldType, FieldValueMatcherConfig, ScopedVar, RawTimeRange } from '@grafana/data';
3
3
  import * as React$1 from 'react';
4
- import React__default, { ComponentType, CSSProperties, PointerEvent, ForwardRefExoticComponent } from 'react';
4
+ import React__default, { ComponentType, ReactNode, CSSProperties, PointerEvent, ForwardRefExoticComponent } from 'react';
5
5
  import * as rxjs from 'rxjs';
6
6
  import { Observable, Subscription, Unsubscribable, MonoTypeOperatorFunction, ReplaySubject } from 'rxjs';
7
7
  import * as _grafana_schema from '@grafana/schema';
8
8
  import { VariableType, VariableHide, TimeZone, DataQuery, DataTopic, DataSourceRef, VariableRefresh, LoadingState, DashboardCursorSync, MatcherConfig, TableFieldOptions } from '@grafana/schema';
9
9
  import { PanelContext, WeekStart, IconName as IconName$1 } from '@grafana/ui';
10
- import { ScopesContextValue, LocationService, VariableInterpolation } from '@grafana/runtime';
10
+ import { LocationService, VariableInterpolation, ScopesContextValue } from '@grafana/runtime';
11
11
  import { Location } from 'history';
12
12
  import ReactGridLayout from 'react-grid-layout';
13
13
  import { Options, FieldConfig as FieldConfig$1 } from '@grafana/schema/dist/esm/raw/composable/barchart/panelcfg/x/BarChartPanelCfg_types.gen';
@@ -63,6 +63,10 @@ interface SceneVariable<TState extends SceneVariableState = SceneVariableState>
63
63
  * Allows cancelling variable execution.
64
64
  */
65
65
  onCancel?(): void;
66
+ /**
67
+ * Edge case for variables that is hidden but wants to be render to access react contexts (ScopesVariable)
68
+ */
69
+ hiddenRender?(): React.ReactNode;
66
70
  /**
67
71
  * @experimental
68
72
  * Indicates that a variable loads values lazily when user interacts with the variable dropdown.
@@ -275,6 +279,10 @@ interface VariableDependencyConfigOptions<TState extends SceneObjectState> {
275
279
  * Handle time macros.
276
280
  */
277
281
  handleTimeMacros?: boolean;
282
+ /**
283
+ * Depends on scopes
284
+ */
285
+ dependsOnScopes?: boolean;
278
286
  }
279
287
  declare class VariableDependencyConfig<TState extends SceneObjectState> implements SceneVariableDependencyConfigLike {
280
288
  private _sceneObject;
@@ -650,36 +658,6 @@ declare class EmbeddedScene extends SceneObjectBase<EmbeddedSceneState> {
650
658
  }
651
659
  declare function EmbeddedSceneRenderer({ model }: SceneComponentProps<EmbeddedScene>): React__default.JSX.Element;
652
660
 
653
- declare class SceneScopesBridge extends SceneObjectBase {
654
- static Component: typeof SceneScopesBridgeRenderer;
655
- protected _renderBeforeActivation: boolean;
656
- private _contextSubject;
657
- getValue(): Scope[];
658
- /**
659
- * Emits values of the selected scopes array. It emits the current value and the previous value if there is a change.
660
- * @param cb
661
- */
662
- subscribeToValue(cb: (newScopes: Scope[], prevScopes: Scope[]) => void): Unsubscribable;
663
- isLoading(): boolean;
664
- subscribeToLoading(cb: (loading: boolean) => void): Unsubscribable;
665
- setEnabled(enabled: boolean): void;
666
- setReadOnly(readOnly: boolean): void;
667
- /**
668
- * This method is used to keep the context up to date with the scopes context received from React
669
- *
670
- * Its rationale is:
671
- * - When a new context is available, check if we have pending scopes passed from the URL
672
- * - If we have pending scopes, ask the new context to load them
673
- * - The loading should happen in a setTimeout to allow the existing context to pass its values to the URL sync handler
674
- * - If a new context is received, propagate it as a new value in the behavior subject
675
- * - If a new value is received, force a re-render to trigger the URL sync handler
676
- */
677
- updateContext(newContext: ScopesContextValue | undefined): void;
678
- private get context();
679
- private get contextObservable();
680
- }
681
- declare function SceneScopesBridgeRenderer({ model }: SceneComponentProps<SceneScopesBridge>): null;
682
-
683
661
  interface SceneRouteMatch<Params extends {
684
662
  [K in keyof Params]?: string;
685
663
  } = {}> {
@@ -692,7 +670,6 @@ interface SceneAppState extends SceneObjectState {
692
670
  pages: SceneAppPageLike[];
693
671
  name?: string;
694
672
  urlSyncOptions?: SceneUrlSyncOptions;
695
- scopesBridge?: SceneScopesBridge;
696
673
  }
697
674
  interface SceneAppRoute {
698
675
  path: string;
@@ -737,7 +714,6 @@ interface SceneAppPageState extends SceneObjectState {
737
714
  */
738
715
  getFallbackPage?: () => SceneAppPageLike;
739
716
  layout?: PageLayoutType;
740
- useScopes?: boolean;
741
717
  }
742
718
  interface SceneAppPageLike extends SceneObject<SceneAppPageState>, DataRequestEnricher {
743
719
  initializeScene(scene: SceneObject): void;
@@ -965,8 +941,9 @@ declare class AdHocFiltersVariable extends SceneObjectBase<AdHocFiltersVariableS
965
941
  static Component: typeof AdHocFiltersVariableRenderer;
966
942
  private _scopedVars;
967
943
  private _dataSourceSrv;
968
- private _scopesBridge;
969
944
  private _originalValues;
945
+ /** Needed for scopes dependency */
946
+ protected _variableDependency: VariableDependencyConfig<AdHocFiltersVariableState>;
970
947
  protected _urlSync: AdHocFiltersVariableUrlSyncHandler;
971
948
  constructor(state: Partial<AdHocFiltersVariableState>);
972
949
  private _activationHandler;
@@ -1219,7 +1196,6 @@ declare class GroupByVariable extends MultiValueVariable<GroupByVariableState> {
1219
1196
  static Component: typeof GroupByVariableRenderer;
1220
1197
  isLazy: boolean;
1221
1198
  protected _urlSync: SceneObjectUrlSyncHandler;
1222
- private _scopesBridge;
1223
1199
  validateAndUpdate(): Observable<ValidateAndUpdateResult>;
1224
1200
  private _updateValueGivenNewOptions;
1225
1201
  getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]>;
@@ -1416,9 +1392,9 @@ declare function getAncestor<ParentType>(sceneObject: SceneObject, ancestorType:
1416
1392
  */
1417
1393
  declare function findDescendents<T extends SceneObject>(scene: SceneObject, descendentType: SceneType<T>): T[];
1418
1394
  /**
1419
- * Will walk up the scene object graph to the closest $scopesBridge scene object
1395
+ * Will return the scopes from the scopes variable if available.
1420
1396
  */
1421
- declare function getScopesBridge(sceneObject: SceneObject): SceneScopesBridge | undefined;
1397
+ declare function getScopes(sceneObject: SceneObject): Scope[] | undefined;
1422
1398
 
1423
1399
  declare const sceneGraph: {
1424
1400
  getVariables: typeof getVariables;
@@ -1436,7 +1412,7 @@ declare const sceneGraph: {
1436
1412
  getAncestor: typeof getAncestor;
1437
1413
  getQueryController: typeof getQueryController;
1438
1414
  findDescendents: typeof findDescendents;
1439
- getScopesBridge: typeof getScopesBridge;
1415
+ getScopes: typeof getScopes;
1440
1416
  };
1441
1417
 
1442
1418
  interface ActWhenVariableChangedState extends SceneObjectState {
@@ -1703,8 +1679,6 @@ declare class SceneQueryRunner extends SceneObjectBase<QueryRunnerState> impleme
1703
1679
  private _dataLayersMerger;
1704
1680
  private _timeSub?;
1705
1681
  private _timeSubRange?;
1706
- private _scopesSub?;
1707
- private _scopesSubBridge?;
1708
1682
  private _containerWidth?;
1709
1683
  private _variableValueRecorder;
1710
1684
  private _results;
@@ -1743,12 +1717,11 @@ declare class SceneQueryRunner extends SceneObjectBase<QueryRunnerState> impleme
1743
1717
  private _onDeactivate;
1744
1718
  setContainerWidth(width: number): void;
1745
1719
  isDataReadyToDisplay(): boolean;
1746
- private subscribeToScopesChanges;
1747
1720
  private subscribeToTimeRangeChanges;
1748
1721
  runQueries(): void;
1749
1722
  private getMaxDataPoints;
1750
1723
  cancelQuery(): void;
1751
- private runWithTimeRangeAndScopes;
1724
+ private runWithTimeRange;
1752
1725
  clone(withState?: Partial<QueryRunnerState>): this;
1753
1726
  private prepareRequests;
1754
1727
  private onDataReceived;
@@ -1883,7 +1856,7 @@ interface VariableSelectProps {
1883
1856
  /** To provide an option to hide the label in the variable value selector */
1884
1857
  hideLabel?: boolean;
1885
1858
  }
1886
- declare function VariableValueSelectWrapper({ variable, layout, showAlways, hideLabel }: VariableSelectProps): React__default.JSX.Element | null;
1859
+ declare function VariableValueSelectWrapper({ variable, layout, showAlways, hideLabel }: VariableSelectProps): string | number | boolean | React__default.JSX.Element | Iterable<React__default.ReactNode> | null | undefined;
1887
1860
 
1888
1861
  interface VariableValueControlState extends SceneObjectState {
1889
1862
  layout?: ControlsLayout;
@@ -1898,8 +1871,6 @@ declare class VariableValueControl extends SceneObjectBase<VariableValueControlS
1898
1871
  declare function VariableValueControlRenderer({ model }: SceneComponentProps<VariableValueControl>): React__default.JSX.Element | null;
1899
1872
 
1900
1873
  declare class SceneVariableSet extends SceneObjectBase<SceneVariableSetState> implements SceneVariables {
1901
- /** Variables that have changed in since the activation or since the first manual value change */
1902
- private _variablesThatHaveChanged;
1903
1874
  /** Variables that are scheduled to be validated and updated */
1904
1875
  private _variablesToUpdate;
1905
1876
  /** Variables currently updating */
@@ -2002,6 +1973,41 @@ declare class TestVariable extends MultiValueVariable<TestVariableState> {
2002
1973
  static Component: ({ model }: SceneComponentProps<MultiValueVariable>) => React__default.JSX.Element;
2003
1974
  }
2004
1975
 
1976
+ interface ScopesVariableState extends SceneVariableState {
1977
+ /**
1978
+ * Last captured state from ScopesContext
1979
+ */
1980
+ scopes: Scope[];
1981
+ /**
1982
+ * Set to true if you want to the variable to enable / disable scopes when activated / deactivated
1983
+ */
1984
+ enable?: boolean;
1985
+ }
1986
+ declare class ScopesVariable extends SceneObjectBase<ScopesVariableState> implements SceneVariable<ScopesVariableState> {
1987
+ protected _renderBeforeActivation: boolean;
1988
+ protected _context: ScopesContextValue | undefined;
1989
+ constructor(state: Partial<ScopesVariableState>);
1990
+ /**
1991
+ * Temporary simple implementation to stringify the scopes.
1992
+ */
1993
+ getValue(fieldPath: string): VariableValue;
1994
+ getScopes(): Scope[] | undefined;
1995
+ /**
1996
+ * This method is used to keep the context up to date with the scopes context received from React
1997
+ * 1) Subscribes to ScopesContext state changes and synchronizes it with the variable state
1998
+ * 2) Handles enable / disabling of scopes based on variable enable option.
1999
+ */
2000
+ setContext(context: ScopesContextValue | undefined): (() => void) | undefined;
2001
+ updateStateFromContext(state: {
2002
+ loading: boolean;
2003
+ value: Scope[];
2004
+ }): void;
2005
+ /**
2006
+ * Special function that enables variables to be hidden but still render to access react contexts
2007
+ */
2008
+ hiddenRender(): ReactNode;
2009
+ }
2010
+
2005
2011
  interface LocalValueVariableState extends SceneVariableState {
2006
2012
  value: VariableValue;
2007
2013
  text: VariableValue;
@@ -2106,6 +2112,7 @@ interface SceneTimePickerState extends SceneObjectState {
2106
2112
  hidePicker?: boolean;
2107
2113
  isOnCanvas?: boolean;
2108
2114
  quickRanges?: TimeOption[];
2115
+ defaultQuickRanges?: TimeOption[];
2109
2116
  }
2110
2117
  declare class SceneTimePicker extends SceneObjectBase<SceneTimePickerState> {
2111
2118
  static Component: typeof SceneTimePickerRenderer;
@@ -2490,9 +2497,6 @@ declare class SceneAppPage extends SceneObjectBase<SceneAppPageState> implements
2490
2497
  static Component: typeof SceneAppPageRenderer;
2491
2498
  private _sceneCache;
2492
2499
  private _drilldownCache;
2493
- private _scopesBridge;
2494
- constructor(state: SceneAppPageState);
2495
- private _activationHandler;
2496
2500
  initializeScene(scene: EmbeddedScene): void;
2497
2501
  getScene(routeMatch: SceneRouteMatch): EmbeddedScene;
2498
2502
  getDrilldownPage(drilldown: SceneAppDrilldownView, routeMatch: SceneRouteMatch<{}>): SceneAppPageLike;
@@ -3027,5 +3031,5 @@ declare const sceneUtils: {
3027
3031
  isGroupByVariable: typeof isGroupByVariable;
3028
3032
  };
3029
3033
 
3030
- export { AdHocFiltersVariable, ConstantVariable, ControlsLabel, CustomVariable, DataProviderProxy, DataSourceVariable, EmbeddedScene, FieldConfigBuilder, FieldConfigBuilders, FieldConfigOverridesBuilder, GroupByVariable, IntervalVariable, LazyLoader, LocalValueVariable, MultiOrSingleValueSelect, MultiValueVariable, NestedScene, NewSceneObjectAddedEvent, PanelBuilders, PanelOptionsBuilders, QueryVariable, RuntimeDataSource, SafeSerializableSceneObject, SceneApp, SceneAppPage, SceneByFrameRepeater, SceneByVariableRepeater, SceneCSSGridItem, SceneCSSGridLayout, SceneCanvasText, SceneControlsSpacer, SceneDataLayerBase, SceneDataLayerControls, SceneDataLayerSet, SceneDataLayerSetBase, SceneDataNode, SceneDataTransformer, SceneDebugger, SceneFlexItem, SceneFlexLayout, SceneGridItem, SceneGridLayout, SceneGridLayoutDragStartEvent, SceneGridRow, SceneObjectBase, SceneObjectRef, SceneObjectStateChangedEvent, SceneObjectUrlSyncConfig, SceneQueryRunner, SceneReactObject, SceneRefreshPicker, SceneScopesBridge, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneVariableSet, SceneVariableValueChangedEvent, SplitLayout, TestVariable, TextBoxVariable, UrlSyncContextProvider, UrlSyncManager, UserActionEvent, VariableDependencyConfig, VariableValueControl, VariableValueSelectWrapper, VariableValueSelectors, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, index$1 as behaviors, index as dataLayers, formatRegistry, getExploreURL, isCustomVariableValue, isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject, registerQueryWithController, registerRuntimeDataSource, sceneGraph, sceneUtils, useSceneApp, useSceneObjectState, useUrlSync };
3034
+ export { AdHocFiltersVariable, ConstantVariable, ControlsLabel, CustomVariable, DataProviderProxy, DataSourceVariable, EmbeddedScene, FieldConfigBuilder, FieldConfigBuilders, FieldConfigOverridesBuilder, GroupByVariable, IntervalVariable, LazyLoader, LocalValueVariable, MultiOrSingleValueSelect, MultiValueVariable, NestedScene, NewSceneObjectAddedEvent, PanelBuilders, PanelOptionsBuilders, QueryVariable, RuntimeDataSource, SafeSerializableSceneObject, SceneApp, SceneAppPage, SceneByFrameRepeater, SceneByVariableRepeater, SceneCSSGridItem, SceneCSSGridLayout, SceneCanvasText, SceneControlsSpacer, SceneDataLayerBase, SceneDataLayerControls, SceneDataLayerSet, SceneDataLayerSetBase, SceneDataNode, SceneDataTransformer, SceneDebugger, SceneFlexItem, SceneFlexLayout, SceneGridItem, SceneGridLayout, SceneGridLayoutDragStartEvent, SceneGridRow, SceneObjectBase, SceneObjectRef, SceneObjectStateChangedEvent, SceneObjectUrlSyncConfig, SceneQueryRunner, SceneReactObject, SceneRefreshPicker, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneVariableSet, SceneVariableValueChangedEvent, ScopesVariable, SplitLayout, TestVariable, TextBoxVariable, UrlSyncContextProvider, UrlSyncManager, UserActionEvent, VariableDependencyConfig, VariableValueControl, VariableValueSelectWrapper, VariableValueSelectors, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, index$1 as behaviors, index as dataLayers, formatRegistry, getExploreURL, isCustomVariableValue, isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject, registerQueryWithController, registerRuntimeDataSource, sceneGraph, sceneUtils, useSceneApp, useSceneObjectState, useUrlSync };
3031
3035
  export type { AdHocFilterWithLabels, CancelActivationHandler, ControlsLayout, CustomFormatterVariable, CustomTransformOperator, CustomTransformerDefinition, CustomVariableValue, DataLayerFilter, DataRequestEnricher, DeepPartial, EmbeddedSceneState, ExtraQueryDataProcessor, ExtraQueryDescriptor, ExtraQueryProvider, FiltersRequestEnricher, FormatVariable, InterpolationFormatParameter, MacroVariableConstructor, MultiValueVariableState, QueryRunnerState, SceneActivationHandler, SceneAppDrilldownView, SceneAppPageLike, SceneAppPageState, SceneAppRoute, SceneComponent, SceneComponentProps, SceneDataLayerProvider, SceneDataLayerProviderState, SceneDataProvider, SceneDataProviderResult, SceneDataQuery, SceneDataState, SceneDataTransformerState, SceneDeactivationHandler, SceneFlexItemLike, SceneFlexItemState, SceneGridItemLike, SceneGridItemStateLike, SceneInteractionProfileEvent, SceneLayout, SceneLayoutChildOptions, SceneLayoutState, SceneObject, SceneObjectState, SceneObjectStateChangedPayload, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, SceneQueryControllerEntry, SceneQueryControllerEntryType, SceneQueryControllerLike, SceneRefreshPickerState, SceneRouteMatch, SceneStateChangedHandler, SceneStatelessBehavior, SceneTimeRangeLike, SceneTimeRangeState, SceneUrlSyncOptions, SceneVariable, SceneVariableDependencyConfigLike, SceneVariableSetState, SceneVariableState, SceneVariables, UrlSyncManagerLike, UseStateHookOptions, ValidateAndUpdateResult, VariableCustomFormatterFn, VariableGetOptionsArgs, VariableValue, VariableValueOption, VariableValueSingle, VizConfig, VizPanelState };