@grafana/scenes 0.0.7 → 0.0.9
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/dist/esm/components/EmbeddedScene.js +58 -0
- package/dist/esm/components/EmbeddedScene.js.map +1 -0
- package/dist/esm/components/NestedScene.js.map +1 -1
- package/dist/esm/components/SceneControlsSpacer.js +16 -0
- package/dist/esm/components/SceneControlsSpacer.js.map +1 -0
- package/dist/esm/components/SceneTimePicker.js +2 -1
- package/dist/esm/components/SceneTimePicker.js.map +1 -1
- package/dist/esm/components/VizPanel/VizPanel.js +4 -12
- package/dist/esm/components/VizPanel/VizPanel.js.map +1 -1
- package/dist/esm/core/sceneGraph.js +3 -3
- package/dist/esm/core/sceneGraph.js.map +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/variables/interpolation/formatRegistry.js +3 -0
- package/dist/esm/variables/interpolation/formatRegistry.js.map +1 -1
- package/dist/esm/variables/interpolation/sceneInterpolator.js +1 -5
- package/dist/esm/variables/interpolation/sceneInterpolator.js.map +1 -1
- package/dist/esm/variables/sets/SceneVariableSet.js +3 -1
- package/dist/esm/variables/sets/SceneVariableSet.js.map +1 -1
- package/dist/index.d.ts +19 -14
- package/dist/index.js +55 -43
- package/dist/index.js.map +1 -1
- package/package.json +116 -103
- package/dist/esm/components/Scene.js +0 -39
- package/dist/esm/components/Scene.js.map +0 -1
- package/dist/esm/components/SceneSubMenu.js +0 -18
- package/dist/esm/components/SceneSubMenu.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -623,14 +623,17 @@ declare class UrlSyncManager {
|
|
|
623
623
|
private syncSceneStateFromUrl;
|
|
624
624
|
}
|
|
625
625
|
|
|
626
|
-
interface
|
|
627
|
-
|
|
626
|
+
interface EmbeddedSceneState extends SceneObjectStatePlain {
|
|
627
|
+
/**
|
|
628
|
+
* The main content of the scene (usually a SceneFlexLayout)
|
|
629
|
+
*/
|
|
628
630
|
body: SceneObject;
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
631
|
+
/**
|
|
632
|
+
* Top row of variable selectors, filters, time pickers and custom actions.
|
|
633
|
+
*/
|
|
634
|
+
controls?: SceneObject[];
|
|
632
635
|
}
|
|
633
|
-
declare class EmbeddedScene extends SceneObjectBase<
|
|
636
|
+
declare class EmbeddedScene extends SceneObjectBase<EmbeddedSceneState> {
|
|
634
637
|
static Component: typeof EmbeddedSceneRenderer;
|
|
635
638
|
private urlSyncManager?;
|
|
636
639
|
activate(): void;
|
|
@@ -653,7 +656,7 @@ interface VizPanelState<TOptions = {}, TFieldConfig = {}> extends SceneLayoutChi
|
|
|
653
656
|
}
|
|
654
657
|
declare class VizPanel<TOptions = {}, TFieldConfig = {}> extends SceneObjectBase<VizPanelState<TOptions, TFieldConfig>> {
|
|
655
658
|
static Component: typeof VizPanelRenderer;
|
|
656
|
-
|
|
659
|
+
protected _variableDependency: VariableDependencyConfig<VizPanelState<TOptions, TFieldConfig>>;
|
|
657
660
|
private _plugin?;
|
|
658
661
|
constructor(state: Partial<VizPanelState<TOptions, TFieldConfig>>);
|
|
659
662
|
activate(): void;
|
|
@@ -664,7 +667,6 @@ declare class VizPanel<TOptions = {}, TFieldConfig = {}> extends SceneObjectBase
|
|
|
664
667
|
onOptionsChange: (options: TOptions) => void;
|
|
665
668
|
onFieldConfigChange: (fieldConfig: FieldConfigSource<TFieldConfig>) => void;
|
|
666
669
|
}
|
|
667
|
-
declare function VizPanelEditor({ model }: SceneComponentProps<VizPanel>): JSX.Element;
|
|
668
670
|
|
|
669
671
|
interface NestedSceneState extends SceneLayoutChildState {
|
|
670
672
|
title: string;
|
|
@@ -674,6 +676,10 @@ interface NestedSceneState extends SceneLayoutChildState {
|
|
|
674
676
|
body: SceneLayout;
|
|
675
677
|
actions?: SceneObject[];
|
|
676
678
|
}
|
|
679
|
+
/**
|
|
680
|
+
* @internal
|
|
681
|
+
* POC status, don't use this yet
|
|
682
|
+
*/
|
|
677
683
|
declare class NestedScene extends SceneObjectBase<NestedSceneState> {
|
|
678
684
|
static Component: typeof NestedSceneRenderer;
|
|
679
685
|
onToggle: () => void;
|
|
@@ -711,6 +717,7 @@ declare class SceneToolbarInput extends SceneObjectBase<SceneToolbarInputState>
|
|
|
711
717
|
|
|
712
718
|
interface SceneTimePickerState extends SceneObjectStatePlain {
|
|
713
719
|
hidePicker?: boolean;
|
|
720
|
+
isOnCanvas?: boolean;
|
|
714
721
|
}
|
|
715
722
|
declare class SceneTimePicker extends SceneObjectBase<SceneTimePickerState> {
|
|
716
723
|
static Component: typeof SceneTimePickerRenderer;
|
|
@@ -727,12 +734,10 @@ declare class SceneByFrameRepeater extends SceneObjectBase<RepeatOptions> {
|
|
|
727
734
|
static Component: ({ model, isEditing }: SceneComponentProps<SceneByFrameRepeater>) => JSX.Element;
|
|
728
735
|
}
|
|
729
736
|
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
static Component: typeof SceneSubMenuRenderer;
|
|
737
|
+
declare class SceneControlsSpacer extends SceneObjectBase<{}> {
|
|
738
|
+
constructor();
|
|
739
|
+
static Component: (_props: SceneComponentProps<SceneControlsSpacer>) => JSX.Element;
|
|
734
740
|
}
|
|
735
|
-
declare function SceneSubMenuRenderer({ model }: SceneComponentProps<SceneSubMenu>): JSX.Element;
|
|
736
741
|
|
|
737
742
|
type FlexLayoutDirection = 'column' | 'row';
|
|
738
743
|
interface SceneFlexLayoutState extends SceneLayoutState {
|
|
@@ -793,4 +798,4 @@ declare class SceneGridLayout extends SceneObjectBase<SceneGridLayoutState> {
|
|
|
793
798
|
}
|
|
794
799
|
declare function SceneGridLayoutRenderer({ model }: SceneComponentProps<SceneGridLayout>): JSX.Element;
|
|
795
800
|
|
|
796
|
-
export { ConstantVariable, CustomFormatterFn, CustomVariable, DataSourceVariable, DeepPartial, EmbeddedScene, FormatRegistryID, FormatVariable, NestedScene, QueryRunnerState, QueryVariable, SceneByFrameRepeater, SceneCanvasText, SceneComponent, SceneComponentProps, SceneDataNode, SceneDataState, SceneDataTransformer, SceneEditor, SceneEditorState, SceneFlexLayout, SceneGridLayout, SceneGridRow, SceneLayout, SceneLayoutChild, SceneLayoutChildOptions, SceneLayoutChildState, SceneLayoutState, SceneObject, SceneObjectBase, SceneObjectRef, SceneObjectState, SceneObjectStateChangedEvent, SceneObjectStateChangedPayload, SceneObjectStatePlain, SceneObjectUrlSyncConfig, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, SceneQueryRunner,
|
|
801
|
+
export { ConstantVariable, CustomFormatterFn, CustomVariable, DataSourceVariable, DeepPartial, EmbeddedScene, EmbeddedSceneState, FormatRegistryID, FormatVariable, NestedScene, QueryRunnerState, QueryVariable, SceneByFrameRepeater, SceneCanvasText, SceneComponent, SceneComponentProps, SceneControlsSpacer, SceneDataNode, SceneDataState, SceneDataTransformer, SceneEditor, SceneEditorState, SceneFlexLayout, SceneGridLayout, SceneGridRow, SceneLayout, SceneLayoutChild, SceneLayoutChildOptions, SceneLayoutChildState, SceneLayoutState, SceneObject, SceneObjectBase, SceneObjectRef, SceneObjectState, SceneObjectStateChangedEvent, SceneObjectStateChangedPayload, SceneObjectStatePlain, SceneObjectUrlSyncConfig, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, SceneQueryRunner, SceneTimePicker, SceneTimeRange, SceneTimeRangeLike, SceneTimeRangeState, SceneToolbarButton, SceneToolbarInput, SceneVariable, SceneVariableDependencyConfigLike, SceneVariableSet, SceneVariableSetState, SceneVariableState, SceneVariableValueChangedEvent, SceneVariables, TestVariable, UrlSyncManager, ValidateAndUpdateResult, VariableDependencyConfig, VariableValue, VariableValueCustom, VariableValueOption, VariableValueSelectors, VariableValueSingle, VizPanel, VizPanelState, formatRegistry, isSceneObject, sceneGraph };
|
package/dist/index.js
CHANGED
|
@@ -10,8 +10,8 @@ var ui = require('@grafana/ui');
|
|
|
10
10
|
var lodash = require('lodash');
|
|
11
11
|
var runtime = require('@grafana/runtime');
|
|
12
12
|
var e2eSelectors = require('@grafana/e2e-selectors');
|
|
13
|
-
var reactUse = require('react-use');
|
|
14
13
|
var css = require('@emotion/css');
|
|
14
|
+
var reactUse = require('react-use');
|
|
15
15
|
var experimental = require('@grafana/experimental');
|
|
16
16
|
var ReactGridLayout = require('react-grid-layout');
|
|
17
17
|
var AutoSizer = require('react-virtualized-auto-sizer');
|
|
@@ -451,10 +451,12 @@ class SceneVariableSet extends SceneObjectBase {
|
|
|
451
451
|
deactivate() {
|
|
452
452
|
var _a;
|
|
453
453
|
super.deactivate();
|
|
454
|
-
this.variablesToUpdate.clear();
|
|
455
454
|
for (const update of this.updating.values()) {
|
|
456
455
|
(_a = update.subscription) == null ? void 0 : _a.unsubscribe();
|
|
457
456
|
}
|
|
457
|
+
this.variablesToUpdate.clear();
|
|
458
|
+
this.updating.clear();
|
|
459
|
+
this.variablesThatHaveChanged.clear();
|
|
458
460
|
}
|
|
459
461
|
updateNextBatch() {
|
|
460
462
|
if (this.variablesToUpdate.size === 0 && this.variablesThatHaveChanged.size > 0) {
|
|
@@ -811,6 +813,9 @@ const formatRegistry = new data.Registry(() => {
|
|
|
811
813
|
case "iso":
|
|
812
814
|
return data.dateTime(nrValue).toISOString();
|
|
813
815
|
default:
|
|
816
|
+
if ((args || []).length > 1) {
|
|
817
|
+
return data.dateTime(nrValue).format(args.join(":"));
|
|
818
|
+
}
|
|
814
819
|
return data.dateTime(nrValue).format(arg);
|
|
815
820
|
}
|
|
816
821
|
}
|
|
@@ -869,13 +874,10 @@ function formatQueryParameter(name, value) {
|
|
|
869
874
|
return `var-${name}=${encodeURIComponentStrict(value)}`;
|
|
870
875
|
}
|
|
871
876
|
|
|
872
|
-
function sceneInterpolator(sceneObject, target,
|
|
877
|
+
function sceneInterpolator(sceneObject, target, scopedVars, format) {
|
|
873
878
|
if (!target) {
|
|
874
879
|
return target != null ? target : "";
|
|
875
880
|
}
|
|
876
|
-
if (getVariables(sceneObject) === EmptyVariableSet) {
|
|
877
|
-
return target;
|
|
878
|
-
}
|
|
879
881
|
VARIABLE_REGEX.lastIndex = 0;
|
|
880
882
|
return target.replace(VARIABLE_REGEX, (match, var1, var2, fmt2, var3, fieldPath, fmt3) => {
|
|
881
883
|
const variableName = var1 || var2 || var3;
|
|
@@ -994,10 +996,10 @@ function getLayout(scene) {
|
|
|
994
996
|
throw new Error("No layout found in scene tree");
|
|
995
997
|
}
|
|
996
998
|
function interpolate(sceneObject, value, scopedVars, format) {
|
|
997
|
-
if (
|
|
998
|
-
return
|
|
999
|
+
if (value === "" || value == null) {
|
|
1000
|
+
return "";
|
|
999
1001
|
}
|
|
1000
|
-
return sceneInterpolator(sceneObject, value,
|
|
1002
|
+
return sceneInterpolator(sceneObject, value, scopedVars, format);
|
|
1001
1003
|
}
|
|
1002
1004
|
const sceneGraph = {
|
|
1003
1005
|
getVariables,
|
|
@@ -2382,24 +2384,41 @@ class EmbeddedScene extends SceneObjectBase {
|
|
|
2382
2384
|
}
|
|
2383
2385
|
EmbeddedScene.Component = EmbeddedSceneRenderer;
|
|
2384
2386
|
function EmbeddedSceneRenderer({ model }) {
|
|
2385
|
-
const { body,
|
|
2387
|
+
const { body, controls } = model.useState();
|
|
2388
|
+
const styles = ui.useStyles2(getStyles$1);
|
|
2386
2389
|
return /* @__PURE__ */ React__default["default"].createElement("div", {
|
|
2387
|
-
|
|
2390
|
+
className: styles.container
|
|
2391
|
+
}, controls && /* @__PURE__ */ React__default["default"].createElement("div", {
|
|
2392
|
+
className: styles.controls
|
|
2393
|
+
}, controls.map((control) => /* @__PURE__ */ React__default["default"].createElement(control.Component, {
|
|
2394
|
+
key: control.state.key,
|
|
2395
|
+
model: control
|
|
2396
|
+
}))), /* @__PURE__ */ React__default["default"].createElement("div", {
|
|
2397
|
+
className: styles.body
|
|
2398
|
+
}, /* @__PURE__ */ React__default["default"].createElement(body.Component, {
|
|
2399
|
+
model: body
|
|
2400
|
+
})));
|
|
2401
|
+
}
|
|
2402
|
+
function getStyles$1(theme) {
|
|
2403
|
+
return {
|
|
2404
|
+
container: css.css({
|
|
2388
2405
|
flexGrow: 1,
|
|
2389
2406
|
display: "flex",
|
|
2390
2407
|
gap: "8px",
|
|
2391
|
-
overflow: "auto",
|
|
2392
2408
|
minHeight: "100%",
|
|
2393
2409
|
flexDirection: "column"
|
|
2394
|
-
}
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2410
|
+
}),
|
|
2411
|
+
body: css.css({
|
|
2412
|
+
flexGrow: 1,
|
|
2413
|
+
display: "flex",
|
|
2414
|
+
gap: "8px"
|
|
2415
|
+
}),
|
|
2416
|
+
controls: css.css({
|
|
2417
|
+
display: "flex",
|
|
2418
|
+
gap: theme.spacing(1),
|
|
2419
|
+
alignItems: "center"
|
|
2420
|
+
})
|
|
2421
|
+
};
|
|
2403
2422
|
}
|
|
2404
2423
|
|
|
2405
2424
|
function SceneDragHandle({ layoutKey, className }) {
|
|
@@ -2504,6 +2523,9 @@ class VizPanel extends SceneObjectBase {
|
|
|
2504
2523
|
title: "Title",
|
|
2505
2524
|
pluginId: "timeseries"
|
|
2506
2525
|
}, state));
|
|
2526
|
+
this._variableDependency = new VariableDependencyConfig(this, {
|
|
2527
|
+
statePaths: ["title", "options", "fieldConfig"]
|
|
2528
|
+
});
|
|
2507
2529
|
this.onChangeTimeRange = (timeRange) => {
|
|
2508
2530
|
const sceneTimeRange = sceneGraph.getTimeRange(this);
|
|
2509
2531
|
sceneTimeRange.onTimeRangeChange({
|
|
@@ -2564,16 +2586,6 @@ class VizPanel extends SceneObjectBase {
|
|
|
2564
2586
|
}
|
|
2565
2587
|
}
|
|
2566
2588
|
VizPanel.Component = VizPanelRenderer;
|
|
2567
|
-
VizPanel.Editor = VizPanelEditor;
|
|
2568
|
-
function VizPanelEditor({ model }) {
|
|
2569
|
-
const { title } = model.useState();
|
|
2570
|
-
return /* @__PURE__ */ React__default["default"].createElement(ui.Field, {
|
|
2571
|
-
label: "Title"
|
|
2572
|
-
}, /* @__PURE__ */ React__default["default"].createElement(ui.Input, {
|
|
2573
|
-
defaultValue: title,
|
|
2574
|
-
onBlur: (evt) => model.setState({ title: evt.currentTarget.value })
|
|
2575
|
-
}));
|
|
2576
|
-
}
|
|
2577
2589
|
|
|
2578
2590
|
var __defProp$2 = Object.defineProperty;
|
|
2579
2591
|
var __defProps$2 = Object.defineProperties;
|
|
@@ -2745,7 +2757,7 @@ class SceneTimePicker extends SceneObjectBase {
|
|
|
2745
2757
|
}
|
|
2746
2758
|
SceneTimePicker.Component = SceneTimePickerRenderer;
|
|
2747
2759
|
function SceneTimePickerRenderer({ model }) {
|
|
2748
|
-
const { hidePicker } = model.useState();
|
|
2760
|
+
const { hidePicker, isOnCanvas } = model.useState();
|
|
2749
2761
|
const timeRange = sceneGraph.getTimeRange(model);
|
|
2750
2762
|
const timeRangeState = timeRange.useState();
|
|
2751
2763
|
if (hidePicker) {
|
|
@@ -2754,6 +2766,7 @@ function SceneTimePickerRenderer({ model }) {
|
|
|
2754
2766
|
return /* @__PURE__ */ React__default["default"].createElement(ui.ToolbarButtonRow, {
|
|
2755
2767
|
alignment: "right"
|
|
2756
2768
|
}, /* @__PURE__ */ React__default["default"].createElement(ui.TimeRangePicker, {
|
|
2769
|
+
isOnCanvas,
|
|
2757
2770
|
value: timeRangeState.value,
|
|
2758
2771
|
onChange: timeRange.onTimeRangeChange,
|
|
2759
2772
|
timeZone: "browser",
|
|
@@ -2805,18 +2818,16 @@ SceneByFrameRepeater.Component = ({ model, isEditing }) => {
|
|
|
2805
2818
|
});
|
|
2806
2819
|
};
|
|
2807
2820
|
|
|
2808
|
-
class
|
|
2821
|
+
class SceneControlsSpacer extends SceneObjectBase {
|
|
2822
|
+
constructor() {
|
|
2823
|
+
super({});
|
|
2824
|
+
}
|
|
2809
2825
|
}
|
|
2810
|
-
|
|
2811
|
-
function SceneSubMenuRenderer({ model }) {
|
|
2812
|
-
const { children } = model.useState();
|
|
2826
|
+
SceneControlsSpacer.Component = (_props) => {
|
|
2813
2827
|
return /* @__PURE__ */ React__default["default"].createElement("div", {
|
|
2814
|
-
style: {
|
|
2815
|
-
}
|
|
2816
|
-
|
|
2817
|
-
model: child
|
|
2818
|
-
})));
|
|
2819
|
-
}
|
|
2828
|
+
style: { flexGrow: 1 }
|
|
2829
|
+
});
|
|
2830
|
+
};
|
|
2820
2831
|
|
|
2821
2832
|
class SceneFlexLayout extends SceneObjectBase {
|
|
2822
2833
|
toggleDirection() {
|
|
@@ -3305,6 +3316,7 @@ exports.NestedScene = NestedScene;
|
|
|
3305
3316
|
exports.QueryVariable = QueryVariable;
|
|
3306
3317
|
exports.SceneByFrameRepeater = SceneByFrameRepeater;
|
|
3307
3318
|
exports.SceneCanvasText = SceneCanvasText;
|
|
3319
|
+
exports.SceneControlsSpacer = SceneControlsSpacer;
|
|
3308
3320
|
exports.SceneDataNode = SceneDataNode;
|
|
3309
3321
|
exports.SceneDataTransformer = SceneDataTransformer;
|
|
3310
3322
|
exports.SceneFlexLayout = SceneFlexLayout;
|
|
@@ -3314,7 +3326,6 @@ exports.SceneObjectBase = SceneObjectBase;
|
|
|
3314
3326
|
exports.SceneObjectStateChangedEvent = SceneObjectStateChangedEvent;
|
|
3315
3327
|
exports.SceneObjectUrlSyncConfig = SceneObjectUrlSyncConfig;
|
|
3316
3328
|
exports.SceneQueryRunner = SceneQueryRunner;
|
|
3317
|
-
exports.SceneSubMenu = SceneSubMenu;
|
|
3318
3329
|
exports.SceneTimePicker = SceneTimePicker;
|
|
3319
3330
|
exports.SceneTimeRange = SceneTimeRange;
|
|
3320
3331
|
exports.SceneToolbarButton = SceneToolbarButton;
|
|
@@ -3323,6 +3334,7 @@ exports.SceneVariableSet = SceneVariableSet;
|
|
|
3323
3334
|
exports.SceneVariableValueChangedEvent = SceneVariableValueChangedEvent;
|
|
3324
3335
|
exports.TestVariable = TestVariable;
|
|
3325
3336
|
exports.UrlSyncManager = UrlSyncManager;
|
|
3337
|
+
exports.VariableDependencyConfig = VariableDependencyConfig;
|
|
3326
3338
|
exports.VariableValueSelectors = VariableValueSelectors;
|
|
3327
3339
|
exports.VizPanel = VizPanel;
|
|
3328
3340
|
exports.formatRegistry = formatRegistry;
|