@grafana/scenes 6.4.0--canary.1062.13769817941.0 → 6.4.0--canary.1062.13788998678.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 +15 -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 +12 -11
- 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/index.d.ts +70 -20
- package/dist/index.js +178 -25
- 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;
|
|
@@ -934,8 +985,10 @@ declare class AdHocFiltersVariable extends SceneObjectBase<AdHocFiltersVariableS
|
|
|
934
985
|
static Component: typeof AdHocFiltersVariableRenderer;
|
|
935
986
|
private _scopedVars;
|
|
936
987
|
private _dataSourceSrv;
|
|
988
|
+
private _scopesBridge;
|
|
937
989
|
protected _urlSync: AdHocFiltersVariableUrlSyncHandler;
|
|
938
990
|
constructor(state: Partial<AdHocFiltersVariableState>);
|
|
991
|
+
private _activationHandler;
|
|
939
992
|
setState(update: Partial<AdHocFiltersVariableState>): void;
|
|
940
993
|
/**
|
|
941
994
|
* Updates the variable's `filters` and `filterExpression` state.
|
|
@@ -1177,6 +1230,7 @@ declare class GroupByVariable extends MultiValueVariable<GroupByVariableState> {
|
|
|
1177
1230
|
static Component: typeof GroupByVariableRenderer;
|
|
1178
1231
|
isLazy: boolean;
|
|
1179
1232
|
protected _urlSync: SceneObjectUrlSyncHandler;
|
|
1233
|
+
private _scopesBridge;
|
|
1180
1234
|
validateAndUpdate(): Observable<ValidateAndUpdateResult>;
|
|
1181
1235
|
private _updateValueGivenNewOptions;
|
|
1182
1236
|
getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]>;
|
|
@@ -1193,7 +1247,7 @@ declare class GroupByVariable extends MultiValueVariable<GroupByVariableState> {
|
|
|
1193
1247
|
text: string[];
|
|
1194
1248
|
};
|
|
1195
1249
|
}
|
|
1196
|
-
declare function GroupByVariableRenderer({ model }: SceneComponentProps<
|
|
1250
|
+
declare function GroupByVariableRenderer({ model }: SceneComponentProps<GroupByVariable>): React__default.JSX.Element;
|
|
1197
1251
|
|
|
1198
1252
|
declare function isAdHocVariable(variable: SceneVariable): variable is AdHocFiltersVariable;
|
|
1199
1253
|
declare function isConstantVariable(variable: SceneVariable): variable is ConstantVariable;
|
|
@@ -1372,6 +1426,10 @@ declare function getAncestor<ParentType>(sceneObject: SceneObject, ancestorType:
|
|
|
1372
1426
|
* This will search down the full scene graph, looking for objects that match the provided descendentType type.
|
|
1373
1427
|
*/
|
|
1374
1428
|
declare function findDescendents<T extends SceneObject>(scene: SceneObject, descendentType: SceneType<T>): T[];
|
|
1429
|
+
/**
|
|
1430
|
+
* Will walk up the scene object graph to the closest $scopesBridge scene object
|
|
1431
|
+
*/
|
|
1432
|
+
declare function getScopesBridge(sceneObject: SceneObject): SceneScopesBridge | undefined;
|
|
1375
1433
|
|
|
1376
1434
|
declare const sceneGraph: {
|
|
1377
1435
|
getVariables: typeof getVariables;
|
|
@@ -1389,6 +1447,7 @@ declare const sceneGraph: {
|
|
|
1389
1447
|
getAncestor: typeof getAncestor;
|
|
1390
1448
|
getQueryController: typeof getQueryController;
|
|
1391
1449
|
findDescendents: typeof findDescendents;
|
|
1450
|
+
getScopesBridge: typeof getScopesBridge;
|
|
1392
1451
|
};
|
|
1393
1452
|
|
|
1394
1453
|
interface ActWhenVariableChangedState extends SceneObjectState {
|
|
@@ -1566,21 +1625,6 @@ declare class SceneDataNode extends SceneObjectBase<SceneDataNodeState> implemen
|
|
|
1566
1625
|
getResultsStream(): rxjs.Observable<SceneDataProviderResult>;
|
|
1567
1626
|
}
|
|
1568
1627
|
|
|
1569
|
-
interface SceneObjectUrlSyncConfigOptions {
|
|
1570
|
-
keys: string[] | (() => string[]);
|
|
1571
|
-
}
|
|
1572
|
-
declare class SceneObjectUrlSyncConfig implements SceneObjectUrlSyncHandler {
|
|
1573
|
-
private _sceneObject;
|
|
1574
|
-
private _keys;
|
|
1575
|
-
private _nextChangeShouldAddHistoryStep;
|
|
1576
|
-
constructor(_sceneObject: SceneObjectWithUrlSync, _options: SceneObjectUrlSyncConfigOptions);
|
|
1577
|
-
getKeys(): string[];
|
|
1578
|
-
getUrlState(): SceneObjectUrlValues;
|
|
1579
|
-
updateFromUrl(values: SceneObjectUrlValues): void;
|
|
1580
|
-
shouldCreateHistoryStep(values: SceneObjectUrlValues): boolean;
|
|
1581
|
-
performBrowserHistoryAction(callback: () => void): void;
|
|
1582
|
-
}
|
|
1583
|
-
|
|
1584
1628
|
declare class SceneTimeRange extends SceneObjectBase<SceneTimeRangeState> implements SceneTimeRangeLike {
|
|
1585
1629
|
protected _urlSync: SceneObjectUrlSyncConfig;
|
|
1586
1630
|
constructor(state?: Partial<SceneTimeRangeState>);
|
|
@@ -1655,6 +1699,8 @@ declare class SceneQueryRunner extends SceneObjectBase<QueryRunnerState> impleme
|
|
|
1655
1699
|
private _dataLayersMerger;
|
|
1656
1700
|
private _timeSub?;
|
|
1657
1701
|
private _timeSubRange?;
|
|
1702
|
+
private _scopesSub?;
|
|
1703
|
+
private _scopesSubBridge?;
|
|
1658
1704
|
private _containerWidth?;
|
|
1659
1705
|
private _variableValueRecorder;
|
|
1660
1706
|
private _results;
|
|
@@ -1693,11 +1739,12 @@ declare class SceneQueryRunner extends SceneObjectBase<QueryRunnerState> impleme
|
|
|
1693
1739
|
private _onDeactivate;
|
|
1694
1740
|
setContainerWidth(width: number): void;
|
|
1695
1741
|
isDataReadyToDisplay(): boolean;
|
|
1742
|
+
private subscribeToScopesChanges;
|
|
1696
1743
|
private subscribeToTimeRangeChanges;
|
|
1697
1744
|
runQueries(): void;
|
|
1698
1745
|
private getMaxDataPoints;
|
|
1699
1746
|
cancelQuery(): void;
|
|
1700
|
-
private
|
|
1747
|
+
private runWithTimeRangeAndScopes;
|
|
1701
1748
|
clone(withState?: Partial<QueryRunnerState>): this;
|
|
1702
1749
|
private prepareRequests;
|
|
1703
1750
|
private onDataReceived;
|
|
@@ -2421,6 +2468,7 @@ declare const LazyLoader: LazyLoaderType;
|
|
|
2421
2468
|
* Responsible for top level pages routing
|
|
2422
2469
|
*/
|
|
2423
2470
|
declare class SceneApp extends SceneObjectBase<SceneAppState> implements DataRequestEnricher {
|
|
2471
|
+
protected _renderBeforeActivation: boolean;
|
|
2424
2472
|
enrichDataRequest(): {
|
|
2425
2473
|
app: string;
|
|
2426
2474
|
};
|
|
@@ -2438,7 +2486,9 @@ declare class SceneAppPage extends SceneObjectBase<SceneAppPageState> implements
|
|
|
2438
2486
|
static Component: typeof SceneAppPageRenderer;
|
|
2439
2487
|
private _sceneCache;
|
|
2440
2488
|
private _drilldownCache;
|
|
2489
|
+
private _scopesBridge;
|
|
2441
2490
|
constructor(state: SceneAppPageState);
|
|
2491
|
+
private _activationHandler;
|
|
2442
2492
|
initializeScene(scene: EmbeddedScene): void;
|
|
2443
2493
|
getScene(routeMatch: SceneRouteMatch): EmbeddedScene;
|
|
2444
2494
|
getDrilldownPage(drilldown: SceneAppDrilldownView, routeMatch: SceneRouteMatch<{}>): SceneAppPageLike;
|
|
@@ -2939,4 +2989,4 @@ declare const sceneUtils: {
|
|
|
2939
2989
|
isGroupByVariable: typeof isGroupByVariable;
|
|
2940
2990
|
};
|
|
2941
2991
|
|
|
2942
|
-
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 };
|
|
2992
|
+
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 });
|
|
@@ -5473,9 +5474,13 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5473
5474
|
this._scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };
|
|
5474
5475
|
this._dataSourceSrv = runtime.getDataSourceSrv();
|
|
5475
5476
|
this._urlSync = new AdHocFiltersVariableUrlSyncHandler(this);
|
|
5477
|
+
this._activationHandler = () => {
|
|
5478
|
+
this._scopesBridge = sceneGraph.getScopesBridge(this);
|
|
5479
|
+
};
|
|
5476
5480
|
if (this.state.applyMode === "auto") {
|
|
5477
5481
|
patchGetAdhocFilters(this);
|
|
5478
5482
|
}
|
|
5483
|
+
this.addActivationHandler(this._activationHandler);
|
|
5479
5484
|
}
|
|
5480
5485
|
setState(update) {
|
|
5481
5486
|
var _a, _b, _c;
|
|
@@ -5598,7 +5603,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5598
5603
|
}
|
|
5599
5604
|
}
|
|
5600
5605
|
async _getKeys(currentKey) {
|
|
5601
|
-
var _a, _b, _c;
|
|
5606
|
+
var _a, _b, _c, _d;
|
|
5602
5607
|
const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, currentKey));
|
|
5603
5608
|
if (override && override.replace) {
|
|
5604
5609
|
return dataFromResponse(override.values).map(toSelectableValue);
|
|
@@ -5616,7 +5621,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5616
5621
|
const response = await ds.getTagKeys(__spreadValues$z({
|
|
5617
5622
|
filters: otherFilters,
|
|
5618
5623
|
queries,
|
|
5619
|
-
timeRange
|
|
5624
|
+
timeRange,
|
|
5625
|
+
scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue()
|
|
5620
5626
|
}, getEnrichedFiltersRequest(this)));
|
|
5621
5627
|
if (responseHasError(response)) {
|
|
5622
5628
|
this.setState({ error: response.error.message });
|
|
@@ -5632,7 +5638,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5632
5638
|
return keys.map(toSelectableValue);
|
|
5633
5639
|
}
|
|
5634
5640
|
async _getValuesFor(filter) {
|
|
5635
|
-
var _a, _b, _c, _d, _e
|
|
5641
|
+
var _a, _b, _c, _d, _e;
|
|
5636
5642
|
const override = await ((_b = (_a = this.state).getTagValuesProvider) == null ? void 0 : _b.call(_a, this, filter));
|
|
5637
5643
|
if (override && override.replace) {
|
|
5638
5644
|
return dataFromResponse(override.values).map(toSelectableValue);
|
|
@@ -5645,7 +5651,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5645
5651
|
const otherFilters = this.state.filters.filter((f) => f.key !== filter.key).concat(filteredBaseFilters);
|
|
5646
5652
|
const timeRange = sceneGraph.getTimeRange(this).state.value;
|
|
5647
5653
|
const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
|
|
5648
|
-
const
|
|
5654
|
+
const scopes = (_e = this._scopesBridge) == null ? void 0 : _e.getValue().map((scope) => {
|
|
5649
5655
|
return __spreadProps$n(__spreadValues$z({}, scope), {
|
|
5650
5656
|
spec: __spreadProps$n(__spreadValues$z({}, scope.spec), {
|
|
5651
5657
|
filters: scope.spec.filters.filter(
|
|
@@ -5657,17 +5663,13 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5657
5663
|
})
|
|
5658
5664
|
});
|
|
5659
5665
|
});
|
|
5660
|
-
const scopeProps = {};
|
|
5661
|
-
if (injectedScopes) {
|
|
5662
|
-
scopeProps.scopes = injectedScopes;
|
|
5663
|
-
scopeProps.scopesInjected = true;
|
|
5664
|
-
}
|
|
5665
5666
|
const response = await ds.getTagValues(__spreadValues$z({
|
|
5666
5667
|
key: filter.key,
|
|
5667
5668
|
filters: otherFilters,
|
|
5668
5669
|
timeRange,
|
|
5669
|
-
queries
|
|
5670
|
-
|
|
5670
|
+
queries,
|
|
5671
|
+
scopes
|
|
5672
|
+
}, getEnrichedFiltersRequest(this)));
|
|
5671
5673
|
if (responseHasError(response)) {
|
|
5672
5674
|
this.setState({ error: response.error.message });
|
|
5673
5675
|
}
|
|
@@ -5854,6 +5856,7 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
5854
5856
|
_onActivate() {
|
|
5855
5857
|
if (this.isQueryModeAuto()) {
|
|
5856
5858
|
const timeRange = sceneGraph.getTimeRange(this);
|
|
5859
|
+
const scopesBridge = sceneGraph.getScopesBridge(this);
|
|
5857
5860
|
const providers = this.getClosestExtraQueryProviders();
|
|
5858
5861
|
for (const provider of providers) {
|
|
5859
5862
|
this._subs.add(
|
|
@@ -5864,6 +5867,7 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
5864
5867
|
})
|
|
5865
5868
|
);
|
|
5866
5869
|
}
|
|
5870
|
+
this.subscribeToScopesChanges(scopesBridge);
|
|
5867
5871
|
this.subscribeToTimeRangeChanges(timeRange);
|
|
5868
5872
|
if (this.shouldRunQueriesOnActivate()) {
|
|
5869
5873
|
this.runQueries();
|
|
@@ -6009,6 +6013,21 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
6009
6013
|
isDataReadyToDisplay() {
|
|
6010
6014
|
return Boolean(this.state._hasFetchedData);
|
|
6011
6015
|
}
|
|
6016
|
+
subscribeToScopesChanges(scopesBridge) {
|
|
6017
|
+
if (!scopesBridge) {
|
|
6018
|
+
return;
|
|
6019
|
+
}
|
|
6020
|
+
if (this._scopesSubBridge === scopesBridge) {
|
|
6021
|
+
return;
|
|
6022
|
+
}
|
|
6023
|
+
if (this._scopesSub) {
|
|
6024
|
+
this._scopesSub.unsubscribe();
|
|
6025
|
+
}
|
|
6026
|
+
this._scopesSubBridge = scopesBridge;
|
|
6027
|
+
this._scopesSub = scopesBridge.subscribeToValue(() => {
|
|
6028
|
+
this.runWithTimeRangeAndScopes(sceneGraph.getTimeRange(this), scopesBridge);
|
|
6029
|
+
});
|
|
6030
|
+
}
|
|
6012
6031
|
subscribeToTimeRangeChanges(timeRange) {
|
|
6013
6032
|
if (this._timeSubRange === timeRange) {
|
|
6014
6033
|
return;
|
|
@@ -6018,15 +6037,17 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
6018
6037
|
}
|
|
6019
6038
|
this._timeSubRange = timeRange;
|
|
6020
6039
|
this._timeSub = timeRange.subscribeToState(() => {
|
|
6021
|
-
this.
|
|
6040
|
+
this.runWithTimeRangeAndScopes(timeRange, sceneGraph.getScopesBridge(this));
|
|
6022
6041
|
});
|
|
6023
6042
|
}
|
|
6024
6043
|
runQueries() {
|
|
6025
6044
|
const timeRange = sceneGraph.getTimeRange(this);
|
|
6045
|
+
const scopesBridge = sceneGraph.getScopesBridge(this);
|
|
6026
6046
|
if (this.isQueryModeAuto()) {
|
|
6027
6047
|
this.subscribeToTimeRangeChanges(timeRange);
|
|
6048
|
+
this.subscribeToScopesChanges(scopesBridge);
|
|
6028
6049
|
}
|
|
6029
|
-
this.
|
|
6050
|
+
this.runWithTimeRangeAndScopes(timeRange, scopesBridge);
|
|
6030
6051
|
}
|
|
6031
6052
|
getMaxDataPoints() {
|
|
6032
6053
|
var _a;
|
|
@@ -6046,8 +6067,8 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
6046
6067
|
data: __spreadProps$m(__spreadValues$y({}, this.state.data), { state: schema.LoadingState.Done })
|
|
6047
6068
|
});
|
|
6048
6069
|
}
|
|
6049
|
-
async
|
|
6050
|
-
var _a, _b, _c;
|
|
6070
|
+
async runWithTimeRangeAndScopes(timeRange, scopesBridge) {
|
|
6071
|
+
var _a, _b, _c, _d;
|
|
6051
6072
|
if (!this.state.maxDataPoints && this.state.maxDataPointsFromWidth && !this._containerWidth) {
|
|
6052
6073
|
return;
|
|
6053
6074
|
}
|
|
@@ -6060,17 +6081,22 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
6060
6081
|
this.setState({ data: __spreadProps$m(__spreadValues$y({}, (_b = this.state.data) != null ? _b : emptyPanelData), { state: schema.LoadingState.Loading }) });
|
|
6061
6082
|
return;
|
|
6062
6083
|
}
|
|
6084
|
+
if (scopesBridge == null ? void 0 : scopesBridge.isLoading()) {
|
|
6085
|
+
writeSceneLog("SceneQueryRunner", "Scopes are in loading state, skipping query execution");
|
|
6086
|
+
this.setState({ data: __spreadProps$m(__spreadValues$y({}, (_c = this.state.data) != null ? _c : emptyPanelData), { state: schema.LoadingState.Loading }) });
|
|
6087
|
+
return;
|
|
6088
|
+
}
|
|
6063
6089
|
const { queries } = this.state;
|
|
6064
6090
|
if (!(queries == null ? void 0 : queries.length)) {
|
|
6065
6091
|
this._setNoDataState();
|
|
6066
6092
|
return;
|
|
6067
6093
|
}
|
|
6068
6094
|
try {
|
|
6069
|
-
const datasource = (
|
|
6095
|
+
const datasource = (_d = this.state.datasource) != null ? _d : findFirstDatasource(queries);
|
|
6070
6096
|
const ds = await getDataSource(datasource, this._scopedVars);
|
|
6071
6097
|
this.findAndSubscribeToAdHocFilters(ds.uid);
|
|
6072
6098
|
const runRequest = runtime.getRunRequest();
|
|
6073
|
-
const { primary, secondaries, processors } = this.prepareRequests(timeRange, ds);
|
|
6099
|
+
const { primary, secondaries, processors } = this.prepareRequests(timeRange, ds, scopesBridge);
|
|
6074
6100
|
writeSceneLog("SceneQueryRunner", "Starting runRequest", this.state.key);
|
|
6075
6101
|
let stream = runRequest(ds, primary);
|
|
6076
6102
|
if (secondaries.length > 0) {
|
|
@@ -6109,7 +6135,7 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
6109
6135
|
clone["_results"].next({ origin: this, data: (_a = this.state.data) != null ? _a : emptyPanelData });
|
|
6110
6136
|
return clone;
|
|
6111
6137
|
}
|
|
6112
|
-
prepareRequests(timeRange, ds) {
|
|
6138
|
+
prepareRequests(timeRange, ds, scopesBridge) {
|
|
6113
6139
|
var _a, _b;
|
|
6114
6140
|
const { minInterval, queries } = this.state;
|
|
6115
6141
|
let request = __spreadValues$y({
|
|
@@ -6129,7 +6155,8 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
|
6129
6155
|
to: timeRange.state.to
|
|
6130
6156
|
},
|
|
6131
6157
|
cacheTimeout: this.state.cacheTimeout,
|
|
6132
|
-
queryCachingTTL: this.state.queryCachingTTL
|
|
6158
|
+
queryCachingTTL: this.state.queryCachingTTL,
|
|
6159
|
+
scopes: scopesBridge == null ? void 0 : scopesBridge.getValue()
|
|
6133
6160
|
}, getEnrichedDataRequest(this));
|
|
6134
6161
|
if (this._adhocFiltersVar) {
|
|
6135
6162
|
request.filters = [];
|
|
@@ -7091,6 +7118,105 @@ function containsSearchFilter(query) {
|
|
|
7091
7118
|
return str.indexOf(SEARCH_FILTER_VARIABLE) > -1;
|
|
7092
7119
|
}
|
|
7093
7120
|
|
|
7121
|
+
class SceneScopesBridge extends SceneObjectBase {
|
|
7122
|
+
constructor() {
|
|
7123
|
+
super(...arguments);
|
|
7124
|
+
this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["scopes"] });
|
|
7125
|
+
this._renderBeforeActivation = true;
|
|
7126
|
+
this._contextSubject = new rxjs.BehaviorSubject(void 0);
|
|
7127
|
+
this._pendingScopes = null;
|
|
7128
|
+
}
|
|
7129
|
+
getUrlState() {
|
|
7130
|
+
var _a, _b, _c;
|
|
7131
|
+
return {
|
|
7132
|
+
scopes: (_c = this._pendingScopes) != null ? _c : ((_b = (_a = this.context) == null ? void 0 : _a.state.value) != null ? _b : []).map((scope) => scope.metadata.name)
|
|
7133
|
+
};
|
|
7134
|
+
}
|
|
7135
|
+
updateFromUrl(values) {
|
|
7136
|
+
var _a, _b;
|
|
7137
|
+
let scopes = (_a = values["scopes"]) != null ? _a : [];
|
|
7138
|
+
scopes = (Array.isArray(scopes) ? scopes : [scopes]).map(String);
|
|
7139
|
+
if (!this.context) {
|
|
7140
|
+
this._pendingScopes = scopes;
|
|
7141
|
+
return;
|
|
7142
|
+
}
|
|
7143
|
+
(_b = this.context) == null ? void 0 : _b.changeScopes(scopes);
|
|
7144
|
+
}
|
|
7145
|
+
getValue() {
|
|
7146
|
+
var _a, _b;
|
|
7147
|
+
return (_b = (_a = this.context) == null ? void 0 : _a.state.value) != null ? _b : [];
|
|
7148
|
+
}
|
|
7149
|
+
subscribeToValue(cb) {
|
|
7150
|
+
return this.contextObservable.pipe(
|
|
7151
|
+
rxjs.map((context) => {
|
|
7152
|
+
var _a;
|
|
7153
|
+
return (_a = context == null ? void 0 : context.state.value) != null ? _a : [];
|
|
7154
|
+
}),
|
|
7155
|
+
rxjs.pairwise(),
|
|
7156
|
+
rxjs.filter(([prevScopes, newScopes]) => !lodash.isEqual(prevScopes, newScopes))
|
|
7157
|
+
).subscribe(([prevScopes, newScopes]) => {
|
|
7158
|
+
cb(newScopes, prevScopes);
|
|
7159
|
+
});
|
|
7160
|
+
}
|
|
7161
|
+
isLoading() {
|
|
7162
|
+
var _a, _b;
|
|
7163
|
+
return (_b = (_a = this.context) == null ? void 0 : _a.state.loading) != null ? _b : false;
|
|
7164
|
+
}
|
|
7165
|
+
subscribeToLoading(cb) {
|
|
7166
|
+
return this.contextObservable.pipe(
|
|
7167
|
+
rxjs.filter((context) => !!context),
|
|
7168
|
+
rxjs.pairwise(),
|
|
7169
|
+
rxjs.map(
|
|
7170
|
+
([prevContext, newContext]) => {
|
|
7171
|
+
var _a, _b;
|
|
7172
|
+
return [(_a = prevContext == null ? void 0 : prevContext.state.loading) != null ? _a : false, (_b = newContext == null ? void 0 : newContext.state.loading) != null ? _b : false];
|
|
7173
|
+
}
|
|
7174
|
+
),
|
|
7175
|
+
rxjs.filter(([prevLoading, newLoading]) => prevLoading !== newLoading)
|
|
7176
|
+
).subscribe(([_prevLoading, newLoading]) => {
|
|
7177
|
+
cb(newLoading);
|
|
7178
|
+
});
|
|
7179
|
+
}
|
|
7180
|
+
setEnabled(enabled) {
|
|
7181
|
+
var _a;
|
|
7182
|
+
(_a = this.context) == null ? void 0 : _a.setEnabled(enabled);
|
|
7183
|
+
}
|
|
7184
|
+
setReadOnly(readOnly) {
|
|
7185
|
+
var _a;
|
|
7186
|
+
(_a = this.context) == null ? void 0 : _a.setReadOnly(readOnly);
|
|
7187
|
+
}
|
|
7188
|
+
updateContext(newContext) {
|
|
7189
|
+
var _a, _b;
|
|
7190
|
+
if (this._pendingScopes && newContext) {
|
|
7191
|
+
setTimeout(() => {
|
|
7192
|
+
newContext == null ? void 0 : newContext.changeScopes(this._pendingScopes);
|
|
7193
|
+
this._pendingScopes = null;
|
|
7194
|
+
});
|
|
7195
|
+
}
|
|
7196
|
+
if (this.context !== newContext || ((_a = this.context) == null ? void 0 : _a.state) !== (newContext == null ? void 0 : newContext.state)) {
|
|
7197
|
+
const shouldUpdate = ((_b = this.context) == null ? void 0 : _b.state.value) !== (newContext == null ? void 0 : newContext.state.value);
|
|
7198
|
+
this._contextSubject.next(newContext);
|
|
7199
|
+
if (shouldUpdate) {
|
|
7200
|
+
this.forceRender();
|
|
7201
|
+
}
|
|
7202
|
+
}
|
|
7203
|
+
}
|
|
7204
|
+
get context() {
|
|
7205
|
+
return this._contextSubject.getValue();
|
|
7206
|
+
}
|
|
7207
|
+
get contextObservable() {
|
|
7208
|
+
return this._contextSubject.asObservable();
|
|
7209
|
+
}
|
|
7210
|
+
}
|
|
7211
|
+
SceneScopesBridge.Component = SceneScopesBridgeRenderer;
|
|
7212
|
+
function SceneScopesBridgeRenderer({ model }) {
|
|
7213
|
+
const context = runtime.useScopes();
|
|
7214
|
+
React.useEffect(() => {
|
|
7215
|
+
model.updateContext(context);
|
|
7216
|
+
}, [context, model]);
|
|
7217
|
+
return null;
|
|
7218
|
+
}
|
|
7219
|
+
|
|
7094
7220
|
function getVariables(sceneObject) {
|
|
7095
7221
|
var _a;
|
|
7096
7222
|
return (_a = getClosest(sceneObject, (s) => s.state.$variables)) != null ? _a : EmptyVariableSet;
|
|
@@ -7234,6 +7360,10 @@ function findDescendents(scene, descendentType) {
|
|
|
7234
7360
|
const targetScenes = findAllObjects(scene, isDescendentType);
|
|
7235
7361
|
return targetScenes.filter(isDescendentType);
|
|
7236
7362
|
}
|
|
7363
|
+
function getScopesBridge(sceneObject) {
|
|
7364
|
+
var _a;
|
|
7365
|
+
return (_a = findObject(sceneObject, (s) => s instanceof SceneScopesBridge)) != null ? _a : void 0;
|
|
7366
|
+
}
|
|
7237
7367
|
|
|
7238
7368
|
const sceneGraph = {
|
|
7239
7369
|
getVariables,
|
|
@@ -7250,7 +7380,8 @@ const sceneGraph = {
|
|
|
7250
7380
|
findAllObjects,
|
|
7251
7381
|
getAncestor,
|
|
7252
7382
|
getQueryController,
|
|
7253
|
-
findDescendents
|
|
7383
|
+
findDescendents,
|
|
7384
|
+
getScopesBridge
|
|
7254
7385
|
};
|
|
7255
7386
|
|
|
7256
7387
|
class UniqueUrlKeyMapper {
|
|
@@ -13004,6 +13135,10 @@ class SplitLayout extends SceneObjectBase {
|
|
|
13004
13135
|
SplitLayout.Component = SplitLayoutRenderer;
|
|
13005
13136
|
|
|
13006
13137
|
class SceneApp extends SceneObjectBase {
|
|
13138
|
+
constructor() {
|
|
13139
|
+
super(...arguments);
|
|
13140
|
+
this._renderBeforeActivation = true;
|
|
13141
|
+
}
|
|
13007
13142
|
enrichDataRequest() {
|
|
13008
13143
|
return {
|
|
13009
13144
|
app: this.state.name || "app"
|
|
@@ -13011,8 +13146,10 @@ class SceneApp extends SceneObjectBase {
|
|
|
13011
13146
|
}
|
|
13012
13147
|
}
|
|
13013
13148
|
SceneApp.Component = ({ model }) => {
|
|
13014
|
-
const { pages } = model.useState();
|
|
13015
|
-
return /* @__PURE__ */ React__default["default"].createElement(
|
|
13149
|
+
const { pages, scopesBridge } = model.useState();
|
|
13150
|
+
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, scopesBridge && /* @__PURE__ */ React__default["default"].createElement(scopesBridge.Component, {
|
|
13151
|
+
model: scopesBridge
|
|
13152
|
+
}), /* @__PURE__ */ React__default["default"].createElement(SceneAppContext.Provider, {
|
|
13016
13153
|
value: model
|
|
13017
13154
|
}, /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Routes, null, pages.map((page) => /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Route, {
|
|
13018
13155
|
key: page.state.url,
|
|
@@ -13020,7 +13157,7 @@ SceneApp.Component = ({ model }) => {
|
|
|
13020
13157
|
element: /* @__PURE__ */ React__default["default"].createElement(page.Component, {
|
|
13021
13158
|
model: page
|
|
13022
13159
|
})
|
|
13023
|
-
}))));
|
|
13160
|
+
})))));
|
|
13024
13161
|
};
|
|
13025
13162
|
const SceneAppContext = React.createContext(null);
|
|
13026
13163
|
const sceneAppCache = /* @__PURE__ */ new Map();
|
|
@@ -13375,6 +13512,21 @@ class SceneAppPage extends SceneObjectBase {
|
|
|
13375
13512
|
super(state);
|
|
13376
13513
|
this._sceneCache = /* @__PURE__ */ new Map();
|
|
13377
13514
|
this._drilldownCache = /* @__PURE__ */ new Map();
|
|
13515
|
+
this._activationHandler = () => {
|
|
13516
|
+
if (!this.state.useScopes) {
|
|
13517
|
+
return;
|
|
13518
|
+
}
|
|
13519
|
+
this._scopesBridge = sceneGraph.getScopesBridge(this);
|
|
13520
|
+
if (!this._scopesBridge) {
|
|
13521
|
+
throw new Error("Use of scopes is enabled but no scopes bridge found");
|
|
13522
|
+
}
|
|
13523
|
+
this._scopesBridge.setEnabled(true);
|
|
13524
|
+
return () => {
|
|
13525
|
+
var _a;
|
|
13526
|
+
(_a = this._scopesBridge) == null ? void 0 : _a.setEnabled(false);
|
|
13527
|
+
};
|
|
13528
|
+
};
|
|
13529
|
+
this.addActivationHandler(this._activationHandler);
|
|
13378
13530
|
}
|
|
13379
13531
|
initializeScene(scene) {
|
|
13380
13532
|
this.setState({ initializedScene: scene });
|
|
@@ -14374,6 +14526,7 @@ exports.SceneObjectUrlSyncConfig = SceneObjectUrlSyncConfig;
|
|
|
14374
14526
|
exports.SceneQueryRunner = SceneQueryRunner;
|
|
14375
14527
|
exports.SceneReactObject = SceneReactObject;
|
|
14376
14528
|
exports.SceneRefreshPicker = SceneRefreshPicker;
|
|
14529
|
+
exports.SceneScopesBridge = SceneScopesBridge;
|
|
14377
14530
|
exports.SceneTimePicker = SceneTimePicker;
|
|
14378
14531
|
exports.SceneTimeRange = SceneTimeRange;
|
|
14379
14532
|
exports.SceneTimeRangeCompare = SceneTimeRangeCompare;
|