@grafana/scenes 6.2.1 → 6.3.1--canary.990.13763142318.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.
- package/CHANGELOG.md +12 -0
- package/dist/esm/components/SceneApp/SceneApp.js +9 -3
- package/dist/esm/components/SceneApp/SceneApp.js.map +1 -1
- package/dist/esm/components/SceneApp/SceneAppPage.js +16 -0
- package/dist/esm/components/SceneApp/SceneAppPage.js.map +1 -1
- package/dist/esm/core/SceneScopesBridge.js +108 -0
- package/dist/esm/core/SceneScopesBridge.js.map +1 -0
- package/dist/esm/core/sceneGraph/index.js +3 -2
- package/dist/esm/core/sceneGraph/index.js.map +1 -1
- package/dist/esm/core/sceneGraph/sceneGraph.js +6 -1
- package/dist/esm/core/sceneGraph/sceneGraph.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/querying/SceneQueryRunner.js +33 -8
- package/dist/esm/querying/SceneQueryRunner.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFiltersVariable.js +10 -4
- package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
- package/dist/esm/variables/groupby/GroupByVariable.js +3 -2
- package/dist/esm/variables/groupby/GroupByVariable.js.map +1 -1
- package/dist/esm/variables/variants/query/createQueryVariableRunner.js +1 -1
- package/dist/esm/variables/variants/query/createQueryVariableRunner.js.map +1 -1
- package/dist/index.d.ts +70 -20
- package/dist/index.js +177 -19
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _grafana_data from '@grafana/data';
|
|
2
|
-
import { BusEventWithPayload, EventBus, BusEvent, BusEventType, BusEventHandler, PanelMenuItem, FieldConfigSource, PanelModel, PanelPlugin, AbsoluteTimeRange, PanelData, InterpolateFunction, TimeRange, DataQueryRequest, DataSourceGetTagKeysOptions, DataSourceGetTagValuesOptions, DataTransformContext, DataFrame, IconName, PageLayoutType, UrlQueryMap, DataQuery as DataQuery$1, DataSourceApi, Registry, RegistryItem, ScopedVars, AdHocVariableFilter, SelectableValue, MetricFindValue, GetTagResponse, 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, PanelModel, PanelPlugin, AbsoluteTimeRange, PanelData, InterpolateFunction, TimeRange, DataQueryRequest, DataSourceGetTagKeysOptions, DataSourceGetTagValuesOptions, DataTransformContext, DataFrame, Scope, IconName, PageLayoutType, UrlQueryMap, DataQuery as DataQuery$1, DataSourceApi, Registry, RegistryItem, ScopedVars, AdHocVariableFilter, SelectableValue, MetricFindValue, GetTagResponse, VariableRefresh as VariableRefresh$1, VariableSort, EventFilterOptions, AnnotationEvent, AnnotationQuery, DataTransformerConfig, TimeOption, FieldConfig, FieldType, FieldValueMatcherConfig, ScopedVar, RawTimeRange } from '@grafana/data';
|
|
3
3
|
import * as React$1 from 'react';
|
|
4
4
|
import React__default, { ComponentType, CSSProperties, PointerEvent, ForwardRefExoticComponent } from 'react';
|
|
5
5
|
import * as rxjs from 'rxjs';
|
|
@@ -7,7 +7,7 @@ import { Observable, Subscription, Unsubscribable, MonoTypeOperatorFunction, Rep
|
|
|
7
7
|
import * as _grafana_schema from '@grafana/schema';
|
|
8
8
|
import { VariableType, VariableHide, TimeZone, DataTopic, DataQuery, DataSourceRef, VariableRefresh, LoadingState, DashboardCursorSync, MatcherConfig, TableFieldOptions } from '@grafana/schema';
|
|
9
9
|
import { PanelContext, WeekStart, IconName as IconName$1 } from '@grafana/ui';
|
|
10
|
-
import { LocationService, VariableInterpolation } from '@grafana/runtime';
|
|
10
|
+
import { ScopesContextValue, LocationService, VariableInterpolation } 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';
|
|
@@ -650,6 +650,55 @@ declare class EmbeddedScene extends SceneObjectBase<EmbeddedSceneState> {
|
|
|
650
650
|
}
|
|
651
651
|
declare function EmbeddedSceneRenderer({ model }: SceneComponentProps<EmbeddedScene>): React__default.JSX.Element;
|
|
652
652
|
|
|
653
|
+
interface SceneObjectUrlSyncConfigOptions {
|
|
654
|
+
keys: string[] | (() => string[]);
|
|
655
|
+
}
|
|
656
|
+
declare class SceneObjectUrlSyncConfig implements SceneObjectUrlSyncHandler {
|
|
657
|
+
private _sceneObject;
|
|
658
|
+
private _keys;
|
|
659
|
+
private _nextChangeShouldAddHistoryStep;
|
|
660
|
+
constructor(_sceneObject: SceneObjectWithUrlSync, _options: SceneObjectUrlSyncConfigOptions);
|
|
661
|
+
getKeys(): string[];
|
|
662
|
+
getUrlState(): SceneObjectUrlValues;
|
|
663
|
+
updateFromUrl(values: SceneObjectUrlValues): void;
|
|
664
|
+
shouldCreateHistoryStep(values: SceneObjectUrlValues): boolean;
|
|
665
|
+
performBrowserHistoryAction(callback: () => void): void;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
declare class SceneScopesBridge extends SceneObjectBase implements SceneObjectWithUrlSync {
|
|
669
|
+
static Component: typeof SceneScopesBridgeRenderer;
|
|
670
|
+
protected _urlSync: SceneObjectUrlSyncConfig;
|
|
671
|
+
protected _renderBeforeActivation: boolean;
|
|
672
|
+
private _contextSubject;
|
|
673
|
+
private _pendingScopes;
|
|
674
|
+
getUrlState(): SceneObjectUrlValues;
|
|
675
|
+
updateFromUrl(values: SceneObjectUrlValues): void;
|
|
676
|
+
getValue(): Scope[];
|
|
677
|
+
/**
|
|
678
|
+
* Emits values of the selected scopes array. It emits the current value and the previous value if there is a change.
|
|
679
|
+
* @param cb
|
|
680
|
+
*/
|
|
681
|
+
subscribeToValue(cb: (newScopes: Scope[], prevScopes: Scope[]) => void): Unsubscribable;
|
|
682
|
+
isLoading(): boolean;
|
|
683
|
+
subscribeToLoading(cb: (loading: boolean) => void): Unsubscribable;
|
|
684
|
+
setEnabled(enabled: boolean): void;
|
|
685
|
+
setReadOnly(readOnly: boolean): void;
|
|
686
|
+
/**
|
|
687
|
+
* This method is used to keep the context up to date with the scopes context received from React
|
|
688
|
+
*
|
|
689
|
+
* Its rationale is:
|
|
690
|
+
* - When a new context is available, check if we have pending scopes passed from the URL
|
|
691
|
+
* - If we have pending scopes, ask the new context to load them
|
|
692
|
+
* - The loading should happen in a setTimeout to allow the existing context to pass its values to the URL sync handler
|
|
693
|
+
* - If a new context is received, propagate it as a new value in the behavior subject
|
|
694
|
+
* - If a new value is received, force a re-render to trigger the URL sync handler
|
|
695
|
+
*/
|
|
696
|
+
updateContext(newContext: ScopesContextValue | undefined): void;
|
|
697
|
+
private get context();
|
|
698
|
+
private get contextObservable();
|
|
699
|
+
}
|
|
700
|
+
declare function SceneScopesBridgeRenderer({ model }: SceneComponentProps<SceneScopesBridge>): null;
|
|
701
|
+
|
|
653
702
|
interface SceneRouteMatch<Params extends {
|
|
654
703
|
[K in keyof Params]?: string;
|
|
655
704
|
} = {}> {
|
|
@@ -662,6 +711,7 @@ interface SceneAppState extends SceneObjectState {
|
|
|
662
711
|
pages: SceneAppPageLike[];
|
|
663
712
|
name?: string;
|
|
664
713
|
urlSyncOptions?: SceneUrlSyncOptions;
|
|
714
|
+
scopesBridge?: SceneScopesBridge;
|
|
665
715
|
}
|
|
666
716
|
interface SceneAppRoute {
|
|
667
717
|
path: string;
|
|
@@ -706,6 +756,7 @@ interface SceneAppPageState extends SceneObjectState {
|
|
|
706
756
|
*/
|
|
707
757
|
getFallbackPage?: () => SceneAppPageLike;
|
|
708
758
|
layout?: PageLayoutType;
|
|
759
|
+
useScopes?: boolean;
|
|
709
760
|
}
|
|
710
761
|
interface SceneAppPageLike extends SceneObject<SceneAppPageState>, DataRequestEnricher {
|
|
711
762
|
initializeScene(scene: SceneObject): void;
|
|
@@ -933,8 +984,10 @@ declare class AdHocFiltersVariable extends SceneObjectBase<AdHocFiltersVariableS
|
|
|
933
984
|
static Component: typeof AdHocFiltersVariableRenderer;
|
|
934
985
|
private _scopedVars;
|
|
935
986
|
private _dataSourceSrv;
|
|
987
|
+
private _scopesBridge;
|
|
936
988
|
protected _urlSync: AdHocFiltersVariableUrlSyncHandler;
|
|
937
989
|
constructor(state: Partial<AdHocFiltersVariableState>);
|
|
990
|
+
private _activationHandler;
|
|
938
991
|
setState(update: Partial<AdHocFiltersVariableState>): void;
|
|
939
992
|
/**
|
|
940
993
|
* Updates the variable's `filters` and `filterExpression` state.
|
|
@@ -1175,6 +1228,7 @@ declare class GroupByVariable extends MultiValueVariable<GroupByVariableState> {
|
|
|
1175
1228
|
static Component: typeof GroupByVariableRenderer;
|
|
1176
1229
|
isLazy: boolean;
|
|
1177
1230
|
protected _urlSync: SceneObjectUrlSyncHandler;
|
|
1231
|
+
private _scopesBridge;
|
|
1178
1232
|
validateAndUpdate(): Observable<ValidateAndUpdateResult>;
|
|
1179
1233
|
private _updateValueGivenNewOptions;
|
|
1180
1234
|
getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]>;
|
|
@@ -1191,7 +1245,7 @@ declare class GroupByVariable extends MultiValueVariable<GroupByVariableState> {
|
|
|
1191
1245
|
text: string[];
|
|
1192
1246
|
};
|
|
1193
1247
|
}
|
|
1194
|
-
declare function GroupByVariableRenderer({ model }: SceneComponentProps<
|
|
1248
|
+
declare function GroupByVariableRenderer({ model }: SceneComponentProps<GroupByVariable>): React__default.JSX.Element;
|
|
1195
1249
|
|
|
1196
1250
|
declare function isAdHocVariable(variable: SceneVariable): variable is AdHocFiltersVariable;
|
|
1197
1251
|
declare function isConstantVariable(variable: SceneVariable): variable is ConstantVariable;
|
|
@@ -1370,6 +1424,10 @@ declare function getAncestor<ParentType>(sceneObject: SceneObject, ancestorType:
|
|
|
1370
1424
|
* This will search down the full scene graph, looking for objects that match the provided descendentType type.
|
|
1371
1425
|
*/
|
|
1372
1426
|
declare function findDescendents<T extends SceneObject>(scene: SceneObject, descendentType: SceneType<T>): T[];
|
|
1427
|
+
/**
|
|
1428
|
+
* Will walk up the scene object graph to the closest $scopesBridge scene object
|
|
1429
|
+
*/
|
|
1430
|
+
declare function getScopesBridge(sceneObject: SceneObject): SceneScopesBridge | undefined;
|
|
1373
1431
|
|
|
1374
1432
|
declare const sceneGraph: {
|
|
1375
1433
|
getVariables: typeof getVariables;
|
|
@@ -1387,6 +1445,7 @@ declare const sceneGraph: {
|
|
|
1387
1445
|
getAncestor: typeof getAncestor;
|
|
1388
1446
|
getQueryController: typeof getQueryController;
|
|
1389
1447
|
findDescendents: typeof findDescendents;
|
|
1448
|
+
getScopesBridge: typeof getScopesBridge;
|
|
1390
1449
|
};
|
|
1391
1450
|
|
|
1392
1451
|
interface ActWhenVariableChangedState extends SceneObjectState {
|
|
@@ -1564,21 +1623,6 @@ declare class SceneDataNode extends SceneObjectBase<SceneDataNodeState> implemen
|
|
|
1564
1623
|
getResultsStream(): rxjs.Observable<SceneDataProviderResult>;
|
|
1565
1624
|
}
|
|
1566
1625
|
|
|
1567
|
-
interface SceneObjectUrlSyncConfigOptions {
|
|
1568
|
-
keys: string[] | (() => string[]);
|
|
1569
|
-
}
|
|
1570
|
-
declare class SceneObjectUrlSyncConfig implements SceneObjectUrlSyncHandler {
|
|
1571
|
-
private _sceneObject;
|
|
1572
|
-
private _keys;
|
|
1573
|
-
private _nextChangeShouldAddHistoryStep;
|
|
1574
|
-
constructor(_sceneObject: SceneObjectWithUrlSync, _options: SceneObjectUrlSyncConfigOptions);
|
|
1575
|
-
getKeys(): string[];
|
|
1576
|
-
getUrlState(): SceneObjectUrlValues;
|
|
1577
|
-
updateFromUrl(values: SceneObjectUrlValues): void;
|
|
1578
|
-
shouldCreateHistoryStep(values: SceneObjectUrlValues): boolean;
|
|
1579
|
-
performBrowserHistoryAction(callback: () => void): void;
|
|
1580
|
-
}
|
|
1581
|
-
|
|
1582
1626
|
declare class SceneTimeRange extends SceneObjectBase<SceneTimeRangeState> implements SceneTimeRangeLike {
|
|
1583
1627
|
protected _urlSync: SceneObjectUrlSyncConfig;
|
|
1584
1628
|
constructor(state?: Partial<SceneTimeRangeState>);
|
|
@@ -1653,6 +1697,8 @@ declare class SceneQueryRunner extends SceneObjectBase<QueryRunnerState> impleme
|
|
|
1653
1697
|
private _dataLayersMerger;
|
|
1654
1698
|
private _timeSub?;
|
|
1655
1699
|
private _timeSubRange?;
|
|
1700
|
+
private _scopesSub?;
|
|
1701
|
+
private _scopesSubBridge?;
|
|
1656
1702
|
private _containerWidth?;
|
|
1657
1703
|
private _variableValueRecorder;
|
|
1658
1704
|
private _results;
|
|
@@ -1691,11 +1737,12 @@ declare class SceneQueryRunner extends SceneObjectBase<QueryRunnerState> impleme
|
|
|
1691
1737
|
private _onDeactivate;
|
|
1692
1738
|
setContainerWidth(width: number): void;
|
|
1693
1739
|
isDataReadyToDisplay(): boolean;
|
|
1740
|
+
private subscribeToScopesChanges;
|
|
1694
1741
|
private subscribeToTimeRangeChanges;
|
|
1695
1742
|
runQueries(): void;
|
|
1696
1743
|
private getMaxDataPoints;
|
|
1697
1744
|
cancelQuery(): void;
|
|
1698
|
-
private
|
|
1745
|
+
private runWithTimeRangeAndScopes;
|
|
1699
1746
|
clone(withState?: Partial<QueryRunnerState>): this;
|
|
1700
1747
|
private prepareRequests;
|
|
1701
1748
|
private onDataReceived;
|
|
@@ -2419,6 +2466,7 @@ declare const LazyLoader: LazyLoaderType;
|
|
|
2419
2466
|
* Responsible for top level pages routing
|
|
2420
2467
|
*/
|
|
2421
2468
|
declare class SceneApp extends SceneObjectBase<SceneAppState> implements DataRequestEnricher {
|
|
2469
|
+
protected _renderBeforeActivation: boolean;
|
|
2422
2470
|
enrichDataRequest(): {
|
|
2423
2471
|
app: string;
|
|
2424
2472
|
};
|
|
@@ -2436,7 +2484,9 @@ declare class SceneAppPage extends SceneObjectBase<SceneAppPageState> implements
|
|
|
2436
2484
|
static Component: typeof SceneAppPageRenderer;
|
|
2437
2485
|
private _sceneCache;
|
|
2438
2486
|
private _drilldownCache;
|
|
2487
|
+
private _scopesBridge;
|
|
2439
2488
|
constructor(state: SceneAppPageState);
|
|
2489
|
+
private _activationHandler;
|
|
2440
2490
|
initializeScene(scene: EmbeddedScene): void;
|
|
2441
2491
|
getScene(routeMatch: SceneRouteMatch): EmbeddedScene;
|
|
2442
2492
|
getDrilldownPage(drilldown: SceneAppDrilldownView, routeMatch: SceneRouteMatch<{}>): SceneAppPageLike;
|
|
@@ -2937,4 +2987,4 @@ declare const sceneUtils: {
|
|
|
2937
2987
|
isGroupByVariable: typeof isGroupByVariable;
|
|
2938
2988
|
};
|
|
2939
2989
|
|
|
2940
|
-
export { AdHocFilterWithLabels, AdHocFiltersVariable, CancelActivationHandler, ConstantVariable, ControlsLabel, ControlsLayout, CustomFormatterVariable, CustomTransformOperator, CustomTransformerDefinition, CustomVariable, CustomVariableValue, DataLayerFilter, DataProviderProxy, DataRequestEnricher, DataSourceVariable, DeepPartial, EmbeddedScene, EmbeddedSceneState, ExtraQueryDataProcessor, ExtraQueryDescriptor, ExtraQueryProvider, FieldConfigBuilder, FieldConfigBuilders, FieldConfigOverridesBuilder, FilterOrigin, FiltersRequestEnricher, FormatVariable, GroupByVariable, InterpolationFormatParameter, IntervalVariable, LazyLoader, LocalValueVariable, MacroVariableConstructor, MultiValueVariable, MultiValueVariableState, NestedScene, NewSceneObjectAddedEvent, PanelBuilders, PanelOptionsBuilders, QueryRunnerState, QueryVariable, RuntimeDataSource, SafeSerializableSceneObject, SceneActivationHandler, SceneApp, SceneAppDrilldownView, SceneAppPage, SceneAppPageLike, SceneAppPageState, SceneAppRoute, SceneByFrameRepeater, SceneByVariableRepeater, SceneCSSGridItem, SceneCSSGridLayout, SceneCanvasText, SceneComponent, SceneComponentProps, SceneControlsSpacer, SceneDataLayerBase, SceneDataLayerControls, SceneDataLayerProvider, SceneDataLayerProviderState, SceneDataLayerSet, SceneDataLayerSetBase, SceneDataNode, SceneDataProvider, SceneDataProviderResult, SceneDataQuery, SceneDataState, SceneDataTransformer, SceneDataTransformerState, SceneDeactivationHandler, SceneDebugger, SceneFlexItem, SceneFlexItemLike, SceneFlexItemState, SceneFlexLayout, SceneGridItem, SceneGridItemLike, SceneGridItemStateLike, SceneGridLayout, SceneGridLayoutDragStartEvent, SceneGridRow, SceneInteractionProfileEvent, SceneLayout, SceneLayoutChildOptions, SceneLayoutState, SceneObject, SceneObjectBase, SceneObjectRef, SceneObjectState, SceneObjectStateChangedEvent, SceneObjectStateChangedPayload, SceneObjectUrlSyncConfig, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, SceneQueryControllerEntry, SceneQueryControllerEntryType, SceneQueryControllerLike, SceneQueryRunner, SceneReactObject, SceneRefreshPicker, SceneRefreshPickerState, SceneRouteMatch, SceneStateChangedHandler, SceneStatelessBehavior, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeLike, SceneTimeRangeState, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneUrlSyncOptions, SceneVariable, SceneVariableDependencyConfigLike, SceneVariableSet, SceneVariableSetState, SceneVariableState, SceneVariableValueChangedEvent, SceneVariables, SplitLayout, TestVariable, TextBoxVariable, UrlSyncContextProvider, UrlSyncManager, UrlSyncManagerLike, UseStateHookOptions, UserActionEvent, ValidateAndUpdateResult, VariableCustomFormatterFn, VariableDependencyConfig, VariableGetOptionsArgs, VariableValue, VariableValueControl, VariableValueOption, VariableValueSelectWrapper, VariableValueSelectors, VariableValueSingle, VizConfig, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, VizPanelState, index$1 as behaviors, index as dataLayers, formatRegistry, getExploreURL, isCustomVariableValue, isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject, registerQueryWithController, registerRuntimeDataSource, renderSelectForVariable, sceneGraph, sceneUtils, useSceneApp, useSceneObjectState, useUrlSync };
|
|
2990
|
+
export { AdHocFilterWithLabels, AdHocFiltersVariable, CancelActivationHandler, ConstantVariable, ControlsLabel, ControlsLayout, CustomFormatterVariable, CustomTransformOperator, CustomTransformerDefinition, CustomVariable, CustomVariableValue, DataLayerFilter, DataProviderProxy, DataRequestEnricher, DataSourceVariable, DeepPartial, EmbeddedScene, EmbeddedSceneState, ExtraQueryDataProcessor, ExtraQueryDescriptor, ExtraQueryProvider, FieldConfigBuilder, FieldConfigBuilders, FieldConfigOverridesBuilder, FilterOrigin, FiltersRequestEnricher, FormatVariable, GroupByVariable, InterpolationFormatParameter, IntervalVariable, LazyLoader, LocalValueVariable, MacroVariableConstructor, MultiValueVariable, MultiValueVariableState, NestedScene, NewSceneObjectAddedEvent, PanelBuilders, PanelOptionsBuilders, QueryRunnerState, QueryVariable, RuntimeDataSource, SafeSerializableSceneObject, SceneActivationHandler, SceneApp, SceneAppDrilldownView, SceneAppPage, SceneAppPageLike, SceneAppPageState, SceneAppRoute, SceneByFrameRepeater, SceneByVariableRepeater, SceneCSSGridItem, SceneCSSGridLayout, SceneCanvasText, SceneComponent, SceneComponentProps, SceneControlsSpacer, SceneDataLayerBase, SceneDataLayerControls, SceneDataLayerProvider, SceneDataLayerProviderState, SceneDataLayerSet, SceneDataLayerSetBase, SceneDataNode, SceneDataProvider, SceneDataProviderResult, SceneDataQuery, SceneDataState, SceneDataTransformer, SceneDataTransformerState, SceneDeactivationHandler, SceneDebugger, SceneFlexItem, SceneFlexItemLike, SceneFlexItemState, SceneFlexLayout, SceneGridItem, SceneGridItemLike, SceneGridItemStateLike, SceneGridLayout, SceneGridLayoutDragStartEvent, SceneGridRow, SceneInteractionProfileEvent, SceneLayout, SceneLayoutChildOptions, SceneLayoutState, SceneObject, SceneObjectBase, SceneObjectRef, SceneObjectState, SceneObjectStateChangedEvent, SceneObjectStateChangedPayload, SceneObjectUrlSyncConfig, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, SceneQueryControllerEntry, SceneQueryControllerEntryType, SceneQueryControllerLike, SceneQueryRunner, SceneReactObject, SceneRefreshPicker, SceneRefreshPickerState, SceneRouteMatch, SceneScopesBridge, SceneStateChangedHandler, SceneStatelessBehavior, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeLike, SceneTimeRangeState, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneUrlSyncOptions, SceneVariable, SceneVariableDependencyConfigLike, SceneVariableSet, SceneVariableSetState, SceneVariableState, SceneVariableValueChangedEvent, SceneVariables, SplitLayout, TestVariable, TextBoxVariable, UrlSyncContextProvider, UrlSyncManager, UrlSyncManagerLike, UseStateHookOptions, UserActionEvent, ValidateAndUpdateResult, VariableCustomFormatterFn, VariableDependencyConfig, VariableGetOptionsArgs, VariableValue, VariableValueControl, VariableValueOption, VariableValueSelectWrapper, VariableValueSelectors, VariableValueSingle, VizConfig, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, VizPanelState, index$1 as behaviors, index as dataLayers, formatRegistry, getExploreURL, isCustomVariableValue, isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject, registerQueryWithController, registerRuntimeDataSource, renderSelectForVariable, sceneGraph, sceneUtils, useSceneApp, useSceneObjectState, useUrlSync };
|
package/dist/index.js
CHANGED
|
@@ -3270,7 +3270,7 @@ class GroupByVariable extends MultiValueVariable {
|
|
|
3270
3270
|
this.isLazy = true;
|
|
3271
3271
|
this._urlSync = new GroupByVariableUrlSyncHandler(this);
|
|
3272
3272
|
this._getKeys = async (ds) => {
|
|
3273
|
-
var _a, _b, _c;
|
|
3273
|
+
var _a, _b, _c, _d;
|
|
3274
3274
|
const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, null));
|
|
3275
3275
|
if (override && override.replace) {
|
|
3276
3276
|
return override.values;
|
|
@@ -3287,7 +3287,8 @@ class GroupByVariable extends MultiValueVariable {
|
|
|
3287
3287
|
const response = await ds.getTagKeys(__spreadValues$F({
|
|
3288
3288
|
filters: otherFilters,
|
|
3289
3289
|
queries,
|
|
3290
|
-
timeRange
|
|
3290
|
+
timeRange,
|
|
3291
|
+
scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue()
|
|
3291
3292
|
}, getEnrichedFiltersRequest(this)));
|
|
3292
3293
|
if (responseHasError(response)) {
|
|
3293
3294
|
this.setState({ error: response.error.message });
|
|
@@ -5422,9 +5423,13 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5422
5423
|
this._scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };
|
|
5423
5424
|
this._dataSourceSrv = runtime.getDataSourceSrv();
|
|
5424
5425
|
this._urlSync = new AdHocFiltersVariableUrlSyncHandler(this);
|
|
5426
|
+
this._activationHandler = () => {
|
|
5427
|
+
this._scopesBridge = sceneGraph.getScopesBridge(this);
|
|
5428
|
+
};
|
|
5425
5429
|
if (this.state.applyMode === "auto") {
|
|
5426
5430
|
patchGetAdhocFilters(this);
|
|
5427
5431
|
}
|
|
5432
|
+
this.addActivationHandler(this._activationHandler);
|
|
5428
5433
|
}
|
|
5429
5434
|
setState(update) {
|
|
5430
5435
|
let filterExpressionChanged = false;
|
|
@@ -5508,7 +5513,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5508
5513
|
}
|
|
5509
5514
|
}
|
|
5510
5515
|
async _getKeys(currentKey) {
|
|
5511
|
-
var _a, _b, _c;
|
|
5516
|
+
var _a, _b, _c, _d;
|
|
5512
5517
|
const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, currentKey));
|
|
5513
5518
|
if (override && override.replace) {
|
|
5514
5519
|
return dataFromResponse(override.values).map(toSelectableValue);
|
|
@@ -5526,7 +5531,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5526
5531
|
const response = await ds.getTagKeys(__spreadValues$z({
|
|
5527
5532
|
filters: otherFilters,
|
|
5528
5533
|
queries,
|
|
5529
|
-
timeRange
|
|
5534
|
+
timeRange,
|
|
5535
|
+
scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue()
|
|
5530
5536
|
}, getEnrichedFiltersRequest(this)));
|
|
5531
5537
|
if (responseHasError(response)) {
|
|
5532
5538
|
this.setState({ error: response.error.message });
|
|
@@ -5542,7 +5548,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5542
5548
|
return keys.map(toSelectableValue);
|
|
5543
5549
|
}
|
|
5544
5550
|
async _getValuesFor(filter) {
|
|
5545
|
-
var _a, _b, _c;
|
|
5551
|
+
var _a, _b, _c, _d;
|
|
5546
5552
|
const override = await ((_b = (_a = this.state).getTagValuesProvider) == null ? void 0 : _b.call(_a, this, filter));
|
|
5547
5553
|
if (override && override.replace) {
|
|
5548
5554
|
return dataFromResponse(override.values).map(toSelectableValue);
|
|
@@ -5558,7 +5564,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5558
5564
|
key: filter.key,
|
|
5559
5565
|
filters: otherFilters,
|
|
5560
5566
|
timeRange,
|
|
5561
|
-
queries
|
|
5567
|
+
queries,
|
|
5568
|
+
scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue()
|
|
5562
5569
|
}, getEnrichedFiltersRequest(this)));
|
|
5563
5570
|
if (responseHasError(response)) {
|
|
5564
5571
|
this.setState({ error: response.error.message });
|
|
@@ -5746,6 +5753,7 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
5746
5753
|
_onActivate() {
|
|
5747
5754
|
if (this.isQueryModeAuto()) {
|
|
5748
5755
|
const timeRange = sceneGraph.getTimeRange(this);
|
|
5756
|
+
const scopesBridge = sceneGraph.getScopesBridge(this);
|
|
5749
5757
|
const providers = this.getClosestExtraQueryProviders();
|
|
5750
5758
|
for (const provider of providers) {
|
|
5751
5759
|
this._subs.add(
|
|
@@ -5756,6 +5764,7 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
5756
5764
|
})
|
|
5757
5765
|
);
|
|
5758
5766
|
}
|
|
5767
|
+
this.subscribeToScopesChanges(scopesBridge);
|
|
5759
5768
|
this.subscribeToTimeRangeChanges(timeRange);
|
|
5760
5769
|
if (this.shouldRunQueriesOnActivate()) {
|
|
5761
5770
|
this.runQueries();
|
|
@@ -5901,6 +5910,21 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
5901
5910
|
isDataReadyToDisplay() {
|
|
5902
5911
|
return Boolean(this.state._hasFetchedData);
|
|
5903
5912
|
}
|
|
5913
|
+
subscribeToScopesChanges(scopesBridge) {
|
|
5914
|
+
if (!scopesBridge) {
|
|
5915
|
+
return;
|
|
5916
|
+
}
|
|
5917
|
+
if (this._scopesSubBridge === scopesBridge) {
|
|
5918
|
+
return;
|
|
5919
|
+
}
|
|
5920
|
+
if (this._scopesSub) {
|
|
5921
|
+
this._scopesSub.unsubscribe();
|
|
5922
|
+
}
|
|
5923
|
+
this._scopesSubBridge = scopesBridge;
|
|
5924
|
+
this._scopesSub = scopesBridge.subscribeToValue(() => {
|
|
5925
|
+
this.runWithTimeRangeAndScopes(sceneGraph.getTimeRange(this), scopesBridge);
|
|
5926
|
+
});
|
|
5927
|
+
}
|
|
5904
5928
|
subscribeToTimeRangeChanges(timeRange) {
|
|
5905
5929
|
if (this._timeSubRange === timeRange) {
|
|
5906
5930
|
return;
|
|
@@ -5910,15 +5934,17 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
5910
5934
|
}
|
|
5911
5935
|
this._timeSubRange = timeRange;
|
|
5912
5936
|
this._timeSub = timeRange.subscribeToState(() => {
|
|
5913
|
-
this.
|
|
5937
|
+
this.runWithTimeRangeAndScopes(timeRange, sceneGraph.getScopesBridge(this));
|
|
5914
5938
|
});
|
|
5915
5939
|
}
|
|
5916
5940
|
runQueries() {
|
|
5917
5941
|
const timeRange = sceneGraph.getTimeRange(this);
|
|
5942
|
+
const scopesBridge = sceneGraph.getScopesBridge(this);
|
|
5918
5943
|
if (this.isQueryModeAuto()) {
|
|
5919
5944
|
this.subscribeToTimeRangeChanges(timeRange);
|
|
5945
|
+
this.subscribeToScopesChanges(scopesBridge);
|
|
5920
5946
|
}
|
|
5921
|
-
this.
|
|
5947
|
+
this.runWithTimeRangeAndScopes(timeRange, scopesBridge);
|
|
5922
5948
|
}
|
|
5923
5949
|
getMaxDataPoints() {
|
|
5924
5950
|
var _a;
|
|
@@ -5938,8 +5964,8 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
5938
5964
|
data: __spreadProps$m(__spreadValues$y({}, this.state.data), { state: schema.LoadingState.Done })
|
|
5939
5965
|
});
|
|
5940
5966
|
}
|
|
5941
|
-
async
|
|
5942
|
-
var _a, _b, _c;
|
|
5967
|
+
async runWithTimeRangeAndScopes(timeRange, scopesBridge) {
|
|
5968
|
+
var _a, _b, _c, _d;
|
|
5943
5969
|
if (!this.state.maxDataPoints && this.state.maxDataPointsFromWidth && !this._containerWidth) {
|
|
5944
5970
|
return;
|
|
5945
5971
|
}
|
|
@@ -5952,17 +5978,22 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
5952
5978
|
this.setState({ data: __spreadProps$m(__spreadValues$y({}, (_b = this.state.data) != null ? _b : emptyPanelData), { state: schema.LoadingState.Loading }) });
|
|
5953
5979
|
return;
|
|
5954
5980
|
}
|
|
5981
|
+
if (scopesBridge == null ? void 0 : scopesBridge.isLoading()) {
|
|
5982
|
+
writeSceneLog("SceneQueryRunner", "Scopes are in loading state, skipping query execution");
|
|
5983
|
+
this.setState({ data: __spreadProps$m(__spreadValues$y({}, (_c = this.state.data) != null ? _c : emptyPanelData), { state: schema.LoadingState.Loading }) });
|
|
5984
|
+
return;
|
|
5985
|
+
}
|
|
5955
5986
|
const { queries } = this.state;
|
|
5956
5987
|
if (!(queries == null ? void 0 : queries.length)) {
|
|
5957
5988
|
this._setNoDataState();
|
|
5958
5989
|
return;
|
|
5959
5990
|
}
|
|
5960
5991
|
try {
|
|
5961
|
-
const datasource = (
|
|
5992
|
+
const datasource = (_d = this.state.datasource) != null ? _d : findFirstDatasource(queries);
|
|
5962
5993
|
const ds = await getDataSource(datasource, this._scopedVars);
|
|
5963
5994
|
this.findAndSubscribeToAdHocFilters(ds.uid);
|
|
5964
5995
|
const runRequest = runtime.getRunRequest();
|
|
5965
|
-
const { primary, secondaries, processors } = this.prepareRequests(timeRange, ds);
|
|
5996
|
+
const { primary, secondaries, processors } = this.prepareRequests(timeRange, ds, scopesBridge);
|
|
5966
5997
|
writeSceneLog("SceneQueryRunner", "Starting runRequest", this.state.key);
|
|
5967
5998
|
let stream = runRequest(ds, primary);
|
|
5968
5999
|
if (secondaries.length > 0) {
|
|
@@ -6001,7 +6032,7 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
6001
6032
|
clone["_results"].next({ origin: this, data: (_a = this.state.data) != null ? _a : emptyPanelData });
|
|
6002
6033
|
return clone;
|
|
6003
6034
|
}
|
|
6004
|
-
prepareRequests(timeRange, ds) {
|
|
6035
|
+
prepareRequests(timeRange, ds, scopesBridge) {
|
|
6005
6036
|
var _a, _b;
|
|
6006
6037
|
const { minInterval, queries } = this.state;
|
|
6007
6038
|
let request = __spreadValues$y({
|
|
@@ -6021,7 +6052,8 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
6021
6052
|
to: timeRange.state.to
|
|
6022
6053
|
},
|
|
6023
6054
|
cacheTimeout: this.state.cacheTimeout,
|
|
6024
|
-
queryCachingTTL: this.state.queryCachingTTL
|
|
6055
|
+
queryCachingTTL: this.state.queryCachingTTL,
|
|
6056
|
+
scopes: scopesBridge == null ? void 0 : scopesBridge.getValue()
|
|
6025
6057
|
}, getEnrichedDataRequest(this));
|
|
6026
6058
|
if (this._adhocFiltersVar) {
|
|
6027
6059
|
request.filters = [];
|
|
@@ -6614,7 +6646,7 @@ class DatasourceQueryRunner {
|
|
|
6614
6646
|
if (!hasDataSourceVariableSupport(this.datasource)) {
|
|
6615
6647
|
return getEmptyMetricFindValueObservable();
|
|
6616
6648
|
}
|
|
6617
|
-
return this._runRequest(this.datasource, request
|
|
6649
|
+
return this._runRequest(this.datasource, request);
|
|
6618
6650
|
}
|
|
6619
6651
|
}
|
|
6620
6652
|
function getEmptyMetricFindValueObservable() {
|
|
@@ -6973,6 +7005,105 @@ function containsSearchFilter(query) {
|
|
|
6973
7005
|
return str.indexOf(SEARCH_FILTER_VARIABLE) > -1;
|
|
6974
7006
|
}
|
|
6975
7007
|
|
|
7008
|
+
class SceneScopesBridge extends SceneObjectBase {
|
|
7009
|
+
constructor() {
|
|
7010
|
+
super(...arguments);
|
|
7011
|
+
this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["scopes"] });
|
|
7012
|
+
this._renderBeforeActivation = true;
|
|
7013
|
+
this._contextSubject = new rxjs.BehaviorSubject(void 0);
|
|
7014
|
+
this._pendingScopes = null;
|
|
7015
|
+
}
|
|
7016
|
+
getUrlState() {
|
|
7017
|
+
var _a, _b, _c;
|
|
7018
|
+
return {
|
|
7019
|
+
scopes: (_c = this._pendingScopes) != null ? _c : ((_b = (_a = this.context) == null ? void 0 : _a.state.value) != null ? _b : []).map((scope) => scope.metadata.name)
|
|
7020
|
+
};
|
|
7021
|
+
}
|
|
7022
|
+
updateFromUrl(values) {
|
|
7023
|
+
var _a, _b;
|
|
7024
|
+
let scopes = (_a = values["scopes"]) != null ? _a : [];
|
|
7025
|
+
scopes = (Array.isArray(scopes) ? scopes : [scopes]).map(String);
|
|
7026
|
+
if (!this.context) {
|
|
7027
|
+
this._pendingScopes = scopes;
|
|
7028
|
+
return;
|
|
7029
|
+
}
|
|
7030
|
+
(_b = this.context) == null ? void 0 : _b.changeScopes(scopes);
|
|
7031
|
+
}
|
|
7032
|
+
getValue() {
|
|
7033
|
+
var _a, _b;
|
|
7034
|
+
return (_b = (_a = this.context) == null ? void 0 : _a.state.value) != null ? _b : [];
|
|
7035
|
+
}
|
|
7036
|
+
subscribeToValue(cb) {
|
|
7037
|
+
return this.contextObservable.pipe(
|
|
7038
|
+
rxjs.map((context) => {
|
|
7039
|
+
var _a;
|
|
7040
|
+
return (_a = context == null ? void 0 : context.state.value) != null ? _a : [];
|
|
7041
|
+
}),
|
|
7042
|
+
rxjs.pairwise(),
|
|
7043
|
+
rxjs.filter(([prevScopes, newScopes]) => !lodash.isEqual(prevScopes, newScopes))
|
|
7044
|
+
).subscribe(([prevScopes, newScopes]) => {
|
|
7045
|
+
cb(newScopes, prevScopes);
|
|
7046
|
+
});
|
|
7047
|
+
}
|
|
7048
|
+
isLoading() {
|
|
7049
|
+
var _a, _b;
|
|
7050
|
+
return (_b = (_a = this.context) == null ? void 0 : _a.state.loading) != null ? _b : false;
|
|
7051
|
+
}
|
|
7052
|
+
subscribeToLoading(cb) {
|
|
7053
|
+
return this.contextObservable.pipe(
|
|
7054
|
+
rxjs.filter((context) => !!context),
|
|
7055
|
+
rxjs.pairwise(),
|
|
7056
|
+
rxjs.map(
|
|
7057
|
+
([prevContext, newContext]) => {
|
|
7058
|
+
var _a, _b;
|
|
7059
|
+
return [(_a = prevContext == null ? void 0 : prevContext.state.loading) != null ? _a : false, (_b = newContext == null ? void 0 : newContext.state.loading) != null ? _b : false];
|
|
7060
|
+
}
|
|
7061
|
+
),
|
|
7062
|
+
rxjs.filter(([prevLoading, newLoading]) => prevLoading !== newLoading)
|
|
7063
|
+
).subscribe(([_prevLoading, newLoading]) => {
|
|
7064
|
+
cb(newLoading);
|
|
7065
|
+
});
|
|
7066
|
+
}
|
|
7067
|
+
setEnabled(enabled) {
|
|
7068
|
+
var _a;
|
|
7069
|
+
(_a = this.context) == null ? void 0 : _a.setEnabled(enabled);
|
|
7070
|
+
}
|
|
7071
|
+
setReadOnly(readOnly) {
|
|
7072
|
+
var _a;
|
|
7073
|
+
(_a = this.context) == null ? void 0 : _a.setReadOnly(readOnly);
|
|
7074
|
+
}
|
|
7075
|
+
updateContext(newContext) {
|
|
7076
|
+
var _a, _b;
|
|
7077
|
+
if (this._pendingScopes && newContext) {
|
|
7078
|
+
setTimeout(() => {
|
|
7079
|
+
newContext == null ? void 0 : newContext.changeScopes(this._pendingScopes);
|
|
7080
|
+
this._pendingScopes = null;
|
|
7081
|
+
});
|
|
7082
|
+
}
|
|
7083
|
+
if (this.context !== newContext || ((_a = this.context) == null ? void 0 : _a.state) !== (newContext == null ? void 0 : newContext.state)) {
|
|
7084
|
+
const shouldUpdate = ((_b = this.context) == null ? void 0 : _b.state.value) !== (newContext == null ? void 0 : newContext.state.value);
|
|
7085
|
+
this._contextSubject.next(newContext);
|
|
7086
|
+
if (shouldUpdate) {
|
|
7087
|
+
this.forceRender();
|
|
7088
|
+
}
|
|
7089
|
+
}
|
|
7090
|
+
}
|
|
7091
|
+
get context() {
|
|
7092
|
+
return this._contextSubject.getValue();
|
|
7093
|
+
}
|
|
7094
|
+
get contextObservable() {
|
|
7095
|
+
return this._contextSubject.asObservable();
|
|
7096
|
+
}
|
|
7097
|
+
}
|
|
7098
|
+
SceneScopesBridge.Component = SceneScopesBridgeRenderer;
|
|
7099
|
+
function SceneScopesBridgeRenderer({ model }) {
|
|
7100
|
+
const context = runtime.useScopes();
|
|
7101
|
+
React.useEffect(() => {
|
|
7102
|
+
model.updateContext(context);
|
|
7103
|
+
}, [context, model]);
|
|
7104
|
+
return null;
|
|
7105
|
+
}
|
|
7106
|
+
|
|
6976
7107
|
function getVariables(sceneObject) {
|
|
6977
7108
|
var _a;
|
|
6978
7109
|
return (_a = getClosest(sceneObject, (s) => s.state.$variables)) != null ? _a : EmptyVariableSet;
|
|
@@ -7116,6 +7247,10 @@ function findDescendents(scene, descendentType) {
|
|
|
7116
7247
|
const targetScenes = findAllObjects(scene, isDescendentType);
|
|
7117
7248
|
return targetScenes.filter(isDescendentType);
|
|
7118
7249
|
}
|
|
7250
|
+
function getScopesBridge(sceneObject) {
|
|
7251
|
+
var _a;
|
|
7252
|
+
return (_a = findObject(sceneObject, (s) => s instanceof SceneScopesBridge)) != null ? _a : void 0;
|
|
7253
|
+
}
|
|
7119
7254
|
|
|
7120
7255
|
const sceneGraph = {
|
|
7121
7256
|
getVariables,
|
|
@@ -7132,7 +7267,8 @@ const sceneGraph = {
|
|
|
7132
7267
|
findAllObjects,
|
|
7133
7268
|
getAncestor,
|
|
7134
7269
|
getQueryController,
|
|
7135
|
-
findDescendents
|
|
7270
|
+
findDescendents,
|
|
7271
|
+
getScopesBridge
|
|
7136
7272
|
};
|
|
7137
7273
|
|
|
7138
7274
|
class UniqueUrlKeyMapper {
|
|
@@ -12886,6 +13022,10 @@ class SplitLayout extends SceneObjectBase {
|
|
|
12886
13022
|
SplitLayout.Component = SplitLayoutRenderer;
|
|
12887
13023
|
|
|
12888
13024
|
class SceneApp extends SceneObjectBase {
|
|
13025
|
+
constructor() {
|
|
13026
|
+
super(...arguments);
|
|
13027
|
+
this._renderBeforeActivation = true;
|
|
13028
|
+
}
|
|
12889
13029
|
enrichDataRequest() {
|
|
12890
13030
|
return {
|
|
12891
13031
|
app: this.state.name || "app"
|
|
@@ -12893,8 +13033,10 @@ class SceneApp extends SceneObjectBase {
|
|
|
12893
13033
|
}
|
|
12894
13034
|
}
|
|
12895
13035
|
SceneApp.Component = ({ model }) => {
|
|
12896
|
-
const { pages } = model.useState();
|
|
12897
|
-
return /* @__PURE__ */ React__default["default"].createElement(
|
|
13036
|
+
const { pages, scopesBridge } = model.useState();
|
|
13037
|
+
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, scopesBridge && /* @__PURE__ */ React__default["default"].createElement(scopesBridge.Component, {
|
|
13038
|
+
model: scopesBridge
|
|
13039
|
+
}), /* @__PURE__ */ React__default["default"].createElement(SceneAppContext.Provider, {
|
|
12898
13040
|
value: model
|
|
12899
13041
|
}, /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Routes, null, pages.map((page) => /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Route, {
|
|
12900
13042
|
key: page.state.url,
|
|
@@ -12902,7 +13044,7 @@ SceneApp.Component = ({ model }) => {
|
|
|
12902
13044
|
element: /* @__PURE__ */ React__default["default"].createElement(page.Component, {
|
|
12903
13045
|
model: page
|
|
12904
13046
|
})
|
|
12905
|
-
}))));
|
|
13047
|
+
})))));
|
|
12906
13048
|
};
|
|
12907
13049
|
const SceneAppContext = React.createContext(null);
|
|
12908
13050
|
const sceneAppCache = /* @__PURE__ */ new Map();
|
|
@@ -13257,6 +13399,21 @@ class SceneAppPage extends SceneObjectBase {
|
|
|
13257
13399
|
super(state);
|
|
13258
13400
|
this._sceneCache = /* @__PURE__ */ new Map();
|
|
13259
13401
|
this._drilldownCache = /* @__PURE__ */ new Map();
|
|
13402
|
+
this._activationHandler = () => {
|
|
13403
|
+
if (!this.state.useScopes) {
|
|
13404
|
+
return;
|
|
13405
|
+
}
|
|
13406
|
+
this._scopesBridge = sceneGraph.getScopesBridge(this);
|
|
13407
|
+
if (!this._scopesBridge) {
|
|
13408
|
+
throw new Error("Use of scopes is enabled but no scopes bridge found");
|
|
13409
|
+
}
|
|
13410
|
+
this._scopesBridge.setEnabled(true);
|
|
13411
|
+
return () => {
|
|
13412
|
+
var _a;
|
|
13413
|
+
(_a = this._scopesBridge) == null ? void 0 : _a.setEnabled(false);
|
|
13414
|
+
};
|
|
13415
|
+
};
|
|
13416
|
+
this.addActivationHandler(this._activationHandler);
|
|
13260
13417
|
}
|
|
13261
13418
|
initializeScene(scene) {
|
|
13262
13419
|
this.setState({ initializedScene: scene });
|
|
@@ -14256,6 +14413,7 @@ exports.SceneObjectUrlSyncConfig = SceneObjectUrlSyncConfig;
|
|
|
14256
14413
|
exports.SceneQueryRunner = SceneQueryRunner;
|
|
14257
14414
|
exports.SceneReactObject = SceneReactObject;
|
|
14258
14415
|
exports.SceneRefreshPicker = SceneRefreshPicker;
|
|
14416
|
+
exports.SceneScopesBridge = SceneScopesBridge;
|
|
14259
14417
|
exports.SceneTimePicker = SceneTimePicker;
|
|
14260
14418
|
exports.SceneTimeRange = SceneTimeRange;
|
|
14261
14419
|
exports.SceneTimeRangeCompare = SceneTimeRangeCompare;
|