@grafana/scenes 4.3.0 → 4.4.0--canary.667.8550830076.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.
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { rangeUtil } from '@grafana/data';
|
|
3
|
+
import { config } from '@grafana/runtime';
|
|
3
4
|
import { RefreshPicker } from '@grafana/ui';
|
|
4
5
|
import { SceneObjectBase } from '../core/SceneObjectBase.js';
|
|
5
6
|
import { sceneGraph } from '../core/sceneGraph/index.js';
|
|
@@ -27,11 +28,13 @@ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
|
27
28
|
const DEFAULT_INTERVALS = ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"];
|
|
28
29
|
class SceneRefreshPicker extends SceneObjectBase {
|
|
29
30
|
constructor(state) {
|
|
30
|
-
var _a;
|
|
31
|
+
var _a, _b, _c;
|
|
31
32
|
super(__spreadProps(__spreadValues({
|
|
32
33
|
refresh: ""
|
|
33
34
|
}, state), {
|
|
34
|
-
|
|
35
|
+
autoEnabled: (_a = state.autoEnabled) != null ? _a : true,
|
|
36
|
+
autoMinInterval: (_b = state.autoMinInterval) != null ? _b : config.minRefreshInterval,
|
|
37
|
+
intervals: (_c = state.intervals) != null ? _c : DEFAULT_INTERVALS
|
|
35
38
|
}));
|
|
36
39
|
this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["refresh"] });
|
|
37
40
|
this.onRefresh = () => {
|
|
@@ -51,7 +54,22 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
51
54
|
this.setState({ refresh: interval });
|
|
52
55
|
this.setupIntervalTimer();
|
|
53
56
|
};
|
|
57
|
+
this.setupAutoTimeRangeListener = () => {
|
|
58
|
+
return sceneGraph.getTimeRange(this).subscribeToState((newState, prevState) => {
|
|
59
|
+
if (newState.from !== prevState.from || newState.to !== prevState.to) {
|
|
60
|
+
this.setupIntervalTimer();
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
this.calculateAutoRefreshInterval = () => {
|
|
65
|
+
var _a;
|
|
66
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
67
|
+
const resolution = (_a = window == null ? void 0 : window.innerWidth) != null ? _a : 2e3;
|
|
68
|
+
const { intervalMs } = rangeUtil.calculateInterval(timeRange.state.value, resolution, this.state.autoMinInterval);
|
|
69
|
+
return intervalMs;
|
|
70
|
+
};
|
|
54
71
|
this.setupIntervalTimer = () => {
|
|
72
|
+
var _a;
|
|
55
73
|
const timeRange = sceneGraph.getTimeRange(this);
|
|
56
74
|
const { refresh, intervals } = this.state;
|
|
57
75
|
if (this._intervalTimer || refresh === "") {
|
|
@@ -60,10 +78,18 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
60
78
|
if (refresh === "") {
|
|
61
79
|
return;
|
|
62
80
|
}
|
|
63
|
-
if (intervals && !intervals.includes(refresh)) {
|
|
81
|
+
if (refresh !== RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {
|
|
64
82
|
return;
|
|
65
83
|
}
|
|
66
|
-
|
|
84
|
+
let intervalMs;
|
|
85
|
+
if (refresh === RefreshPicker.autoOption.value) {
|
|
86
|
+
intervalMs = this.calculateAutoRefreshInterval();
|
|
87
|
+
this._autoTimeRangeListener = this.setupAutoTimeRangeListener();
|
|
88
|
+
} else {
|
|
89
|
+
intervalMs = rangeUtil.intervalToMs(refresh);
|
|
90
|
+
(_a = this._autoTimeRangeListener) == null ? void 0 : _a.unsubscribe();
|
|
91
|
+
this._autoTimeRangeListener = void 0;
|
|
92
|
+
}
|
|
67
93
|
this._intervalTimer = setInterval(() => {
|
|
68
94
|
timeRange.onRefresh();
|
|
69
95
|
}, intervalMs);
|
|
@@ -71,9 +97,11 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
71
97
|
this.addActivationHandler(() => {
|
|
72
98
|
this.setupIntervalTimer();
|
|
73
99
|
return () => {
|
|
100
|
+
var _a2;
|
|
74
101
|
if (this._intervalTimer) {
|
|
75
102
|
clearInterval(this._intervalTimer);
|
|
76
103
|
}
|
|
104
|
+
(_a2 = this._autoTimeRangeListener) == null ? void 0 : _a2.unsubscribe();
|
|
77
105
|
};
|
|
78
106
|
});
|
|
79
107
|
}
|
|
@@ -93,7 +121,7 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
93
121
|
}
|
|
94
122
|
SceneRefreshPicker.Component = SceneRefreshPickerRenderer;
|
|
95
123
|
function SceneRefreshPickerRenderer({ model }) {
|
|
96
|
-
const { refresh, intervals, isOnCanvas, primary, withText } = model.useState();
|
|
124
|
+
const { refresh, intervals, autoEnabled, isOnCanvas, primary, withText } = model.useState();
|
|
97
125
|
const isRunning = useQueryControllerState(model);
|
|
98
126
|
let text = withText ? "Refresh" : void 0;
|
|
99
127
|
let tooltip;
|
|
@@ -104,6 +132,7 @@ function SceneRefreshPickerRenderer({ model }) {
|
|
|
104
132
|
}
|
|
105
133
|
}
|
|
106
134
|
return /* @__PURE__ */ React.createElement(RefreshPicker, {
|
|
135
|
+
showAutoInterval: autoEnabled,
|
|
107
136
|
value: refresh,
|
|
108
137
|
intervals,
|
|
109
138
|
tooltip,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneRefreshPicker.js","sources":["../../../src/components/SceneRefreshPicker.tsx"],"sourcesContent":["import React from 'react';\n\nimport { rangeUtil } from '@grafana/data';\nimport { RefreshPicker } from '@grafana/ui';\n\nimport { SceneObjectBase } from '../core/SceneObjectBase';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { SceneComponentProps, SceneObject, SceneObjectState, SceneObjectUrlValues } from '../core/types';\nimport { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig';\n\nexport const DEFAULT_INTERVALS = ['5s', '10s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'];\n\nexport interface SceneRefreshPickerState extends SceneObjectState {\n // Refresh interval, e.g. 5s, 1m, 2h\n refresh: string;\n // List of allowed refresh intervals, e.g. ['5s', '1m']\n intervals?: string[];\n isOnCanvas?: boolean;\n primary?: boolean;\n withText?: boolean;\n}\n\nexport class SceneRefreshPicker extends SceneObjectBase<SceneRefreshPickerState> {\n public static Component = SceneRefreshPickerRenderer;\n protected _urlSync = new SceneObjectUrlSyncConfig(this, { keys: ['refresh'] });\n private _intervalTimer: ReturnType<typeof setInterval> | undefined;\n\n public constructor(state: Partial<SceneRefreshPickerState>) {\n super({\n refresh: '',\n ...state,\n intervals: state.intervals ?? DEFAULT_INTERVALS,\n });\n\n this.addActivationHandler(() => {\n this.setupIntervalTimer();\n\n return () => {\n if (this._intervalTimer) {\n clearInterval(this._intervalTimer);\n }\n };\n });\n }\n\n public onRefresh = () => {\n const queryController = sceneGraph.getQueryController(this);\n if (queryController?.state.isRunning) {\n queryController.cancelAll();\n return;\n }\n\n const timeRange = sceneGraph.getTimeRange(this);\n\n if (this._intervalTimer) {\n clearInterval(this._intervalTimer);\n }\n\n timeRange.onRefresh();\n this.setupIntervalTimer();\n };\n\n public onIntervalChanged = (interval: string) => {\n this.setState({ refresh: interval });\n this.setupIntervalTimer();\n };\n\n public getUrlState() {\n return {\n refresh: this.state.refresh,\n };\n }\n\n public updateFromUrl(values: SceneObjectUrlValues) {\n const refresh = values.refresh;\n\n if (refresh && typeof refresh === 'string') {\n this.setState({\n refresh,\n });\n }\n }\n\n private setupIntervalTimer = () => {\n const timeRange = sceneGraph.getTimeRange(this);\n const { refresh, intervals } = this.state;\n\n if (this._intervalTimer || refresh === '') {\n clearInterval(this._intervalTimer);\n }\n\n if (refresh === '') {\n return;\n }\n\n // If the provided interval is not allowed\n if (intervals && !intervals.includes(refresh)) {\n return;\n }\n\n const intervalMs = rangeUtil.intervalToMs(refresh);\n\n this._intervalTimer = setInterval(() => {\n timeRange.onRefresh();\n }, intervalMs);\n };\n}\n\nexport function SceneRefreshPickerRenderer({ model }: SceneComponentProps<SceneRefreshPicker>) {\n const { refresh, intervals, isOnCanvas, primary, withText } = model.useState();\n const isRunning = useQueryControllerState(model);\n\n let text = withText ? 'Refresh' : undefined;\n let tooltip: string | undefined;\n\n if (isRunning) {\n tooltip = 'Cancel all queries';\n\n if (withText) {\n text = 'Cancel';\n }\n }\n\n return (\n <RefreshPicker\n value={refresh}\n intervals={intervals}\n tooltip={tooltip}\n text={text}\n onRefresh={model.onRefresh}\n primary={primary}\n onIntervalChanged={model.onIntervalChanged}\n isLoading={isRunning}\n isOnCanvas={isOnCanvas ?? true}\n />\n );\n}\n\nfunction useQueryControllerState(model: SceneObject): boolean {\n const queryController = sceneGraph.getQueryController(model);\n if (!queryController) {\n return false;\n }\n\n return queryController.useState().isRunning;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SceneRefreshPicker.js","sources":["../../../src/components/SceneRefreshPicker.tsx"],"sourcesContent":["import React from 'react';\nimport { Unsubscribable } from 'rxjs';\nimport { rangeUtil } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { RefreshPicker } from '@grafana/ui';\n\nimport { SceneObjectBase } from '../core/SceneObjectBase';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { SceneComponentProps, SceneObject, SceneObjectState, SceneObjectUrlValues } from '../core/types';\nimport { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig';\n\nexport const DEFAULT_INTERVALS = ['5s', '10s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'];\n\nexport interface SceneRefreshPickerState extends SceneObjectState {\n // Refresh interval, e.g. 5s, 1m, 2h\n refresh: string;\n autoEnabled?: boolean;\n autoMinInterval?: string;\n // List of allowed refresh intervals, e.g. ['5s', '1m']\n intervals?: string[];\n isOnCanvas?: boolean;\n primary?: boolean;\n withText?: boolean;\n}\n\nexport class SceneRefreshPicker extends SceneObjectBase<SceneRefreshPickerState> {\n public static Component = SceneRefreshPickerRenderer;\n protected _urlSync = new SceneObjectUrlSyncConfig(this, { keys: ['refresh'] });\n private _intervalTimer: ReturnType<typeof setInterval> | undefined;\n private _autoTimeRangeListener: Unsubscribable | undefined;\n\n public constructor(state: Partial<SceneRefreshPickerState>) {\n super({\n refresh: '',\n ...state,\n autoEnabled: state.autoEnabled ?? true,\n autoMinInterval: state.autoMinInterval ?? config.minRefreshInterval,\n intervals: state.intervals ?? DEFAULT_INTERVALS,\n });\n\n this.addActivationHandler(() => {\n this.setupIntervalTimer();\n\n return () => {\n if (this._intervalTimer) {\n clearInterval(this._intervalTimer);\n }\n\n this._autoTimeRangeListener?.unsubscribe();\n };\n });\n }\n\n public onRefresh = () => {\n const queryController = sceneGraph.getQueryController(this);\n if (queryController?.state.isRunning) {\n queryController.cancelAll();\n return;\n }\n\n const timeRange = sceneGraph.getTimeRange(this);\n\n if (this._intervalTimer) {\n clearInterval(this._intervalTimer);\n }\n\n timeRange.onRefresh();\n this.setupIntervalTimer();\n };\n\n public onIntervalChanged = (interval: string) => {\n this.setState({ refresh: interval });\n this.setupIntervalTimer();\n };\n\n public getUrlState() {\n return {\n refresh: this.state.refresh,\n };\n }\n\n public updateFromUrl(values: SceneObjectUrlValues) {\n const refresh = values.refresh;\n\n if (refresh && typeof refresh === 'string') {\n this.setState({\n refresh,\n });\n }\n }\n\n private setupAutoTimeRangeListener = () => {\n // If the time range has changed, we need to recalculate the auto interval but prevent unnecessary processing\n return sceneGraph.getTimeRange(this).subscribeToState((newState, prevState) => {\n if (newState.from !== prevState.from || newState.to !== prevState.to) {\n this.setupIntervalTimer();\n }\n });\n };\n\n private calculateAutoRefreshInterval = () => {\n const timeRange = sceneGraph.getTimeRange(this);\n const resolution = window?.innerWidth ?? 2000;\n const { intervalMs } = rangeUtil.calculateInterval(timeRange.state.value, resolution, this.state.autoMinInterval);\n return intervalMs;\n };\n\n private setupIntervalTimer = () => {\n const timeRange = sceneGraph.getTimeRange(this);\n const { refresh, intervals } = this.state;\n\n if (this._intervalTimer || refresh === '') {\n clearInterval(this._intervalTimer);\n }\n\n if (refresh === '') {\n return;\n }\n\n // If the provided interval is not allowed\n if (refresh !== RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {\n return;\n }\n\n let intervalMs: number;\n\n if (refresh === RefreshPicker.autoOption.value) {\n intervalMs = this.calculateAutoRefreshInterval();\n this._autoTimeRangeListener = this.setupAutoTimeRangeListener();\n } else {\n intervalMs = rangeUtil.intervalToMs(refresh);\n this._autoTimeRangeListener?.unsubscribe();\n this._autoTimeRangeListener = undefined;\n }\n\n this._intervalTimer = setInterval(() => {\n timeRange.onRefresh();\n }, intervalMs);\n };\n}\n\nexport function SceneRefreshPickerRenderer({ model }: SceneComponentProps<SceneRefreshPicker>) {\n const { refresh, intervals, autoEnabled, isOnCanvas, primary, withText } = model.useState();\n const isRunning = useQueryControllerState(model);\n\n let text = withText ? 'Refresh' : undefined;\n let tooltip: string | undefined;\n\n if (isRunning) {\n tooltip = 'Cancel all queries';\n\n if (withText) {\n text = 'Cancel';\n }\n }\n\n return (\n <RefreshPicker\n showAutoInterval={autoEnabled}\n value={refresh}\n intervals={intervals}\n tooltip={tooltip}\n text={text}\n onRefresh={model.onRefresh}\n primary={primary}\n onIntervalChanged={model.onIntervalChanged}\n isLoading={isRunning}\n isOnCanvas={isOnCanvas ?? true}\n />\n );\n}\n\nfunction useQueryControllerState(model: SceneObject): boolean {\n const queryController = sceneGraph.getQueryController(model);\n if (!queryController) {\n return false;\n }\n\n return queryController.useState().isRunning;\n}\n"],"names":["_a"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1693,6 +1693,8 @@ declare function SceneTimePickerRenderer({ model }: SceneComponentProps<SceneTim
|
|
|
1693
1693
|
|
|
1694
1694
|
interface SceneRefreshPickerState extends SceneObjectState {
|
|
1695
1695
|
refresh: string;
|
|
1696
|
+
autoEnabled?: boolean;
|
|
1697
|
+
autoMinInterval?: string;
|
|
1696
1698
|
intervals?: string[];
|
|
1697
1699
|
isOnCanvas?: boolean;
|
|
1698
1700
|
primary?: boolean;
|
|
@@ -1702,6 +1704,7 @@ declare class SceneRefreshPicker extends SceneObjectBase<SceneRefreshPickerState
|
|
|
1702
1704
|
static Component: typeof SceneRefreshPickerRenderer;
|
|
1703
1705
|
protected _urlSync: SceneObjectUrlSyncConfig;
|
|
1704
1706
|
private _intervalTimer;
|
|
1707
|
+
private _autoTimeRangeListener;
|
|
1705
1708
|
constructor(state: Partial<SceneRefreshPickerState>);
|
|
1706
1709
|
onRefresh: () => void;
|
|
1707
1710
|
onIntervalChanged: (interval: string) => void;
|
|
@@ -1709,6 +1712,8 @@ declare class SceneRefreshPicker extends SceneObjectBase<SceneRefreshPickerState
|
|
|
1709
1712
|
refresh: string;
|
|
1710
1713
|
};
|
|
1711
1714
|
updateFromUrl(values: SceneObjectUrlValues): void;
|
|
1715
|
+
private setupAutoTimeRangeListener;
|
|
1716
|
+
private calculateAutoRefreshInterval;
|
|
1712
1717
|
private setupIntervalTimer;
|
|
1713
1718
|
}
|
|
1714
1719
|
declare function SceneRefreshPickerRenderer({ model }: SceneComponentProps<SceneRefreshPicker>): JSX.Element;
|
package/dist/index.js
CHANGED
|
@@ -8475,11 +8475,13 @@ var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
|
|
|
8475
8475
|
const DEFAULT_INTERVALS = ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"];
|
|
8476
8476
|
class SceneRefreshPicker extends SceneObjectBase {
|
|
8477
8477
|
constructor(state) {
|
|
8478
|
-
var _a;
|
|
8478
|
+
var _a, _b, _c;
|
|
8479
8479
|
super(__spreadProps$2(__spreadValues$5({
|
|
8480
8480
|
refresh: ""
|
|
8481
8481
|
}, state), {
|
|
8482
|
-
|
|
8482
|
+
autoEnabled: (_a = state.autoEnabled) != null ? _a : true,
|
|
8483
|
+
autoMinInterval: (_b = state.autoMinInterval) != null ? _b : runtime.config.minRefreshInterval,
|
|
8484
|
+
intervals: (_c = state.intervals) != null ? _c : DEFAULT_INTERVALS
|
|
8483
8485
|
}));
|
|
8484
8486
|
this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["refresh"] });
|
|
8485
8487
|
this.onRefresh = () => {
|
|
@@ -8499,7 +8501,22 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
8499
8501
|
this.setState({ refresh: interval });
|
|
8500
8502
|
this.setupIntervalTimer();
|
|
8501
8503
|
};
|
|
8504
|
+
this.setupAutoTimeRangeListener = () => {
|
|
8505
|
+
return sceneGraph.getTimeRange(this).subscribeToState((newState, prevState) => {
|
|
8506
|
+
if (newState.from !== prevState.from || newState.to !== prevState.to) {
|
|
8507
|
+
this.setupIntervalTimer();
|
|
8508
|
+
}
|
|
8509
|
+
});
|
|
8510
|
+
};
|
|
8511
|
+
this.calculateAutoRefreshInterval = () => {
|
|
8512
|
+
var _a;
|
|
8513
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
8514
|
+
const resolution = (_a = window == null ? void 0 : window.innerWidth) != null ? _a : 2e3;
|
|
8515
|
+
const { intervalMs } = data.rangeUtil.calculateInterval(timeRange.state.value, resolution, this.state.autoMinInterval);
|
|
8516
|
+
return intervalMs;
|
|
8517
|
+
};
|
|
8502
8518
|
this.setupIntervalTimer = () => {
|
|
8519
|
+
var _a;
|
|
8503
8520
|
const timeRange = sceneGraph.getTimeRange(this);
|
|
8504
8521
|
const { refresh, intervals } = this.state;
|
|
8505
8522
|
if (this._intervalTimer || refresh === "") {
|
|
@@ -8508,10 +8525,18 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
8508
8525
|
if (refresh === "") {
|
|
8509
8526
|
return;
|
|
8510
8527
|
}
|
|
8511
|
-
if (intervals && !intervals.includes(refresh)) {
|
|
8528
|
+
if (refresh !== ui.RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {
|
|
8512
8529
|
return;
|
|
8513
8530
|
}
|
|
8514
|
-
|
|
8531
|
+
let intervalMs;
|
|
8532
|
+
if (refresh === ui.RefreshPicker.autoOption.value) {
|
|
8533
|
+
intervalMs = this.calculateAutoRefreshInterval();
|
|
8534
|
+
this._autoTimeRangeListener = this.setupAutoTimeRangeListener();
|
|
8535
|
+
} else {
|
|
8536
|
+
intervalMs = data.rangeUtil.intervalToMs(refresh);
|
|
8537
|
+
(_a = this._autoTimeRangeListener) == null ? void 0 : _a.unsubscribe();
|
|
8538
|
+
this._autoTimeRangeListener = void 0;
|
|
8539
|
+
}
|
|
8515
8540
|
this._intervalTimer = setInterval(() => {
|
|
8516
8541
|
timeRange.onRefresh();
|
|
8517
8542
|
}, intervalMs);
|
|
@@ -8519,9 +8544,11 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
8519
8544
|
this.addActivationHandler(() => {
|
|
8520
8545
|
this.setupIntervalTimer();
|
|
8521
8546
|
return () => {
|
|
8547
|
+
var _a2;
|
|
8522
8548
|
if (this._intervalTimer) {
|
|
8523
8549
|
clearInterval(this._intervalTimer);
|
|
8524
8550
|
}
|
|
8551
|
+
(_a2 = this._autoTimeRangeListener) == null ? void 0 : _a2.unsubscribe();
|
|
8525
8552
|
};
|
|
8526
8553
|
});
|
|
8527
8554
|
}
|
|
@@ -8541,7 +8568,7 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
8541
8568
|
}
|
|
8542
8569
|
SceneRefreshPicker.Component = SceneRefreshPickerRenderer;
|
|
8543
8570
|
function SceneRefreshPickerRenderer({ model }) {
|
|
8544
|
-
const { refresh, intervals, isOnCanvas, primary, withText } = model.useState();
|
|
8571
|
+
const { refresh, intervals, autoEnabled, isOnCanvas, primary, withText } = model.useState();
|
|
8545
8572
|
const isRunning = useQueryControllerState(model);
|
|
8546
8573
|
let text = withText ? "Refresh" : void 0;
|
|
8547
8574
|
let tooltip;
|
|
@@ -8552,6 +8579,7 @@ function SceneRefreshPickerRenderer({ model }) {
|
|
|
8552
8579
|
}
|
|
8553
8580
|
}
|
|
8554
8581
|
return /* @__PURE__ */ React__default["default"].createElement(ui.RefreshPicker, {
|
|
8582
|
+
showAutoInterval: autoEnabled,
|
|
8555
8583
|
value: refresh,
|
|
8556
8584
|
intervals,
|
|
8557
8585
|
tooltip,
|